¿Qué es la regresión logística?

Realmente me gusta responder a las preguntas de “términos laicos”. Aunque toma más tiempo responder, creo que vale la pena, ya que a veces entiendo los conceptos más claramente cuando lo estoy explicando en el nivel secundario.

Intentaré hacer que este artículo sea lo menos técnico posible al no utilizar ecuaciones complejas, lo cual es un desafío para un adicto a las matemáticas como yo. Pero tenga la seguridad de que esto no será de una sola línea.

Es posible que haya escuchado acerca de la regresión logística de un blog, artículo de periódico, etc. Solo entenderá lo que es cuando comprenda lo que puede resolver.

Problema:
Examinemos un problema de predicción simple y muy hipotético.

Tiene datos de años anteriores sobre los estudiantes de su clase: digan puntajes de matemáticas, puntajes de ciencias, puntajes de historia y puntajes de educación física de sus exámenes finales de la junta. Además, cuando regresaron para volver a unirse a la escuela 5 años después, recopiló datos sobre si tuvieron éxito o no en la vida. Tiene aproximadamente 20 años de datos.

Ahora desea ver cómo serán los estudiantes que se gradúen en este año en 5 años a partir de ahora (lo mantendremos simple considerando solo si tienen éxito o no). Sé que es discutible si el puntaje de la escuela secundaria puede predecir si una persona tiene éxito o no, pero por ahora supongamos que en nuestro mundo perfecto estas cosas están relacionadas.

Ahora agregaremos un personaje más en nuestro ejemplo. Digamos que sabes que Sarah obtuvo 94 en Historia, 82 en Matemáticas … y ahora quieres predecir qué tan exitosa será en 5 años.

Este tipo de problema se denomina “problema de clasificación” cuando clasifica un objeto como perteneciente a un grupo (exitoso) o no. La regresión logística es particularmente buena para resolverlos.


Nota al margen: sus datos podrían verse así:


Sarah, Ben y Rock (de la captura de pantalla de la hoja de cálculo) se quedarán con nosotros hasta el final de nuestro problema.

Bien, sabemos lo que resuelve la regresión logística. Ahora explicaré cómo se resuelve:

El como:

La regresión logística hace predicciones usando la probabilidad (hay un debate sustancial sobre la comprensión exacta de lo que significa la probabilidad, para nuestra comprensión, será suficiente si sabe esto):

  • 0 = estás absolutamente seguro de que la persona no va a tener éxito en su vida
  • 1 = está absolutamente seguro de que la persona tendrá éxito dentro de 5 años
  • Cualquier valor superior a 0.5 = está bastante seguro de que esa persona tendrá éxito. Digamos que predice 0.8, entonces tiene un 80% de confianza en que la persona tendrá éxito. Del mismo modo, cualquier valor por debajo de 0.5 puede decir con un grado correspondiente de confianza de que la persona no tendrá éxito.

¿Cómo se hace esta predicción? Desarrollando un modelo usando datos de entrenamiento.

Tienes tus puntuaciones (variable independiente), también sabes si una persona tiene éxito o no (variable dependiente). Luego, de alguna manera, [1] elabora predicciones y observa qué tan bien se alinean sus predicciones con sus datos grabados.

Digamos que pronosticó 0.9 en Ben, y de la misma manera que está bastante cerca en todas sus predicciones, entonces tiene un modelo muy bueno y muy desarrollado. Por el contrario, también podría predecir 0.2 en Ben, entonces su modelo está lejos de predecir si Ben tuvo éxito o no. Analizamos varios modelos [2] (por supuesto, no al azar) y descubrimos el modelo que se ajusta muy estrechamente a nuestros datos grabados. El paso por el cual llegamos a un modelo se llama “selección de modelo”.

Luego conectas los puntajes de Sarah (y también todos los de tu clase actual si lo deseas) en este modelo y escupe un número entre 0 y 1. Al observar esto, si es mayor que 0.5, dices que predices que la persona tiene éxito . Si es inferior a 0,5, dirá que podrían no tener éxito.

Nota para los lectores: si cree que las cosas pueden simplificarse aún más, deje un comentario. Si cree que puede explicarlo en términos aún más simples, no dude en escribir otra respuesta. Me encantaría ver respuestas diversas.

Nota avanzada (Gobbledy gook, puede ignorarlo con seguridad):

  • La regresión logística también puede resolver problemas de clasificación múltiple como si pertenece a la categoría A, B, C o D.
  • [1] Podrías consultar la respuesta a continuación escrita por Alaka Halder, ya que hace un buen trabajo al explicar las matemáticas detrás de la regresión logística. La respuesta de Alaka Halder
  • [2] Intentamos hacer algo llamado minimizar el error al cuadrado. Echamos un vistazo a la suma de errores para cada predicción en cada modelo e intentamos ver si podemos llegar incluso más abajo.

Hola:

Escribí un artículo en algún momento, espero que esto sea útil.

Introducción a la regresión logística

Visión general-

La regresión logística se usa generalmente donde la variable dependiente es binaria o dicotómica. Eso significa que la variable dependiente puede tomar solo dos valores posibles, como “Sí o No”, “Predeterminado o No predeterminado”, “Vivo o muerto”, “Respondedor o No respondedor”, “Sí o No”, etc. Factores o variables independientes Pueden ser variables categóricas o numéricas.

Tenga en cuenta que aunque la regresión logística (logit) se usa con frecuencia para variables binarias (2 clases), se puede usar para variables dependientes categóricas con más de 2 clases. En este caso se llama Regresión logística multinomial.

Aquí nos centraremos en la regresión logística con variables dependientes binarias, ya que se utiliza con mayor frecuencia.

Aplicaciones de la regresión logística

La regresión logística se utiliza para predecir la salida que es binaria, como se indicó anteriormente. Por ejemplo, si una compañía de tarjetas de crédito va a construir un modelo para decidir si emitirá una tarjeta de crédito a un cliente o no, modelará si el cliente va a “Predeterminado” o “No predeterminado” en esta tarjeta de crédito . Esto se llama “Modelado de propensión predeterminado” en la jerga bancaria.

Del mismo modo, una empresa de comercio electrónico que envía costosos correos publicitarios / ofertas promocionales a los clientes, deseará saber si es probable que un cliente en particular responda a la oferta o no. En otras palabras, si un cliente será “Respondedor” o “No respondedor”. Esto se llama “modelado de propensión a responder”

Utilizando información generada a partir del resultado de la regresión logística, las compañías pueden optimizar sus estrategias comerciales para lograr sus objetivos comerciales, como minimizar los gastos o pérdidas, maximizar el retorno de la inversión (ROI) en campañas de marketing, etc.

Algoritmo subyacente y suposiciones

El algoritmo subyacente de Estimación de máxima verosimilitud (MLE) determina el coeficiente de regresión para el modelo que predice con precisión la probabilidad de la variable dependiente binaria. El algoritmo se detiene cuando se cumple el criterio de convergencia o se alcanza el número máximo de iteraciones. Dado que la probabilidad de cualquier evento se encuentra entre 0 y 1 (o 0% a 100%), cuando graficamos la probabilidad de la variable dependiente por factores independientes, demostrará una curva de forma ‘S’.

Tomemos un ejemplo: aquí estamos prediciendo la probabilidad de que un candidato determinado sea admitido en una escuela de su elección por el puntaje que los candidatos reciben en la prueba de admisión. Dado que la variable dependiente es binaria / dicotómica: “Admisión” o “No Admisión”, podemos usar un modelo de regresión logística para predecir la probabilidad de obtener la “Admisión”. Primero grafiquemos los datos y analicemos la forma para confirmar que esto está siguiendo una forma de ‘S’.

Dado que la relación entre el puntaje y la probabilidad de selección no es lineal, sino que muestra una forma de ‘S’, no podemos usar un modelo lineal para predecir la probabilidad de selección mediante un puntaje. Necesitamos hacer la transformación Logit de la variable dependiente para hacer que la correlación entre el predictor y la variable dependiente sea lineal.

