Estoy realizando una regresión logística de red elástica en un conjunto de datos de atención médica usando el glmnet
paquete 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 :
[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.1942612
alpha=0.8
¿Es seguro ir con ellos alpha=0.8
? O, dada la variación, ¿debería volver a ejecutar cv.glmnet
con más pliegues de validación cruzada (por ejemplo, lugar de ) o tal vez un mayor número deincrementos entrealpha=0.0
y1.0
para obtener una imagen clara de la ruta de error de cv?
caret
paquete que puede hacer cv y sintonizar repetidamente tanto para alpha como para lambda (¡admite el procesamiento multinúcleo!). De memoria, creo que laglmnet
documentació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 porcv.glmnet
.cv.glmnet()
sin pasarfoldids
creado a partir de una semilla aleatoria conocida.Respuestas:
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
Sklearn utiliza
Hay parametrizaciones alternativas que utilizanuna y si también.
Para evitar confusiones voy a llamar
Visualizando el impacto de los parámetros
Considere un conjunto de datos simulados dondey 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ónL1 diferentes , en función de λ el parámetro de fuerza.
Comprender el efecto de los parámetros.
ElasticNet se introdujo para contrarrestar algunas de las limitaciones del lazo que son:
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)
Otras lecturas
fuente
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.
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
GridSearchCV
detalles de las tiendas sobre los vencimientos de los plieguescv_results_
( ver aquí ).fuente