Para encajar en el modelo de regresión logística, el primer paso es instanciar el algoritmo. Esto se hace en la primera línea de código de abajo con la función glm(). La segunda línea imprime el resumen del modelo entrenado.
12model_glm = glm(approval_status ~ . , family="binomial", data = train)summary(model_glm)
{r}
Salida:
1234567891011121314151617181920212223242526272829303132Llamada:glm(fórmula = estado_de_aprobación ~ ., familia = "binomio", datos = tren)Residuos de desviación: Min 1Q Mediana 3Q Max -2.19539 -0.00004 0.00004 0.00008 2.47763 Coeficientes: Estimación Error estándar Valor z Pr(>|z|) (Intercepción) 6.238e-02 9.052e+03 0.000 1.0000 Estado_maritalSí 4.757e-01 4.682e-01 1.016 0.3096 Is_graduadoSí 5.647e-01 4.548e-01 1.242 0.2144 Ingresos 2.244e-06 1.018e-06 2.204 0.0275 * Cantidad_de_préstamo -3. 081e-07 3.550e-07 -0.868 0.3854 Puntuación_de_créditoSatisfactoria 2.364e+01 8.839e+03 0.003 0.9979 Edad -7.985e-02 1.360e-02 -5.870 4.35e-09 ***SexM -5.879e-01 6.482e-01 -0.907 0.3644 Inversión -2.595e-06 1.476e-06 -1.758 0.0787 . PurposeHome 2.599e+00 9.052e+03 0.000 0.9998 PurposeOtros -4.172e+01 3.039e+03 -0.014 0.9890 PurposePersonal 1.577e+00 2.503e+03 0.001 0.9995 PurposeTravel -1.986e+01 1. 954e+03 -0.010 0.9919 ---Códigos de signo: 0 $0027***$0027 0.001 $0027**$0027 0.01 $0027*$0027 0.05 $0027.$0027 0.1 $0027 $0027 1(Parámetro de dispersión para la familia del binomio tomado como 1) Desviación nula: 524,44 sobre 419 grados de libertadDesviación residual: 166,96 sobre 407 grados de libertadAIC: 192,96Número de iteraciones de puntuación de Fisher: 19
El código de significado «***» en la salida anterior muestra la importancia relativa de las variables de características. Evaluemos el modelo más a fondo, empezando por establecer la precisión de la línea base usando el código de abajo. Dado que la clase mayoritaria de la variable objetivo tiene una proporción de 0,68, la precisión de la línea base es del 68 por ciento.
12#Baseline Accuracyprop.table(table(train$approval_status))
{r}
Salida:
12 No Sí 0.3166667 0.6833333
Evaluemos ahora el rendimiento del modelo en los datos de entrenamiento y pruebas, que idealmente deberían ser mejores que la precisión de la línea de base. Empezamos generando predicciones sobre los datos de entrenamiento, usando la primera línea de código de abajo. La segunda línea crea la matriz de confusión con un umbral de 0,5, lo que significa que para las predicciones de probabilidad iguales o superiores a 0,5, el algoritmo predecirá la respuesta Yes para la variable approval_status. La tercera línea imprime la exactitud del modelo en los datos de capacitación, utilizando la matriz de confusión, y la exactitud resulta ser del 91%.
Luego repetimos este proceso en los datos de la prueba, y la precisión resulta ser del 88 por ciento.
12345678910111213# Predicciones sobre el entrenamiento setpredictTrain = predict(model_glm, data = train, type = "response")# Matriz de confusión sobre el entrenamiento datatable(train$approval_status, predictTrain >= 0. 5)(114+268)/nrow(train) #Exactitud - 91%#Predicciones en el conjunto de pruebaspredictTest = predict(model_glm, newdata = test, type = "respuesta")# Matriz de confusión en el conjunto de pruebas(test$approval_status, predictTest >= 0.5)158/nrow(test) #Exactitud - 88%
{r}
Salida:
12345678910111213141516# Matriz de confusión y exactitud en los datos de entrenamiento FALSO VERDADERO No 114 19 Sí 19 268[1] 0.9095238# Matriz de confusión y exactitud en los datos de prueba FALSO VERDADERO No 44 13 Sí 9 114[1] 0.8777778