6 votos

¿Cómo se informe de porcentaje de precisión para glmnet de regresión logística?

Estoy usando glmnet donde mi variable dependiente es binaria (clase 0, clase 1). Quiero informar porcentaje de exactitud del modelo. Así que el uso de la predict función para mi conjunto de datos de prueba. Sin embargo, los valores obtenidos son en decimales en lugar de ser 0 y 1. Así que me puse un umbral de 0.5, es decir, si el valor de la predicción > 0.5, lo considero como 1 y si el valor predicho <= 0.5, considero que es 0. A continuación, he creado una matriz de confusión mediante la comparación de la predicción de valores reales y de mis datos de prueba. A partir de este encuentro la exactitud. He pegado mi código de ejemplo siguiente. No estoy seguro de si este es el enfoque correcto para informar de la exactitud de porcentaje para un glmnet modelo de predicción de un binario de la variable dependiente.

data <- read.csv('datafile', header=T)
mat  <- as.matrix(data)
X    <- mat[, c(1:ncol(mat)-1)]
y    <- mat[, ncol(mat)] 
fit  <- cv.glmnet(X, y, family="binomial", type.measure="class", alpha=0.1)

t                             <- 0.2*nrow(mat) #20% of data
t                             <- as.integer(t) 
testX                         <- mat[1:t, 1:ncol(mat)-1]
predicted_y                   <- predict(fit, s=0.01, testX, type='response')
predicted_y[predicted_y>0.5]  <- 1
predicted_y[predicted_y<=0.5] <- 0
Yactual                       <- mat[1:t, ncol(mat)]
confusion_matrix              <- ftable(Yactual, predicted_y)
accuracy                      <- 100* (sum(diag(confusion_matrix)) / length(predicted_y))

9voto

dan90266 Puntos 609

glmnet está diseñado en torno a una adecuada precisión de la puntuación, la (penalizado) de la desviación. Resúmenes de predicción discriminación uso adecuado de las puntuaciones, no arbitrarias clasificaciones que están en desacuerdo con los costos de falsos positivos y falsos negativos. Veamos un par de aceptadas reglas de puntuación: Brier (cuadrática) la puntuación y logarítmica (desviación) de la puntuación. Puede manipular la proporción clasificados correctamente en un número de maneras tontas. La forma más sencilla de ver esto es que si la prevalencia de la $Y=1$ es de 0,98 usted será 0.98 precisa haciendo caso omiso de todos los datos y la predicción de que todos tengan la $Y=1$.

Otra forma de decir todo esto es que al cambiar de una arbitraria de corte de 0,5 a otro arbitrario de corte, las diferentes características que serán seleccionados. Una mala regla de puntuación es optimizado por un falso modelo.

2voto

mrbcuda Puntos 421

El predict función para glmnet ofrece una "class" el tipo que va a predecir la clase en lugar de la respuesta para binomio de regresión logística, eliminando la necesidad de su condicionales. También puedes hacer el cv.glmnet el uso de la type.measure valor del parámetro "auc" o "class" para producir algunos de validación de la precisión de las medidas antes de hacer la predicción.

-1voto

Walter Puntos 620

Una manera mucho más sencilla de hacer esto es usando la función de predicción y la búsqueda de la media de error:

mean(predicted_y!=Yactual)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X