9 votos

Cómo llegar a los valores predichos con cv.glmnet

Estoy un poco confundido con la función predecir con un objeto cv.glmnet.

Estoy ejecutando estas dos líneas:

cvFit <- cv.glmnet(x = as.matrix(imputedTrainingData[,2:33]), y = imputedTrainingData[,1], family = "binomial", type.measure = "class" )

response<-predict(cvFit, as.matrix(imputedTestData[,2:33]), s= "lambda.min")

La variable y es un factor de 2 niveles

¿Por qué la sentencia predict da un vector numérico y no el resultado de la variable de clase predicha? Pensé por un momento que tal vez da la probabilidad de estar en una u otra clase, pero el valor máximo de los resultados está justo por encima de 0,35 en mis datos y el mínimo es -0,42.

Gracias.

10voto

David J. Sokol Puntos 1730

Tenga en cuenta que está utilizando el predict.cv.glmnet cuando se llama como lo hizo. La ayuda para esta función es un poco contraria a la intuición, pero se pueden pasar argumentos a la función predict.glmnet que realiza las predicciones, a través del método ... argumento.

De ahí que probablemente quiera

response <- predict(cvFit, as.matrix(imputedTestData[,2:33]),
                    s = "lambda.min",
                    type = "class")

donde type = "class" tiene un significado:

  Type ‘"class"’ applies only to
  ‘"binomial"’ or ‘"multinomial"’ models, and produces the
  class label corresponding to the maximum probability.

(de ?predict.glmnet )

Lo que estaba viendo eran los valores predichos en la escala del predictor lineal (función de enlace), es decir, antes de que se aplicara la inversa de la función logit para obtener la probabilidad de clase == 1. Esto es bastante típico en R, e igualmente típico este comportamiento puede ser controlado a través de un type argumento.

0 votos

Gracias. Sospechaba que este era el comportamiento pero no sabía que la solución era la predicción de vainilla

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