Logit Transformation se define de la siguiente manera:

Logit = Log (p / 1-p) = log (probabilidad de que ocurra un evento / probabilidad de que no ocurra) = log (Probabilidades)

Ahora podemos modelar usando la regresión para predecir la probabilidad de un cierto resultado de la variable dependiente. La ecuación de regresión que el modelo intentará sacar es:

Log (p / 1-p) = b0 + b1 * x1 + b2 * x2 + e

Donde b0 es la intersección Y, e es el error en el modelo, b1 es el coeficiente (pendiente) para el factor independiente x1, y b2 es el coeficiente (pendiente) para el factor independiente x2 y así sucesivamente …

En el ejemplo anterior, la ecuación de regresión se verá así:

Log (p / 1-p) = b0 + b1 * Puntuación + e

El modelo generará los coeficientes b0 y b1 que nos dan el mejor modelo en términos de métricas clave que discutiremos más adelante.

Herramientas para construir regresión logística

R- La función glm () con la familia = “Logit” se usa con frecuencia

SAS-PROC Logistic es un procedimiento dedicado para ejecutar regresión logística con varias diferencias

Métrica clave e interpretación

Métricas clave que permiten la comparación entre diferentes modelos y proporcionan indicadores del rendimiento del modelo.

Curva de Lorenz e índice de Gini: captura el poder discriminatorio del modelo al separar la selección “buena” de la “mala” versus la selección aleatoria. El índice de Gini es la proporción de áreas marcadas debajo de [A / (A + B)]. Esto mide cuánto mejor se desempeña el modelo en comparación con la selección aleatoria. El Gini puede variar entre 0% y 100%. A mayor índice de Gini, mejor modelo (mayor separación entre lo bueno y lo malo). El valor de Gini del 0% indicaría un modelo que no es mejor que el azar o, en otras palabras, no tiene poder de predicción. Por otro lado, un valor de Gini del 100% indicará un modelo perfecto: predecirá con precisión el 100% bueno y malo.

Estadísticas de Kolmogorov-Smirnov (KS): al igual que Gini, KS también captura el poder discriminatorio del modelo al separar “Bueno” de “Malo”. Es la separación más alta entre la tasa acumulativa buena y la tasa acumulativa mala. A mayor KS, mejor es el modelo (mayor separación entre lo bueno y lo malo). Los valores de KS pueden variar entre 0 y 100%, los valores de KS superiores al 20% se consideran aceptables para un modelo.

Curva característica de funcionamiento del receptor (ROC) / Área bajo curva (AUC): mide el rendimiento del modelo para identificar “verdadero positivo” en lugar de “falso positivo”. Traza TPR vs FPR. El área bajo la tabla ROC es una indicación de esta métrica. El AUC puede variar del 50% al 100%. Cuanto mayor sea el valor de AUC, mejor es el poder de predicción del modelo.

Otras métricas

Levantamiento, matriz de confusión (real frente a predicción), índice de estabilidad característica,% de concordancia, etc.

Aquí está el código completo y la salida de un modelo de regresión logística basado en los famosos datos de la tarjeta de crédito alemana. Riesgo de crédito alemán | Kaggle

## Paso 1 – setwd

setwd (“C: / Users / rpandey / Desktop / Classes”)

## Paso 2 – Cargar datos

logdata <- read.csv ("Default_On_Payment.csv")

## Paso 3 – Explorar datos: ¿dónde están los valores faltantes? ¿Por qué algunos son NA y otros no tienen valores?

dim (logdata)
## [1] 40121 22
nombres (logdata)
## [1] “Customer_ID” “Status_Checking_Acc”
## [3] “Duration_in_Months” “Credit_History”
## [5] “Fin_Credit_Taken” “Credit_Amount”
## [7] “Savings_Acc” “Years_At_Present_Employment”
## [9] “Inst_Rt_Income” “Marital_Status_Gender”
## [11] “Otros_Deudadores_Guarantes” “Dirección_Actual”
## [13] “Propiedad” “Edad”
## [15] “Otros_Inst_Planes” “Vivienda”
## [17] “Num_CC” “Trabajo”
## [19] “Dependientes” “Teléfono”
## [21] “Foreign_Worker” “Default_On_Payment”
cabeza (logdata)
## Customer_ID Status_Checking_Acc Duration_in_Months Credit_History
## 1 100015 A14 27 A32
## 2 100031 A11 12 A34
## 3 100046 A12 13 A34
## 4 100103 A14 24 A32
## 5 100104 A11 24 A32
## 6 100128 A11 10 A32
## Purposre_Credit_Taken Credit_Amount Savings_Acc
## 1 A40 2570 A61
## 2 A43 385 A61
## 3 A43 882 A61
## 4 A40 1393 A61
## 5 A40 3123 A61
## 6 A43 2315 A61
## Years_At_Present_Employment Inst_Rt_Income Marital_Status_Gender
## 1 A73 3 A92
## 2 A74 4 A92
## 3 A72 4 A93
## 4 A73 2 A93
## 5 A72 4 A92
## 6 A75 3 A93
## Other_Debtors_Guarantors Current_Address_Yrs Antigüedad de la propiedad
## 1 A101 3 A121 21
## 2 A101 3 A121 58
## 3 A103 4 A121 23
## 4 A103 2 A121 31
## 5 A101 1 A122 27
## 6 A101 4 A121 52
## Other_Inst_Plans Housing Num_CC Job Dependientes Teléfono Foreign_Worker
## 1 A143 A151 1 A173 1 A191 A201
## 2 A143 A152 4 A172 1 A192 A201
## 3 A143 A152 2 A173 1 A191 A201
## 4 A143 A152 1 A173 1 A192 A201
## 5 A143 A152 1 A173 1 A191 A201
## 6 A143 A152 1 A172 1 A191 A201
## Default_On_Payment
## 1 1
## 2 0
## 3 0
## 4 0
## 5 1
## 6 0
cola (logdata)
## Customer_ID Status_Checking_Acc Duration_in_Months Credit_History
## 40116 986907 A11 24 A32
## 40117 986936 A12 24 A34
## 40118 986939 A12 60 A32
## 40119 986944 A12 36 A30
## 40120 986974 A11 20 A34
## 40121 987000 A14 36 A34
## Purposre_Credit_Taken Credit_Amount Savings_Acc
## 40116 A40 1285 A65
## 40117 A49 1935 A61
## 40118 A40 14027 A61
## 40119 A43 3804 A61
## 40120 A40 2235 A61
## 40121
## Years_At_Present_Employment Inst_Rt_Income Marital_Status_Gender
## 40116 A74 4 A92
## 40117 A75 4 A91
## 40118 A74 4 A93
## 40119 A73 4 A92
## 40120 A73 4 A94
## 40121 NA
## Other_Debtors_Guarantors Current_Address_Yrs Antigüedad de la propiedad
## 40116 A101 4 A124 32
## 40117 A101 4 A121 31
## 40118 A101 2 A124 27
## 40119 A101 1 A123 42
## 40120 A103 2 A122 33
## 40121 NA NA
## Other_Inst_Plans Housing Num_CC Job Dependientes Teléfono
## 40116 A143 A151 1 A173 1 A191
## 40117 A143 A152 2 A173 1 A192
## 40118 A143 A152 1 A174 1 A192
## 40119 A143 A152 1 A173 1 A192
## 40120 A141 A151 2 A173 1 A191
## 40121 NA NA
## Foreign_Worker Default_On_Payment
## 40116 A201 1
## 40117 A201 1
## 40118 A201 1
## 40119 A201 1
## 40120 A202 1
## 40121 NA
str (logdata)
## ‘data.frame’: 40121 obs. de 22 variables:
## $ Customer_ID: int 100015 100031 100046 100103 100104 100128 100148 100164 100182 100230…
## $ Status_Checking_Acc: Factor con 5 niveles “2”, “A11”, “A12”, ..: 5 2 3 5 2 2 2 5 3 5…
## $ Duration_in_Months: Factor con 34 niveles “10”, “11”, “12”, ..: 14 3 4 12 12 1 2 12 8 3 …
## $ Credit_History: Factor con 6 niveles “46”, “A30”, “A31”, ..: 4 6 6 4 4 4 6 6 4 4…
## $ Purposre_Credit_Taken: Factor con 12 niveles “”, “A143”, “A40”, ..: 3 7 7 3 3 7 3 7 7 3…
## $ Credit_Amount: Factor con 923 niveles “”, “1007”, “10127”, ..: 419 602 877 153 511 373 615 353 875 150 …
## $ Savings_Acc: Factor con 7 niveles “”, “2”, “A61”, “A62”, ..: 3 3 3 3 3 3 3 4 3 5…
## $ Years_At_Present_Employment: Factor con 7 niveles “”, “A172”, “A71”, ..: 5 6 4 5 4 7 5 7 5 5…
## $ Inst_Rt_Income: int 3 4 4 2 4 3 1 4 4 2…
## $ Marital_Status_Gender: Factor con 6 niveles “”, “A192”, “A91”, ..: 4 4 5 5 4 5 5 5 6 4…
## $ Other_Debtors_Guarantors: Factor con 5 niveles “”, “A101”, “A102”, ..: 2 2 4 4 2 2 2 2 4 2…
## $ Current_Address_Yrs: int 3 3 4 2 1 4 2 4 2 2…
## $ Propiedad: Factor con 5 niveles “”, “A121”, “A122”, ..: 2 2 2 2 3 2 2 3 2 3…
## $ Edad: int 21 58 23 31 27 52 40 52 25 26…
## $ Other_Inst_Plans: Factor con 4 niveles “”, “A141”, “A142”, ..: 4 4 4 4 4 4 4 2 4 4…
## $ Carcasa: Factor con 4 niveles “”, “A151”, “A152”, ..: 2 3 3 3 3 3 3 3 3 3…
## $ Num_CC: int 1 4 2 1 1 1 2 2 1 1…
## $ Job: Factor con 5 niveles “”, “A171”, “A172”, ..: 4 3 4 4 4 3 3 4 3 4…
## $ Dependientes: int 1 1 1 1 1 1 2 1 1 1…
## $ Teléfono: Factor con 3 niveles “”, “A191”, “A192”: 2 3 2 3 2 2 2 2 2 2…
## $ Foreign_Worker: Factor con 3 niveles “”, “A201”, “A202”: 2 2 2 2 2 2 2 2 2 2…
## $ Default_On_Payment: int 1 0 0 0 1 0 0 0 0 1…
resumen (como.factor (logdata $ Default_On_Payment))
## 0 1 NA’s
## 28118 12001 2
summary_logdata = resumen (logdata)
write.csv (summary_logdata, “summary_logdata.csv”, row.names = F)

