Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Regularice los datos anchos en paralelo

Este ejemplo muestra cómo regularizar un modelo con muchos predictores más que las observaciones. son los datos con más predictores que las observaciones.Wide data Normalmente, con datos anchos desea identificar predictores importantes. Utilíce como una herramienta exploratoria o de cribado para seleccionar un conjunto más pequeño de variables para priorizar su modelado e investigación.lassoglm Utilice la computación paralela para acelerar la validación cruzada.

Cargue los datos.ovariancancer Estos datos tienen 216 observaciones y 4000 predictores en la variable de espacio de trabajo.obs Las respuestas son binarias, o bien, en la variable de espacio de trabajo.'Cancer''Normal'grp Convierta las respuestas a binarias para usarlas en.lassoglm

load ovariancancer y = strcmp(grp,'Cancer');

Configure las opciones para utilizar la computación paralela. Prepárese para computar en paralelo usando.parpool

opt = statset('UseParallel',true); parpool()
Starting parallel pool (parpool) using the 'local' profile ... connected to 6 workers.  ans =    Pool with properties:               Connected: true            NumWorkers: 6               Cluster: local         AttachedFiles: {}     AutoAddClientPath: true           IdleTimeout: 30 minutes (30 minutes remaining)           SpmdEnabled: true 

Ajuste un conjunto de modelos regularizados con validación cruzada. Utilice el parámetro para favorecer la retención de los grupos de predictores altamente correlacionados, en lugar de eliminar todos los miembros del grupo, menos uno.Alpha Normalmente, se utiliza un valor relativamente grande de.Alpha

rng('default') % For reproducibility tic [B,S] = lassoglm(obs,y,'binomial','NumLambda',100, ...   'Alpha',0.9,'LambdaRatio',1e-4,'CV',10,'Options',opt); toc
Elapsed time is 82.390258 seconds. 

Examine la gráfica de validación cruzada.

lassoPlot(B,S,'PlotType','CV');      legend('show') % Show legend

Examine el trazado de traza.

lassoPlot(B,S,'PlotType','Lambda','XScale','log')

La línea de trazos vertical derecha (verde) representa el que proporciona la desviación cruzada más pequeña validada.Lambda La línea discontinua de la izquierda (azul) tiene la desviación mínima y no más de un desvío estándar. Esta línea azul tiene muchos menos predictores:

[S.DF(S.Index1SE) S.DF(S.IndexMinDeviance)]
ans = 1×2

    50    89

Usted pidió que encajen usando 100 valores diferentes.lassoglmLambda ¿Cuántos se usan?

size(B)
ans = 1×2

        4000          84

detenido después de 84 valores porque la desviación era demasiado pequeña para los valores pequeños.lassoglmLambda Para evitar el sobreajuste, se detiene cuando la desviación del modelo ajustado es demasiado pequeña en comparación con la desviación en las respuestas binarias, ignorando las variables predictoras.lassoglm

Puede forzar a incluir más términos mediante el argumento de par nombre-valor.lassoglm'Lambda' Por ejemplo, defina un conjunto de valores que, además, incluya tres valores menores que los valores de.LambdaS.Lambda

minLambda = min(S.Lambda); explicitLambda = [minLambda*[.1 .01 .001] S.Lambda];

Especifique cuándo se llama a la función. se detiene cuando la desviación del modelo ajustado es demasiado pequeña, aunque se proporcione explícitamente un conjunto de valores.'Lambda',explicitLambdalassoglmlassoglmLambda

Para ahorrar tiempo, puede utilizar:

  • Menos, lo que significa menos ajustesLambda

  • Menos subconjuntos de validación cruzada

  • Un valor mayor paraLambdaRatio

Utilice el cálculo en serie y los tres métodos de ahorro de tiempo:

tic [Bquick,Squick] = lassoglm(obs,y,'binomial','NumLambda',25,...     'LambdaRatio',1e-2,'CV',5); toc
Elapsed time is 14.668383 seconds. 

Compare gráficamente los nuevos resultados con los primeros resultados.

lassoPlot(Bquick,Squick,'PlotType','CV');      legend('show') % Show legend

lassoPlot(Bquick,Squick,'PlotType','Lambda','XScale','log')

El número de coeficientes distintos de cero en el modelo de desviación estándar más bajo más uno es de alrededor de 50, similar al primer cálculo.