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.

Wide data a través de Lasso y Parallel Computing

Este ejemplo muestra cómo utilizar junto con la validación cruzada para identificar predictores importantes.Lazo

Cargue los datos de muestra y visualice la descripción.

load spectra Description 
 Description =    11×72 char array      '== Spectral and octane data of gasoline ==                              '     '                                                                        '     'NIR spectra and octane numbers of 60 gasoline samples                   '     '                                                                        '     'NIR:     NIR spectra, measured in 2 nm intervals from 900 nm to 1700 nm '     'octane:  octane numbers                                                 '     'spectra: a dataset array containing variables for NIR and octane        '     '                                                                        '     'Reference:                                                              '     'Kalivas, John H., "Two Data Sets of Near Infrared Spectra," Chemometrics'     'and Intelligent Laboratory Systems, v.37 (1997) pp.255-259              '  

El lazo y la red elástica son especialmente adecuados para los datos anchos, es decir, los datos con más predictores que las observaciones con lazo y red elástica. Hay predictores redundantes en este tipo de datos. Puede utilizar junto con la validación cruzada para identificar predictores importantes.Lazo

Calcule el ajuste predeterminado.Lazo

[b fitinfo] = lasso(NIR,octane); 

Graficar el número de predictores en la regularización de lazo ajustado como una función de, usando un eje logarítmico.Lambdax

lassoPlot(b,fitinfo,'PlotType','Lambda','XScale','log'); 

Es difícil saber qué valor es apropiado.Lambda Para determinar un buen valor, pruebe a ajustar con la validación cruzada.

tic [b fitinfo] = lasso(NIR,octane,'CV',10); toc 
Elapsed time is 7.353767 seconds. 

Graficar el resultado.

lassoPlot(b,fitinfo,'PlotType','Lambda','XScale','log'); 

Mostrar el valor sugerido de.Lambda

fitinfo.Lambda1SE 
 ans =      0.0302  

Visualice el con MSE mínimo.Lambda

fitinfo.LambdaMinMSE 
 ans =      0.0144  

Examine la calidad del ajuste para el valor sugerido de.Lambda

lambdaindex = fitinfo.Index1SE; mse = fitinfo.MSE(lambdaindex) df = fitinfo.DF(lambdaindex) 
 mse =      0.0528   df =      11  

El ajuste utiliza sólo 11 de los 401 predictores y logra un pequeño MSE validado por Cruz.

Examine la trama de MSE validado por Cruz.

lassoPlot(b,fitinfo,'PlotType','CV'); % Use a log scale for MSE to see small MSE values better set(gca,'YScale','log'); 

Como aumentos (hacia la izquierda), MSE aumenta rápidamente.Lambda Los coeficientes se reducen demasiado y no se ajustan adecuadamente a las respuestas. Como disminuciones, los modelos son más grandes (tienen más coeficientes distintos de cero).Lambda El creciente MSE sugiere que los modelos están sobreajustados.

El conjunto predeterminado de valores no incluye valores lo suficientemente pequeños como para incluir todos los predictores.Lambda En este caso, no parece haber una razón para mirar a valores más pequeños. Sin embargo, si desea valores más pequeños que el valor predeterminado, utilice el parámetro o proporcione una secuencia de valores mediante el parámetro.LambdaRatioLambdaLambda Para obtener más información, consulte la página de referencia.Lazo

La validación cruzada puede ser lenta. Si tiene una licencia de Parallel Computing Toolbox, acelere el cálculo de la estimación de lazo con validación cruzada utilizando la computación paralela. Inicie un grupo paralelo.

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

Establezca la opción de computación paralela y calcule la estimación de lazo.

opts = statset('UseParallel',true); tic; [b fitinfo] = lasso(NIR,octane,'CV',10,'Options',opts); toc 
Elapsed time is 3.799009 seconds. 

La computación en paralelo con dos trabajadores es más rápida en este problema.

Detenga la piscina paralela.

delete(mypool) 
Parallel pool using the 'local' profile is shutting down.