## Paso 4: elimine las filas con valores faltantes y el customer_id eliminado

logdata <- logdata [complete.cases (logdata),]

logdata <- logdata [, c (-1)]

# Paso 5- Análisis bivariado

biblioteca (gmodels)

CrossTable (logdata $ Status_Checking_Acc, logdata $ Default_On_Payment)
##
##
## Contenido de la celda
## | ————————- |
## | N |
## | Contribución de Chi-cuadrado |
## | N / fila total |
## | N / Col Total |
## | N / Tabla total |
## | ————————- |
##
##
## Total de observaciones en la tabla: 40119
##
##
## | logdata $ Default_On_Payment
## logdata $ Status_Checking_Acc | 0 | 1 | Fila total |
## —————————- | ———– | ———– | ———– |
## A11 | 5573 | 5417 | 10990 |
## | 588,743 | 1379,407 | El |
## | 0,507 | 0,493 | 0,274 |
## | 0,198 | 0,451 | El |
## | 0,139 | 0,135 | El |
## —————————- | ———– | ———– | ———– |
## A12 | 6624 | 4175 | 10799 |
## | 117,900 | 276,237 | El |
## | 0,613 | 0,387 | 0,269 |
## | 0,236 | 0,348 | El |
## | 0,165 | 0,104 | El |
## —————————- | ———– | ———– | ———– |
## A13 | 1967 | 564 2531 |
## | 21,023 | 49,255 | El |
## | 0,777 | 0,223 | 0,063 |
## | 0,070 | 0,047 | El |
## | 0,049 | 0,014 | El |
## —————————- | ———– | ———– | ———– |
## A14 | 13954 | 1845 15799 |
## | 749,606 | 1756.306 | El |
## | 0,883 | 0,117 | 0,394 |
## | 0,496 | 0,154 | El |
## | 0,348 | 0,046 | El |
## —————————- | ———– | ———– | ———– |
## Columna Total | 28118 | 12001 | 40119 |
## | 0,701 | 0,299 | El |
## —————————- | ———– | ———– | ———– |
##
##
Tabla cruzada (logdata $ Status_Checking_Acc, logdata $ Default_On_Payment, esperado = FALSE, prop.r = FALSE, prop.c = FALSE, prop.t = FALSE, prop.chisq = FALSE, chisq = FALSE)
##
##
## Contenido de la celda
## | ————————- |
## | N |
## | ————————- |
##
##
## Total de observaciones en la tabla: 40119
##
##
## | logdata $ Default_On_Payment
## logdata $ Status_Checking_Acc | 0 | 1 | Fila total |
## —————————- | ———– | ———– | ———– |
## A11 | 5573 | 5417 | 10990 |
## —————————- | ———– | ———– | ———– |
## A12 | 6624 | 4175 | 10799 |
## —————————- | ———– | ———– | ———– |
## A13 | 1967 | 564 2531 |
## —————————- | ———– | ———– | ———– |
## A14 | 13954 | 1845 15799 |
## —————————- | ———– | ———– | ———– |
## Columna Total | 28118 | 12001 | 40119 |
## —————————- | ———– | ———– | ———– |
##
##
Tabla cruzada (logdata $ Status_Checking_Acc, logdata $ Default_On_Payment, esperado = FALSE, prop.c = FALSE, prop.t = FALSE, prop.chisq = FALSE, chisq = FALSE)
##
##
## Contenido de la celda
## | ————————- |
## | N |
## | N / fila total |
## | ————————- |
##
##
## Total de observaciones en la tabla: 40119
##
##
## | logdata $ Default_On_Payment
## logdata $ Status_Checking_Acc | 0 | 1 | Fila total |
## —————————- | ———– | ———– | ———– |
## A11 | 5573 | 5417 | 10990 |
## | 0,507 | 0,493 | 0,274 |
## —————————- | ———– | ———– | ———– |
## A12 | 6624 | 4175 | 10799 |
## | 0,613 | 0,387 | 0,269 |
## —————————- | ———– | ———– | ———– |
## A13 | 1967 | 564 2531 |
## | 0,777 | 0,223 | 0,063 |
## —————————- | ———– | ———– | ———– |
## A14 | 13954 | 1845 15799 |
## | 0,883 | 0,111 | 0,394 |
## —————————- | ———– | ———– | ———– |
## Columna Total | 28118 | 12001 | 40119 |
## —————————- | ———– | ———– | ———– |
##
##
# Paso 6- WOE y IV

biblioteca (información)
biblioteca (riv)
## Carga del paquete requerido: MASA
## Cargando el paquete requerido: rrcov
## Carga del paquete requerido: robusta base
## Estimadores robustos escalables con alto punto de ruptura (versión 1.4-3)
## Cargando el paquete requerido: quantreg
## Cargando el paquete requerido: SparseM
##
## Adjuntando paquete: ‘SparseM’
## El siguiente objeto está enmascarado de ‘paquete: base’:
##
## backsolve
biblioteca (devtools)
biblioteca (ay)
biblioteca (gridExtra)

