Elegir alfa óptimo en regresión logística neta elástica

22

Estoy realizando una regresión logística de red elástica en un conjunto de datos de atención médica usando el glmnetpaquete en R seleccionando valores lambda en una cuadrícula de de 0 a 1. Mi código abreviado está a continuación:α

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

que genera el error cruzado medio validado para cada valor de alfa de a con un incremento de :0.01.00.1

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

Según lo que he leído en la literatura, la elección óptima de es donde se minimiza el error de cv. Pero hay mucha variación en los errores en el rango de alfa. Estoy viendo varios mínimos locales, con un error mínimo global de for .α0.1942612alpha=0.8

¿Es seguro ir con ellos alpha=0.8? O, dada la variación, ¿debería volver a ejecutar cv.glmnetcon más pliegues de validación cruzada (por ejemplo, lugar de2010 ) o tal vez un mayor número deincrementosα entrealpha=0.0y1.0para obtener una imagen clara de la ruta de error de cv?

RobertF
fuente
55
Debería echar un vistazo al caretpaquete que puede hacer cv y sintonizar repetidamente tanto para alpha como para lambda (¡admite el procesamiento multinúcleo!). De memoria, creo que la glmnetdocumentación desaconseja el ajuste de alfa de la forma en que lo hace aquí. Se recomienda mantener los pliegues fijos si el usuario está ajustando para alfa además de la optimización para lambda proporcionada por cv.glmnet.
1
Ah, encontré esta publicación aquí: stats.stackexchange.com/questions/69638/…
RobertF
2
no te olvides de arreglar el foldid cuando intentas diferentes α
user4581
1
Para la reproducibilidad, nunca corra cv.glmnet()sin pasar foldidscreado a partir de una semilla aleatoria conocida.
smci
1
@amoeba eche un vistazo a mi respuesta: ¡las aportaciones sobre las compensaciones entre l1 y l2 son bienvenidas!
Xavier Bourret Sicotte

Respuestas:

7

Aclarando lo que se entiende por parámetros α y Elastic Net

Los diferentes paquetes usan terminología y parámetros diferentes, pero el significado es generalmente el mismo:

El paquete R Glmnet usa la siguiente definición

minβ0 0,β1norteyo=1nortewyol(yyo,β0 0+βTXyo)+λ[(1-α)El |El |βEl |El |22/ /2+αEl |El |βEl |El |1]

Sklearn utiliza

minw12norteyo=1norteEl |El |y-XwEl |El |22+α×l1proporciónEl |El |wEl |El |1+0,5×α×(1-l1proporción)×El |El |wEl |El |22

Hay parametrizaciones alternativas que utilizan una y si también.

Para evitar confusiones voy a llamar

  • λ el parámetro de fuerza de penalización
  • L 1L1proporción la relación entre lapenalizaciónL1 yL2 , que varía de 0 (cresta) a 1 (lazo)

Visualizando el impacto de los parámetros

Considere un conjunto de datos simulados donde y consiste en una curva senoidal ruidosa y X es una característica bidimensional que consiste en X1=X y X2=X2 . Debido a la correlación entre X1 y X2 la función de costo es un valle estrecho.

Los gráficos a continuación ilustran la ruta de solución de la regresión elástica con dos parámetros de relación L1 diferentes , en función de λ el parámetro de fuerza.

  • Para ambas simulaciones: cuando λ=0 0 entonces la solución es la solución OLS en la parte inferior derecha, con la función de costo en forma de valle asociada.
  • A medida que aumenta λ , se inicia la regularización y la solución tiende a (0 0,0 0)
  • La principal diferencia entre las dos simulaciones es el parámetro de relación L1 .
  • LHS : para una pequeña relación L1 , la función de costo regularizado se parece mucho a la regresión de Ridge con contornos redondos.
  • RHS : para una relación L1 grande , la función de costo se parece mucho a la regresión de lazo con los contornos de forma de diamante típicos.
  • Para la relación intermedia L1 (no mostrada) la función de costo es una mezcla de los dos

ingrese la descripción de la imagen aquí


Comprender el efecto de los parámetros.

ElasticNet se introdujo para contrarrestar algunas de las limitaciones del lazo que son:

  • Si hay más variables pags que puntos de datos norte , pags>norte , el lazo selecciona como máximo norte variables.
  • Lasso no realiza la selección agrupada, especialmente en presencia de variables correlacionadas. Tiende a seleccionar una variable de un grupo e ignora las otras

L1L2

  • L1
  • L2L1

Puede ver esto visualmente en el diagrama anterior, las singularidades en los vértices fomentan la dispersión , mientras que los bordes convexos estrictos fomentan la agrupación .

Aquí hay una visualización tomada de Hastie (el inventor de ElasticNet)

ingrese la descripción de la imagen aquí

Otras lecturas

Xavier Bourret Sicotte
fuente
2

Permítanme agregar algunas observaciones muy prácticas a pesar de la antigüedad de la pregunta. Como no soy un usuario de R, no puedo dejar que el código hable, pero de todos modos debería ser comprensible.

  1. αkF1,...,FkF(X)=1kyoFyo(X)F(X)=yo=1kFyo(X)k

  2. Una ventaja del remuestreo es que puede inspeccionar la secuencia de puntajes de las pruebas, que aquí están los puntajes del cv. Siempre debe mirar no solo el promedio sino también la desviación estándar (no se distribuye normalmente, sino que actúa como si fuera). Por lo general, muestra esta palabra como 65.5% (± 2.57%) para mayor precisión. De esta manera puede saber si las "pequeñas desviaciones" son más probables por casualidad o estructuralmente. Mejor sería incluso inspeccionar el secuencias completas . Si siempre hay un pliegue por alguna razón, es posible que desee repensar la forma en que está haciendo su división (también sugiere un diseño experimental defectuoso: ¿barajó?). En scikit-learn, los GridSearchCVdetalles de las tiendas sobre los vencimientos de los pliegues cv_results_( ver aquí ).

  3. αL1αL2

uberwach
fuente