# Paso 6a Genere IV de cada factor independiente: ¿qué variables queremos seleccionar para el modelo de construcción?

stat <- create_infotables (data = logdata, y = "Default_On_Payment")
grid.table (stat $ Resumen, filas = NULL)

write.csv (stat $ Resumen, “IV_summary.csv”, row.names = F)

# Paso 6b: subconjunte los datos para seleccionar solo variables significativas

newdata <- subset (logdata, select = c (Status_Checking_Acc, Duration_in_Months, Credit_History, Savings_Acc, Purposre_Credit_Taken, Age, Property, Years_At_Present_Employment, Housing, Other_Inst_Plans, Default_On_Payment))

# 6c Generar tabla WOE para cada factor independiente

# stat <- create_infotables (data = newdata, y = "Default_On_Payment")
# #
# grid.table (nuevo $ Tables $ Status_Checking_Acc, rows = NULL)
# #
# grid.table (stat $ Tablas $ Duration_in_Months, rows = NULL)

# Paso 7 – Construir el modelo Linear Reg

biblioteca (coche)

linreg = lm (Default_On_Payment ~., data = newdata)
resumen (linreg)
##
## Llamada:
## lm (fórmula = Default_On_Payment ~., data = newdata)
##
## Residuos:
## Mín. 1Q Mediana 3Q Máx.
## -0.86382 -0.28676 -0.09219 0.32246 1.00918
##
## Coeficientes:
## Estd Estd. Error t valor Pr (> | t |)
## (Intercepción) 0.7697585 0.0218420 35.242 <2e-16 ***
## Status_Checking_AccA12 -0.1002857 0.0056839 -17.644 <2e-16 ***
## Status_Checking_AccA13 -0.1982932 0.0089160 -22.240 <2e-16 ***
## Status_Checking_AccA14 -0.2719186 0.0053806 -50.537 <2e-16 ***
## Duration_in_Months11 -0.0883551 0.0241493 -3.659 0.000254 ***
## Duration_in_Months12 0.1316079 0.0127738 10.303 <2e-16 ***
## Duration_in_Months13 -0.1679345 0.0336398 -4.992 6.00e-07 ***
## Duration_in_Months14 -0.0310201 0.0334909 -0.926 0.354335
## Duration_in_Months15 0.0651237 0.0142697 4.564 5.04e-06 ***
## Duration_in_Months16 0.1752283 0.0463289 3.782 0.000156 ***
## Duration_in_Months18 0.2004975 0.0134166 14.944 <2e-16 ***
## Duration_in_Months20 -0.0221322 0.0254798 -0.869 0.385061
## Duration_in_Months21 0.1846304 0.0165940 11.126 <2e-16 ***
## Duration_in_Months22 0.0164428 0.0457009 0.360 0.719005
## Duration_in_Months24 0.1777103 0.0128954 13.781 <2e-16 ***
## Duration_in_Months26 -0.1471282 0.0637199 -2.309 0.020950 *
## Duration_in_Months27 0.2374538 0.0215329 11.028 <2e-16 ***
## Duration_in_Months28 0.1920215 0.0379099 5.065 4.10e-07 ***
## Duration_in_Months30 0.2005126 0.0157673 12.717 <2e-16 ***
## Duration_in_Months33 0.3675467 0.0381566 9.633 <2e-16 ***
## Duration_in_Months36 0.2938116 0.0139703 21.031 <2e-16 ***
## Duration_in_Months39 0.1831788 0.0306500 5.976 2.30e-09 ***
## Duration_in_Months4 0.0600658 0.0282814 2.124 0.033688 *
## Duration_in_Months40 0.4745183 0.0640407 7.410 1.29e-13 ***
## Duration_in_Months42 0.1325365 0.0226113 5.862 4.62e-09 ***
## Duration_in_Months45 0.5373842 0.0307741 17.462 <2e-16 ***
## Duration_in_Months47 -0.4267245 0.0633595 -6.735 1.66e-11 ***
## Duration_in_Months48 0.3796413 0.0154894 24.510 <2e-16 ***
## Duration_in_Months5 0.1641571 0.0641030 2.561 0.010446 *
## Duration_in_Months54 0.2297115 0.0470660 4.881 1.06e-06 ***
## Duration_in_Months6 -0.0284747 0.0138936 -2.049 0.040421 *
## Duration_in_Months60 0.2800291 0.0212741 13.163 <2e-16 ***
## Duration_in_Months7 -0.0453094 0.0304958 -1.486 0.137351
## Duration_in_Months72 0.8438571 0.0636178 13.264 <2e-16 ***
## Duration_in_Months8 -0.0262472 0.0267354 -0.982 0.326235
## Duration_in_Months9 0.1470090 0.0149335 9.844 <2e-16 ***
## Credit_HistoryA31 -0.0168741 0.0139103 -1.213 0.225113
## Credit_HistoryA32 -0.1712827 0.0109288 -15.673 <2e-16 ***
## Credit_HistoryA33 -0.1722833 0.0123986 -13.895 <2e-16 ***
## Credit_HistoryA34 -0.2559607 0.0113152 -22.621 <2e-16 ***
## Savings_AccA62 -0.0331820 0.0069638 -4.765 1.90e-06 ***
## Savings_AccA63 -0.0727308 0.0085281 -8.528 <2e-16 ***
## Savings_AccA64 -0.1124998 0.0096075 -11.710 <2e-16 ***
## Savings_AccA65 -0.1105122 0.0055340 -19.970 <2e-16 ***
## Purposre_Credit_TakenA41 -0.2385023 0.0078033 -30.564 <2e-16 ***
## Purposre_Credit_TakenA410 -0.1952226 0.0191432 -10.198 <2e-16 ***
## Purposre_Credit_TakenA42 -0.1275840 0.0063874 -19.974 <2e-16 ***
## Purposre_Credit_TakenA43 -0.1372409 0.0057771 -23.756 <2e-16 ***
## Purposre_Credit_TakenA44 -0.0593060 0.0185287 -3.201 0.001372 **
## Purposre_Credit_TakenA45 -0.0251342 0.0140787 -1.785 0.074226.
## Purposre_Credit_TakenA46 0.0183318 0.0100066 1.832 0.066963.
## Purposre_Credit_TakenA48 -0.2157282 0.0213985 -10.081 <2e-16 ***
## Purposre_Credit_TakenA49 -0.1231291 0.0080966 -15.208 <2e-16 ***
## Edad -0.0012711 0.0002051 -6.198 5.76e-10 ***
## PropiedadA122 0.0611509 0.0058654 10.426 <2e-16 ***
## PropiedadA123 0.0528360 0.0054169 9.754 <2e-16 ***
## PropiedadA124 0.1489449 0.0097867 15.219 <2e-16 ***
## Years_At_Present_EmploymentA72 0.0252472 0.0097476 2.590 0.009599 **
## Years_At_Present_EmploymentA73 -0.0414445 0.0090543 -4.577 4.72e-06 ***
## Years_At_Present_EmploymentA74 -0.1210120 0.0096866 -12.493 <2e-16 ***
## Years_At_Present_EmploymentA75 -0.0506770 0.0091716 -5.525 3.31e-08 ***
## Vivienda A152 -0.0798273 0.0055000 -14.514 <2e-16 ***
## Vivienda A153 -0.1272980 0.0112635 -11.302 <2e-16 ***
## Other_Inst_PlansA142 0.0045000 0.0107968 0.417 0.676837
## Other_Inst_PlansA143 -0.0726811 0.0061262 -11.864 <2e-16 ***
## –
## Signif. códigos: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ” 1
##
## Error estándar residual: 0.3908 en 40054 grados de libertad
## R-cuadrado múltiple: 0.2726, R-cuadrado ajustado: 0.2715
## Estadística F: 234.6 en 64 y 40054 DF, valor p: <2.2e-16
plot (predic (linreg)) # los valores predichos se encuentran fuera del rango 0 a 1, por lo tanto, el ajuste incorrecto del modelo

trama (linreg)

# Paso 8- Transformación / Codificación ficticia de variables para obtener el mejor modelo
write.csv (stat $ Tablas $ Duration_in_Months, “Duration_summary.csv”, row.names = F)
newdata $ Duration_Category <- ifelse (newdata $ Duration_in_Months% en% c ("4", "5", "6", "7", "8", "9", "10", "11", "12" , "13", "14", "15", "16", "17", "18"), "lessthan20", ifelse (newdata $ Duration_in_Months% en% c ("20", "21", "22 "," 24 "," 26 "," 27 "," 28 "," 30 "," 33 "," 36 "," 39 ")," 20to40 "," más de 40 "))
tabla (newdata $ Duration_in_Months, newdata $ Duration_Category)
##
## 20to40 menos20 más40
## 10 0 1123 0
## 11 0 361 0
## 12 0 7179 0
## 13 0 161 0
## 14 0 161 0
## 15 0 2567 0
## 16 0 80 0
## 18 0 4536 0
## 20322 0 0
## 21 1205 0 0
## 22 80 0 0
## 24 7386 0 0
## 26 40 0 ​​0
## 27 521 0 0
## 28120 0 0
## 30 1604 0 0
## 33121 0 0
## 36 3326 0 0
## 39200 0 0
## 4 0 240 0
## 40 0 ​​0 41
## 42 0 0 440
## 45 0 0 200
## 47 0 0 40
## 48 0 0 1924
## 5 0 40 0
## 54 0 0 80
## 6 0 3009 0
## 60 0 0 524
## 7 0 200 0
## 72 0 0 40
## 8 0 280 0
## 9 0 1968 0
## A122 0 0 0
stat <- create_infotables (data = newdata, y = "Default_On_Payment")
newdata $ Duration_Dummy_20 <- ifelse (newdata $ Duration_Category == "lessthan20", 1,0)
newdata $ Duration_Dummy_40 <- ifelse (newdata $ Duration_Category == "20to40", 1,0)
newdata $ Status_Checking_Acc_A11 <- ifelse (newdata $ Status_Checking_Acc == "A11", 1,0)
newdata $ Status_Checking_Acc_A12 <- ifelse (newdata $ Status_Checking_Acc == "A12", 1,0)
newdata $ Status_Checking_Acc_A13 <- ifelse (newdata $ Status_Checking_Acc == "A13", 1,0)
newdata $ Default_On_Payment1 <- as.factor (ifelse (newdata $ Default_On_Payment == 1, "1", "0"))

# Paso 9 – Construir regresión logística

biblioteca (ROCR)
## Cargando el paquete requerido: gplots
##
## Adjuntando paquete: ‘gplots’
## El siguiente objeto está enmascarado de ‘paquete: estadísticas’:
##
## lowess
logreg <- glm (Default_On_Payment ~ Duration_Dummy_20 + Duration_Dummy_40 + Status_Checking_Acc_A11 + Status_Checking_Acc_A12 + Status_Checking_Acc_A13 + Age, family = binomial ("logit"), data = newdata)
resumen (logreg)
##
## Llamada:
## glm (formula = Default_On_Payment ~ Duration_Dummy_20 + Duration_Dummy_40 +
## Status_Checking_Acc_A11 + Status_Checking_Acc_A12 + Status_Checking_Acc_A13 +
## Edad, familia = binomio (“logit”), datos = nuevos datos)
##
## Residuos de desviación:
## Mín. 1Q Mediana 3Q Máx.
## -1.6125 -0.8832 -0.4819 1.0449 2.3970
##
## Coeficientes:
## Estd Estd. Error z valor Pr (> | z |)
## (Intercepción) -0.595650 0.059126 -10.07 <2e-16 ***
## Duration_Dummy_20 -1.154614 0.041206 -28.02 <2e-16 ***
## Duration_Dummy_40 -0.677572 0.042070 -16.11 <2e-16 ***
## Status_Checking_Acc_A11 1.984595 0.031684 62.64 <2e-16 ***
## Status_Checking_Acc_A12 1.495144 0.032235 46.38 <2e-16 ***
## Status_Checking_Acc_A13 0.865074 0.054460 15.88 <2e-16 ***
## Edad -0.015651 0.001076 -14.55 <2e-16 ***
## –
## Signif. códigos: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ” 1
##
## (Parámetro de dispersión para la familia binomial tomada como 1)
##
## Desviación nula: 48956 en 40118 grados de libertad
## Desviación residual: 42581 en 40112 grados de libertad
## AIC: 42595
##
## Número de iteraciones de Fisher Scoring: 4
plot (predic (logreg, type = “response”)) #note la opción plot tiene type para obtener el inverso de log_odds

newdata $ predicted = predict (logreg, type = “response”)
write.csv (nuevos datos, “output_logreg.csv”, row.names = F)

capture.output (summary (logreg), file = “summary_logreg.csv”)
summary_residuals_model.csv <-residuals (logreg, type = "deviance")
write.csv (summary_residuals_model.csv, “summary_residuals_model.csv”)

# Paso 10 – Diagnóstico del modelo

# ROCR

newdata $ predicted = predict (logreg, type = “response”)
pred <-prediction (newdata $ predicho, newdata $ Default_On_Payment)
perf <- rendimiento (pred, "tpr", "fpr")
trama (perf)
abline (a = 0, b = 1, col = “Rojo”)

# AUC
auc.perf = rendimiento (pred, measure = “auc”)
[correo electrónico protegido]
## [[1]]
## [1] 0.7429535
# Crear decil por bandas de puntuación

biblioteca (dplyr)
##
## Adjuntando paquete: ‘dplyr’
## El siguiente objeto está enmascarado de ‘package: car’:
##
## recodificar
## El siguiente objeto está enmascarado de ‘package: gridExtra’:
##
## combinar
## El siguiente objeto está enmascarado de ‘paquete: MASA’:
##
## seleccionar
## Los siguientes objetos están enmascarados de ‘paquete: estadísticas’:
##
## filtro, retraso
## Los siguientes objetos están enmascarados de ‘paquete: base’:
##
## intersect, setdiff, setequal, union
newdata $ decile <- ntile (-newdata $ predicho, 10)
write.csv (newdata, “newdata.csv”)

# KS

max (attr (perf, ‘valores y’) [[1]] – attr (perf, ‘valores x’) [[1]])
## [1] 0.3810604
# Ascensor
lift.obj <- rendimiento (pred, "lift", x.measure = "rpp")
parcela (lift.obj,
main = “Venta cruzada – Gráfico de elevación”,
xlab = “% Poblaciones”,
ylab = “Ascensor”,
col = “azul”)
abline (1,0, col = “gris”)

# Lorenz y Gini
biblioteca (ineq)
# Índice de Gini
ineq (newdata $ predicho, type = “Gini”)
## [1] 0.3388472
## Curva de Lorenz
plot (Lc (newdata $ predicho), col = “darkred”, lwd = 2)

## Obtener estadísticas de concordancia / pares

# Relación alta-baja de mala tasa por decil en Excel.
# Intervalo de confianza para ROC, KS, Gini
# mydata [which (mydata $ gender == ‘F’ & mydata $ age> 65),]

Concordancia = función (y, yhat)
{
result_and_fitted_col <-data.frame (y, yhat)
colnames (result_and_fitted_col) <- c ("Contestador", "valores ajustados")
# obtener un subconjunto de resultados donde realmente ocurrió el evento
unos = result_and_fitted_col [result_and_fitted_col [, 1] == 1,]
# obtener un subconjunto de resultados donde el evento en realidad no sucedió
ceros = result_and_fitted_col [result_and_fitted_col [, 1] == 0,]
# Igualar la duración de las tablas de eventos y no eventos
if (longitud (unos [, 1])> longitud (ceros [, 1])) {unos = unos [1: longitud (ceros [, 1]),]}
else {ceros = ceros [1: longitud (unos [, 1]),]}
# Lo siguiente será c (ones_outcome, ones_fitted, zeros_outcome, zeros_fitted)
ones_and_zeros = data.frame (unos, ceros)
# iniciar columnas para almacenar evaluaciones concordantes, discordantes y de pares
conc = rep (NA, longitud (ones_and_zeros [, 1]))
disco = rep (NA, longitud (ones_and_zeros [, 1]))
lazos = rep (NA, longitud (ones_and_zeros [, 1]))
for (i in 1: length (ones_and_zeros [, 1])) {
# Esto prueba la concordancia
if (ones_and_zeros [i, 2]> ones_and_zeros [i, 4])
{conc [i] = 1
disco [i] = 0
lazos [i] = 0
}
# Esto prueba para un empate
si no (ones_and_zeros [i, 2] == ones_and_zeros [i, 4])
{
conc [i] = 0
disco [i] = 0
lazos [i] = 1
}
# Esto debería atrapar pares discordantes.
sino if (ones_and_zeros [i, 2] {
conc [i] = 0
disco [i] = 1
lazos [i] = 0
}
}
# Aquí guardamos las diferentes tarifas
conc_rate = mean (conc, na.rm = TRUE)
disc_rate = mean (disc, na.rm = TRUE)
tie_rate = mean (ties, na.rm = TRUE)
return (list (concordancia = conc_rate, num_concordant = sum (conc), discordancia = disc_rate, num_discordant = sum (disco), tie_rate = tie_rate, num_tied = sum (tie)))
}

Prueba_concordancia <-Concordancia (newdata $ Default_On_Payment, newdata $ predicha)

Prueba de concordancia
## $ concordancia
## [1] 0.7421882
##
## $ num_concordant
## [1] 8907
##
## $ discordancia
## [1] 0.2553121
##
## $ num_discordant
## [1] 3064
##
## $ tie_rate
## [1] 0.002499792
##
## $ num_tied
## [1] 30

Espero que esto ayude.

¡Aclamaciones!

Gracias por sus votos a favor de antemano. Me mantienen en marcha! ¡Gracias!

Descargo de responsabilidad: Las opiniones expresadas aquí son únicamente las del escritor en su capacidad privada.

La regresión logística (o logit) es una técnica de modelado:

Para cualquier X dado, el modelo logit proporciona el valor para la observación que se puede usar con la función de densidad acumulativa logística para encontrar la probabilidad de que Y = 1 para esa observación.

En la regresión logística simple (es decir, binaria), la variable dependiente es una variable ficticia (codificada 0,1).

La imagen a continuación (de Econometrics For Dummies, de Roberto Pedace: ISBN 9781118533840) muestra cómo podemos encontrar la probabilidad de cualquier observación.
Por lo tanto, el modelo logit y el modelo de probabilidad lineal (LPM) utilizando la estimación de mínimos cuadrados ordinarios (MCO) responden la misma pregunta. Entonces, ¿por qué incluso usar el modelo logit?

Porque proporciona resultados pronosticados (valores Y) más “sensibles” que un LPM. Un modelo LPM puede generar valores Y fuera del rango de probabilidades [0,1]. Además, los términos de error para la estimación de LPM son siempre heteroscedasticos. Las distribuciones de probabilidad para ambos modelos parecen similares, como se muestra a continuación, por lo que dan resultados equivalentes:
Con el modelo logit, usamos la distribución logística. La función se aproxima a 0 y 1 asintóticamente, por lo que los valores de Y permanecen dentro del rango [0,1]. Las distribuciones de probabilidad condicional (CDF) para los tres modelos principales de “probabilidad” – logit, probit y LPM – se dan a continuación (diagramas del mismo libro), para ilustrar esto :

No hay una diferencia real entre usar un modelo logit o probit; a veces uno es más eficiente que el otro.

Editar: Como Shakti Amarantha señala en los comentarios, la distribución logística puede conducir a una subestimación de “colas gruesas” o eventos raros. Por lo general, esto no es un problema, a menos que esté trabajando en campos como el análisis de riesgos (y, por lo tanto, lidie con eventos bastante raros).

Avíseme si desea más aclaraciones. Me doy cuenta de que tenía que pasar por alto ciertas cosas, y no estoy seguro de cuál es su nivel de comprensión. Estaré encantado de responder preguntas.

Ayuda a encontrar una función entre la variable dependiente (que tiene que ser variable categórica) y la (s) variable (s) independiente (que puede ser una variable continua o categórica). Es un clasificador lineal que significa que el límite de decisión es lineal. Ayuda a resolver el problema de clasificación. Algunos de los ejemplos de problemas de clasificación son

Ejemplo 1 : Una compañía de tarjetas de crédito generalmente recibe miles de solicitudes para una nueva tarjeta. La aplicación contiene información variada como género, atributos, salario anual, débito pasado, etc. Necesitamos clasificar a las personas en dos tipos; personas de buen crédito y personas de mal crédito.

Ejemplo 2: Una sala de emergencias en un hospital mide 10 variables de pacientes recién ingresados. Una decisión tiene que tomar si el paciente tiene que ingresar en la UCI o no.

Aunque estos problemas de clasificación pueden resolverse mediante regresión lineal, generalmente preferimos la regresión logística sobre la regresión lineal debido a las siguientes razones.

  • Por lo general, las predicciones en el problema de clasificación ([matemáticas] \ hat {y} [/ matemáticas]) son valores de probabilidad. Si utilizamos la regresión lineal para un problema de clasificación, en algún momento obtendremos un valor de predicción inferior a 0 o superior a 1. Este valor de predicción no tiene ningún sentido en la teoría de probabilidad.
  • Por lo general, el algoritmo de aprendizaje supervisado encuentra una estimación que minimiza la función de costo. La regresión lineal usa la función de pérdida cuadrada y la regresión logística usa la función de pérdida logística (función de costo de la regresión logística)

  • yf (x) en el eje x no es más que producto de la etiqueta real (y) y la etiqueta predicha (f (x)).
  • Inferencia del gráfico: aunque la pérdida cuadrada predice las etiquetas correctamente, la pérdida será muy alta en comparación con la función de pérdida logística, si el valor de predicción (f (x)) es muy alto. Debido a esta desventaja, a veces la función de pérdida cuadrada elige una estimación que produce malas predicciones.

Por ejemplo: límite de decisión por regresión lineal (función de pérdida cuadrada)

  • Debido a algunas de las observaciones atípicas en el segundo gráfico, la regresión lineal proporciona un límite de decisión que clasifica mal las etiquetas. Para reducir la pérdida cuadrada, elige una estimación al costo de predecir etiquetas incorrectamente.

La regresión logística cae dentro de la categoría de aprendizaje supervisado; mide la relación entre la variable dependiente categórica y una o más variables independientes mediante la estimación de probabilidades utilizando una función logística / sigmoidea. A pesar del nombre ‘regresión logística’, esto no se usa para el problema de regresión donde la tarea es predecir el resultado real. Es un problema de clasificación que se usa para predecir un resultado binario (1/0, -1/1, Verdadero / Falso) dado un conjunto de variables independientes.

La regresión logística es un poco similar a la regresión lineal o podemos verla como un modelo lineal generalizado. En la regresión lineal, predecimos un resultado real y basado en una suma ponderada de variables de entrada.

y = c + x1 * w1 + x2 * w2 + x3 * w3 + …… .. + xn * wn

El objetivo de la regresión lineal es estimar valores para los coeficientes del modelo c, w1, w2, w3 … .wn y ajustar los datos de entrenamiento con un mínimo error al cuadrado y predecir la salida y.

La regresión logística hace lo mismo, pero con una adición. El modelo de regresión logística calcula una suma ponderada de las variables de entrada similar a la regresión lineal, pero ejecuta el resultado a través de una función especial no lineal, la función logística o la función sigmoide para producir la salida y. Aquí, la salida es binaria o en forma de 0/1 o -1/1.

y = logística (c + x1 * w1 + x2 * w2 + x3 * w3 + …… .. + xn * wn)

y = 1/1 + e [- (c + x1 * w1 + x2 * w2 + x3 * w3 + …… .. + xn * wn)]

La función sigmoidea / logística está dada por la siguiente ecuación.

y = 1 / 1+ ex

Como puede ver en el gráfico, es una curva en forma de S que se acerca a 1 a medida que el valor de la variable de entrada aumenta por encima de 0 y se acerca a 0 a medida que la variable de entrada disminuye por debajo de 0. La salida de la función sigmoidea es 0.5 cuando la variable de entrada es 0.

Por lo tanto, si la salida es mayor que 0.5, podemos clasificar el resultado como 1 (o positivo) y si es menor que 0.5, podemos clasificarlo como 0 (o negativo).

Referencias

Regresión logística – Wikipedia

La regresión logística es un método de análisis estadístico utilizado para predecir un valor de datos basado en observaciones previas de un conjunto de datos. Un modelo de regresión logística predice una variable de datos dependiente analizando la relación entre una o más variables independientes existentes.

Por ejemplo, una regresión logística podría usarse para predecir si un candidato político ganará o perderá una elección o si un estudiante de secundaria será admitido en una universidad en particular. El modelo analítico resultante puede tener en cuenta múltiples criterios de entrada: en el caso de la aceptación universitaria, cosas como el promedio de calificaciones del estudiante, el puntaje SAT y el número de actividades extracurriculares. Con base en datos históricos sobre resultados anteriores que involucran los mismos criterios de entrada, luego califica los nuevos casos según su probabilidad de caer en una categoría de resultado particular.

La regresión logística se ha convertido en una herramienta importante en la disciplina del aprendizaje automático. El enfoque permite utilizar un algoritmo en una aplicación de aprendizaje automático para clasificar los datos entrantes en función de los datos históricos. A medida que entran datos más relevantes, el algoritmo debería mejorar en la predicción de clasificaciones dentro de los conjuntos de datos. Por esa razón, la regresión logística se ha vuelto particularmente popular en la publicidad en línea, permitiendo a los especialistas en marketing predecir como un sí o no un porcentaje de la probabilidad de que usuarios específicos del sitio web hagan clic en anuncios particulares.

La regresión logística también puede desempeñar un papel en las actividades de preparación de datos al permitir que los conjuntos de datos se coloquen en cubos específicamente predefinidos durante el proceso de extracción, transformación y carga para organizar la información para el análisis.

El aprendizaje automático (Amazon Machine Learning, en particular) es un paso adelante de la analítica tradicional porque se centra en resultados predictivos y potencialmente prescriptivos.

La regresión logística se usa para predecir la variable de resultado que es categórica.

¿Qué es una variable categórica?

Una variable categórica es una variable que solo puede tomar valores específicos y limitados.

ejemplo:

Género Masculino Femenino

sí / no, 0/1, etc.

Consideremos un escenario:

Tengo datos de algunos estudiantes. Los datos son sobre las horas estudiadas antes del examen y si pasaron , sí / no (1/0).

horas estudiadas = [[1.0], [1.5], [2.0], [2.5], [3.0], [3.5], [3.6], [4.2], [4.5], [5.4],
[6.8], [6.9], [7.2], [7.4], [8.1], [8.2], [8.5], [9.4], [9.5], [10.2]]
aprobado = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 1, 1, 1, 1, 1, 1, 1]

print (“horas de estudio pasadas”)
para fila en zip (horas estudiadas, pasadas):
print (“”, fila [0] [0], “—–>”, fila [1])

Salida:

horas transcurridas
1.0 —–> 0
1.5 —–> 0
2.0 —–> 0
2.5 —–> 0
3.0 —–> 0
3.5 —–> 0
3.6 —–> 0
4.2 —–> 0
4.5 —–> 0
5.4 —–> 0
6.8 —–> 1
6.9 —–> 0
7.2 —–> 0
7.4 —–> 1
8.1 —–> 1
8.2 —–> 1
8.5 —–> 1
9.4 —–> 1
9.5 —–> 1
10.2 —–> 1

Tracemos los datos y veamos cómo se ven:

importar matplotlib.pyplot como plt
% matplotlib en línea

plt.scatter (horas estudiadas, pasadas, color = ‘negro’)
plt.xlabel (“horas estudiadas”)
plt.ylabel (“aprobado”)

Si trazamos una regresión lineal normal sobre nuestros puntos de datos, se verá así:

Sabemos que la salida debe ser 0 o 1.

Podemos ver que esta regresión está produciendo todo tipo de valores entre 0 y 1. Ese no es el problema real.

También está produciendo valores imposibles: valores negativos y valores mayores que 1 que no tiene significado.

Entonces necesitamos una mejor línea de regresión que esta. La regresión logística es algo que deberíamos usar aquí.

La regresión logística se ajustará a nuestros puntos de datos de la siguiente manera:

Para obtener más información sobre la función logística y la función sigmoidea, cómo funciona, vea mi video tutorial:

También puedes visitar mi publicación para más detalles:

Regresión logística – Teoría | Quick KT

En pocas palabras: es una de las pocas formas en que puede hacer una regresión de modelos con una variable discreta y cualitativa como la Y.

En lugar de que Y sea una variable continua como las tasas de ingresos o delincuencia, Y ahora representa resultados discretos, como “¿esta persona se graduó de la universidad?”, “¿Ganó este equipo deportivo su división?”, “¿Nació esta persona con VIH?” , “¿Esta película ganó un Oscar?”. Estos se representan con 0 (no) y 1 (sí), pero a veces puede llegar a representar múltiples resultados, como “0 = no llegó a los playoffs; 1 = llegó a los playoffs; 2 = ganó el campeonato”, o “1 = La película del año fue un género de terror, 2 = La película del año fue un drama, 3 = la película del año es un género de acción / aventura, 4 = MoY es una comedia” y así sucesivamente.

No se inferirá como un OLS normal donde un aumento de unidades en X cambiará a Y en una cierta cantidad de unidades. Intead se considerará en términos de probabilidades / probabilidad de que el resultado sea 0 o 1, o 1,2,3,4, .. n. Entonces, será como, un aumento en X cambiará las probabilidades de que Y suceda en una cierta cantidad de puntos porcentuales.

Gracias por A2A.

La regresión es una medida de la relación entre la variable (de entrada) a otra variable (de salida). La regresión logística es donde la variable de salida es categórica. Esta variable de salida tiene valores binarios. Por lo tanto, la salida de nuestro modelo debe restringirse en el rango en el que se codifica el valor binario. Para restringir la salida del modelo la no linealidad. El modelo para la regresión logística es el siguiente,

[matemáticas] y = g (w.x + b) [/ matemáticas]

aquí w y b son los parámetros a ajustar y g es una función no lineal.

La no linealidad se selecciona en función del rango en el que se codifica la salida.

  • sigmoide: 0 a 1
  • tanh: -1 a 1

Ahora, como no hay linealidad presente en la red, no se puede entrenar con una solución analítica. Por lo tanto, se utiliza una técnica decente de degradado. En gradiente decente, los parámetros se seleccionan al azar y luego se actualizan en función del error.

La discusión matemática detallada de la regresión logística se proporciona en la Conferencia 09 – El Modelo Lineal II

Los consejos para usar la regresión se dan en “¿Cuáles son los consejos prácticos para usar el Algoritmo de regresión lineal?”, Puede usarlos para mejorar su modelo

La regresión logística puede ser el análisis de regresión apropiado para realizar cuando la variable dependiente es dicotómica (binaria). Como todos los análisis de regresión, la regresión logística puede ser un análisis predictivo. La regresión logística se utiliza para deletrear datos y explicar su vínculo entre una variable binaria dependiente y varias variables independientes nominales, ordinales, de intervalo o de nivel de razón

A veces, las regresiones logísticas toman tiempo y esfuerzo para interpretar la herramienta de Estadísticas Intelectuales que le permite realizar fácilmente el análisis, luego, en un lenguaje claro, interpreta el resultado.

Si está buscando la mejor empresa de logística, los servicios de carga global de So Global son los líderes de los servicios de reenvío de carga útil que le transmitirán el transporte y la logística más rentables que garantizarán el desarrollo seguro y sólido de las cosas a nuestros clientes.

Haga clic en este enlace para obtener más información: http: //www.globalfreightageservi

Siempre es mejor practicar más que tratar de saberlo. No puedes nadar simplemente sabiendo nadar 🙂

La regresión logística es el segundo algoritmo para saber después de la regresión lineal.

En palabras simples, la regresión logística se utiliza para la clasificación (para la predicción de variables categóricas).

La regresión lineal se utiliza para la regresión ( para la predicción variable continua).

Cuando entrena la regresión lineal, genera predicciones continuas en lugar de predicciones discretas o categóricas que nos gustaría hacer en caso de clasificación.

Si necesita conocer el resumen de salida de la regresión logística o el puntaje logit y cómo se calcula la probabilidad final a partir de él en la regresión logística, puede seguir aquí:

  • Interpretación de salida de regresión logística en R
  • Regresión logística usando python
  • Desviación y AIC para la regresión logística en R

La regresión nos permite predecir una salida basada en algunas entradas. Por ejemplo, podemos predecir la altura de alguien en función de la altura de su madre y la altura de su padre.
Este tipo de regresión se llama regresión lineal porque nuestra variable de resultado es un número real continuo.
Pero, ¿y si quisiéramos predecir algo que no es un número continuo? Digamos que queremos predecir si lloverá mañana. El uso de la regresión lineal ordinaria no funcionará en este caso porque no tiene sentido tratar nuestro resultado como un número continuo: lloverá o no lloverá.
En este caso, utilizamos la regresión logística , porque nuestra variable de resultado es una de varias categorías.
La regresión logística funciona en gran medida de la misma manera que la regresión lineal: multiplica cada entrada por un coeficiente, las resume y agrega una constante.
En regresión lineal, la salida es muy sencilla. En el caso de la predicción de alturas, nuestra salida es simplemente la altura predicha de alguien.
Sin embargo, en la regresión logística, el resultado es en realidad el registro de la razón de posibilidades . En el ejemplo de predecir si lloverá mañana, la razón de probabilidades es la probabilidad de que lloverá mañana dividida por la probabilidad de que no lloverá. Luego tomamos el registro de esta relación para que nuestro resultado sea un número real continuo, como con la regresión lineal. Este resultado no tiene tanto sentido intuitivo, pero para algunos resultados y, podemos aplicar la siguiente transformación:
(exp (y) / (1 + exp (y))
Para obtener la probabilidad de que ocurra el evento (solo estamos invirtiendo el registro y la razón de probabilidades aquí).

En resumen: la regresión logística se ajusta a un clasificador binario. Una vez que el modelo está en forma, si ingresa cualquier vector de características [matemática] \ hat {x} [/ matemática], el modelo generará Verdadero si la entrada se proyecta en la clase objetivo o Falso si el modelo piensa lo contrario.

Tiene el beneficio adicional de proporcionar una probabilidad de cuán seguro está el clasificador de su decisión.

Una exploración exhaustiva de la regresión logística se puede encontrar a continuación. La publicación proporciona imágenes para ayudar a comprender LR, además de presentar todos los conceptos matemáticos e implementar el algoritmo en Python.

Resolviendo la regresión logística con el método de Newton

Debajo del capó: la regresión logística maximiza la probabilidad de la distribución de Bernoulli. LR hace esto optimizando los parámetros de una función de hipótesis.

Cuanto mayor sea la probabilidad, más precisas serán las predicciones de nuestros modelos de todos los resultados independientes [matemática] P (y | x) [/ matemática] en nuestros datos de entrenamiento.

[matemáticas] L (\ theta) = \ prod_ {i = 1} ^ {n} h _ {\ theta} (x_ {i}) ^ {y_ {i}} (1-h _ {\ theta} (x_ {i })) ^ {1-y_ {i}} [/ math]

En la regresión logística, la función de hipótesis del “sospechoso habitual” es la función logística sigmoidea. La función de hipótesis es la que predice si el modelo generará Verdadero o Falso basado en la entrada [math] \ hat {x} [/ math]. En nuestro caso, se define como:

[matemáticas] h (x) = \ frac {1} {1 + e ^ {\ theta_ {1}, \ theta_ {2},… \ theta_ {n}}} [/ matemáticas]

Primero tomamos [math] \ log [/ math] de nuestra función de probabilidad, por lo que estamos en el espacio logarítmico y no nos quedamos sin precisión de punto flotante.

[matemáticas] \ ell (\ theta) = \ sum_ {i = 1} ^ {n} y_ {i} \ log (h _ {\ theta} (x_ {i})) + (1-y_ {i}) \ log (1-h _ {\ theta} (x_ {i})) [/ math]

Luego, maximizamos la función de log-verosimilitud utilizando el Método de Newton o el Descenso de gradiente.

Una vez que se maximiza lo anterior, podemos usar nuestra función de hipótesis recién entrenada para clasificar las nuevas entradas como Verdadero o Falso.

Cálculos de regresión logística explicados con hoja de cálculo Excel

Estimación de máxima verosimilitud y regresión logística simplificada

A diferencia de la regresión que se usa para predecir la variable continua. La regresión logística se ajusta a los datos cuya variable de respuesta es Dicotómica / Binaria, es decir, 0 o 1. Si el resultado no es exactamente 0 o 1, digamos que es 0.76, entonces decimos que hay 76% de posibilidades de que ocurra la variable de respuesta.

Ahora, ¿cómo sabes qué tan apropiado es tu modelo?
Encuentre la sensibilidad y especificidad del modelo, trace la curva, vea cuánto área cubre, cuanto más área cubra, más apropiado será su modelo.

Aplicación simple : suponga que estamos interesados ​​en los factores que influyen en si un candidato político gana una elección. La variable de resultado (respuesta) es binaria (0/1); ganar o perder. Las variables predictoras de interés son la cantidad de dinero gastado en la campaña, la cantidad de tiempo dedicado a hacer campaña negativamente y si el candidato es titular o no.

Hola, buena pregunta! ¿Para cualquier persona interesada en aprender más sobre la regresión logística, pero también sobre otros modelos de clasificación? entonces me gustaría recomendar un curso en línea específico. Este curso tiene una conferencia únicamente sobre regresión logística. Pero no pares ahí, jaja! Todas las otras conferencias también son muy informativas.

Está en una plataforma llamada Experfy que tiene múltiples cursos relacionados con datos / análisis:

El enlace específico del curso: https://www.experfy.com/training

Podría echar un vistazo a la respuesta de Michael Hochster a Dado un conjunto de datos con variables (x, y) de tipo (número real, booleano), ¿cómo se puede ajustar una curva que prediga la probabilidad de y = verdadero para un número real dado x?

Hay algunas situaciones en las que el resultado depende de una o más de una variable independiente. En la regresión logística, la variable dependiente es binaria o dicotómica (lo que limita los resultados a dos). Hacer esta asignación de regresión logística ayuda a descubrir la relación entre la característica dicotómica de interés y un conjunto de variables independientes.

La regresión logística es un método estadístico para investigar la relación entre una variable dependiente categórica y un conjunto de variables independientes.

Existen métodos para variables dicotómicas, ordinales y dependientes categóricas.

La regresión logística también se conoce como modelo logit en referencia a Big data. Es una técnica para pronosticar el resultado binario a partir de una combinación lineal de variables predictoras.