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.

lasso

Regularización de lazo o de red elástica para modelos lineales

Descripción

ejemplo

B = lasso(X,y) Devuelve coeficientes de regresión de mínimos cuadrados ajustados para los modelos lineales de los Datos predictores y la respuesta.Xy Cada columna corresponde a un coeficiente de regularización determinado en.BLambda De forma predeterminada, realiza la regularización de lazo utilizando una secuencia geométrica de valores.LazoLambda

B = lasso(X,y,Name,Value) se ajusta a regresiones regularizadas con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, establece la red elástica como método de regularización, con el parámetro igual a 0,5.'Alpha',0.5Alpha

ejemplo

[B,FitInfo] = lasso(___) también devuelve la estructura, que contiene información sobre el ajuste de los modelos, utilizando cualquiera de los argumentos de entrada de las sintaxis anteriores.FitInfo

Ejemplos

contraer todo

Construir un conjunto de datos con predictores redundantes e identificar los predictores mediante el uso de.Lazo

Cree una matriz de variables normales de 100 5 dimensiones.X Cree un vector de respuesta a partir de solo dos componentes y agregue una pequeña cantidad de ruido.yX

rng default % For reproducibility X = randn(100,5); weights = [0;2;0;-3;0]; % Only two nonzero coefficients y = X*weights + randn(100,1)*0.1; % Small added noise

Construya el ajuste de lazo predeterminado.

B = lasso(X,y);

Encuentre el vector de coeficiente para el valor 25º en.LambdaB

B(:,25)
ans = 5×1

         0
    1.6093
         0
   -2.5865
         0

identifica y quita los predictores redundantes.Lazo

Construya un conjunto de datos con predictores redundantes e identifique esos predictores mediante la validación cruzada.Lazo

Cree una matriz de variables normales de 100 5 dimensiones.X Cree un vector de respuesta a partir de dos componentes y agregue una pequeña cantidad de ruido.yX

rng default % For reproducibility X = randn(100,5); weights = [0;2;0;-3;0]; % Only two nonzero coefficients y = X*weights + randn(100,1)*0.1; % Small added noise

Construya el ajuste de lazo usando la validación cruzada de 10 veces con variables predictoras etiquetadas.

[B,FitInfo] = lasso(X,y,'CV',10,'PredictorNames',{'x1','x2','x3','x4','x5'});

Visualice las variables en el modelo que corresponde al error medio cuadrado de la validación cruzada mínima (MSE).

idxLambdaMinMSE = FitInfo.IndexMinMSE; minMSEModelPredictors = FitInfo.PredictorNames(B(:,idxLambdaMinMSE)~=0)
minMSEModelPredictors = 1x2 cell array
    {'x2'}    {'x4'}

Visualice las variables en el modelo más sparsest dentro de un error estándar del MSE mínimo.

idxLambda1SE = FitInfo.Index1SE; sparseModelPredictors = FitInfo.PredictorNames(B(:,idxLambda1SE)~=0)
sparseModelPredictors = 1x2 cell array
    {'x2'}    {'x4'}

En este ejemplo, identifica los mismos predictores para los dos modelos y quita los predictores redundantes.Lazo

Examine visualmente el error de validación cruzada de varios niveles de regularización.

Cargue los datos de ejemplo.

load acetylene

Cree una matriz de diseño con interacciones y sin término constante.

X = [x1 x2 x3]; D = x2fx(X,'interaction'); D(:,1) = []; % No constant term

Construya el ajuste de lazo usando la validación cruzada de 10 veces. Incluya la salida para que pueda trazar el resultado.FitInfo

rng default % For reproducibility  [B,FitInfo] = lasso(D,y,'CV',10);

Trace los ajustes de validación cruzada.

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

El círculo verde y la línea de puntos ubican el error de validación cruzada mínimo.Lambda El círculo azul y la línea punteada localizan el punto con un error de validación cruzada mínimo más una desviación estándar.

Predecir las puntuaciones del examen de los estudiantes utilizando y el método de red elástica.Lazo

Cargue el conjunto de datos.examgrades

load examgrades X = grades(:,1:4); y = grades(:,5);

Divida los datos en conjuntos de pruebas y entrenamiento.

n = length(y); c = cvpartition(n,'HoldOut',0.3); idxTrain = training(c,1); idxTest = ~idxTrain; XTrain = X(idxTrain,:); yTrain = y(idxTrain); XTest = X(idxTest,:); yTest = y(idxTest);

Encuentre los coeficientes de un modelo de regresión lineal regularizada utilizando la validación cruzada de 10 veces y el método de red elástica con = 0,75.Alpha Utilice el valor más grande de tal forma que el error cuadrado medio (MSE) esté dentro de un error estándar del MSE mínimo.Lambda

[B,FitInfo] = lasso(XTrain,yTrain,'Alpha',0.75,'CV',10); idxLambda1SE = FitInfo.Index1SE; coef = B(:,idxLambda1SE); coef0 = FitInfo.Intercept(idxLambda1SE);

Predecir puntuaciones de examen para los datos de prueba. Compare los valores previstos con las calificaciones reales del examen utilizando una línea de referencia.

yhat = XTest*coef + coef0; hold on scatter(yTest,yhat) plot(yTest,yTest) xlabel('Actual Exam Grades') ylabel('Predicted Exam Grades') hold off

Argumentos de entrada

contraer todo

Datos de predictor, especificados como una matriz numérica. Cada fila representa una observación y cada columna representa una variable predictora.

Tipos de datos: single | double

Datos de respuesta, especificados como un vector numérico. tiene longitud, donde es el número de filas de.ynnX La respuesta corresponde a la fila TH de.y(i)iX

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: realiza una regularización neta elástica con una validación cruzada de 10 veces.lasso(X,y,'Alpha',0.75,'CV',10) El argumento de par nombre-valor establece el parámetro utilizado en la optimización de red elástica.'Alpha',0.75

Tolerancia de error absoluta utilizada para determinar la convergencia de la, especificada como el par separado por comas que consta de y un escalar positivo.Algoritmo ADMM'AbsTol' El algoritmo converge cuando las estimaciones sucesivas del vector de coeficiente difieren en una cantidad menor que.AbsTol

Nota

Esta opción solo se aplica cuando se utiliza en matrices altas.Lazo Consulte para obtener más información.Capacidades extendidas

Ejemplo: 'AbsTol',1e–3

Tipos de datos: single | double

Peso del lazo (L1) versus cresta (L2), especificado como el par separado por comas que consta de un valor escalar positivo en el intervalo.'Alpha'(0,1] El valor representa la regresión de lazo, cerca de los enfoques y otros valores representan la optimización de red elástica.Alpha = 1Alpha0regresión de cresta Ver.Elastic net

Ejemplo: 'Alpha',0.5

Tipos de datos: single | double

Valores iniciales para-coeficientes en, especificados como el par separado por comas que consta de y un vector numérico.xAlgoritmo ADMM'B0'

Nota

Esta opción solo se aplica cuando se utiliza en matrices altas.Lazo Consulte para obtener más información.Capacidades extendidas

Tipos de datos: single | double

Especificación de validación cruzada para estimar el error cuadrado medio (MSE), especificado como el par separado por comas que consta de uno de los siguientes:'CV'

  • — utiliza y para caber el modelo y estimar el MSE sin la validación cruzada.'resubstitution'LazoXy

  • Entero escalar positivo: se pliega la validación cruzada.KLazoK

  • objeto: utiliza el método de validación cruzada expresado en.cvpartitioncvpLazocvp No se puede utilizar una partición con.'leaveout'Lazo

Ejemplo: 'CV',3

Número máximo de coeficientes distintos de cero en el modelo, especificado como el par separado por comas que consta de un escalar entero positivo. devuelve resultados solo para los valores que cumplen este criterio.'DFmax'LazoLambda

Ejemplo: 'DFmax',5

Tipos de datos: single | double

Coeficientes de regularización, especificados como el par separado por comas que consta de y un vector de valores no negativos.'Lambda' Ver.Lazo

  • Si no se suministra, a continuación, calcula el valor más grande de que da un modelo no nulo.LambdaLazoLambda En este caso, da la proporción del valor más pequeño al más grande de la secuencia, y da la longitud del vector.LambdaRatioNumLambda

  • Si proporciona, a continuación, omite y.LambdaLazoLambdaRatioNumLambda

  • Si es así, entonces es el conjunto de valores utilizado para ajustar los modelos con los datos estandarizados para tener cero media y una varianza de uno.StandardizetrueLambdaX

El valor por defecto es una secuencia geométrica de valores, con sólo el más grande capaz de producir =.NumLambdaB0

Ejemplo: 'Lambda',linspace(0,1)

Tipos de datos: single | double

Relación entre los valores más pequeños y más grandes cuando no se suministra, especificado como el par separado por comas que consta de un escalar positivo.LambdaLambda'LambdaRatio'

Si establece = 0, a continuación, genera una secuencia predeterminada de valores y reemplaza el más pequeño con.LambdaRatioLazoLambda0

Ejemplo: 'LambdaRatio',1e–2

Tipos de datos: single | double

Número máximo de iteraciones permitidas, especificadas como el par separado por comas que consta de un escalar entero positivo.'MaxIter'

Si el algoritmo ejecuta iteraciones antes de alcanzar la tolerancia de convergencia, la función deja de iterar y devuelve un mensaje de advertencia.MaxIterRelTol

La función puede devolver más de una advertencia cuando es mayor que.NumLambda1

Los valores predeterminados son para los datos estándar y para matrices altas.1e51e4

Ejemplo: 'MaxIter',1e3

Tipos de datos: single | double

Número de repeticiones de Montecarlo para la validación cruzada, especificadas como el par separado por comas que consta de un escalar entero positivo.'MCReps'

  • Si es o de tipo, debe serlo.CV'resubstitution'cvpartition'resubstitution'MCReps1

  • Si es de tipo a, entonces debe ser mayor que.CVcvpartition'holdout'MCReps1

Ejemplo: 'MCReps',5

Tipos de datos: single | double

El número de valores se utiliza cuando no se suministra, especificado como el par separado por comas que consta de un escalar entero positivo. puede devolver menos que los ajustes si el error residual de los ajustes cae por debajo de una fracción de umbral de la varianza de.LambdaLazoLambda'NumLambda'LazoNumLambday

Ejemplo: 'NumLambda',50

Tipos de datos: single | double

Opción para realizar una validación cruzada en paralelo y especificar las secuencias aleatorias, especificadas como el par separado por comas que consta de y una estructura.'Options' Esta opción requiere.Parallel Computing Toolbox™

Cree la estructura con.Optionsstatset Los campos de opción son:

  • : Se configura para que se calcule en paralelo.UseParalleltrue El valor predeterminado es.false

  • : Se configura para que se calcule en paralelo de forma reproducible.UseSubstreamstrue Para reproducibilidad, establezca un tipo que permita subsecuencias: o.Streams'mlfg6331_64''mrg32k3a' El valor predeterminado es.false

  • — Un objeto o matriz de celdas que consta de un objeto de este tipo.StreamsRandStream Si no se especifica, se utiliza la secuencia predeterminada.StreamsLazo

Ejemplo: 'Options',statset('UseParallel',true)

Tipos de datos: struct

Nombres de las variables predictoras, en el orden en el que aparecen, especificadas como el par separado por comas que consta de una matriz de cadenas o una matriz de vectores de caracteres.X'PredictorNames'

Ejemplo: 'PredictorNames',{'x1','x2','x3','x4'}

Tipos de datos: string | cell

Umbral de convergencia para el algoritmo de descenso de coordenadas, especificado como el par separado por comas que consta de un escalar positivo.[3]'RelTol' El algoritmo finaliza cuando las estimaciones sucesivas del vector de coeficiente difieren en elL2 norma por una cantidad relativa menor que.RelTol

Ejemplo: 'RelTol',5e–3

Tipos de datos: single | double

Parámetro Lagrangian aumentado para el, especificado como el par separado por comas que consta de y un escalar positivo.ρAlgoritmo ADMM'Rho' El valor predeterminado es la selección automática.

Nota

Esta opción solo se aplica cuando se utiliza en matrices altas.Lazo Consulte para obtener más información.Capacidades extendidas

Ejemplo: 'Rho',2

Tipos de datos: single | double

Indicador para estandarizar los Datos predictores antes de ajustar los modelos, especificados como el par separado por comas que consta de y cualquiera o.X'Standardize'truefalse Si es así, entonces los datos se escalan para tener cero media y una varianza de uno. afecta a si la regularización se aplica a los coeficientes en la escala estandarizada o la escala original.StandardizetrueXStandardize Los resultados siempre se presentan en la escala de datos original.

y siempre están centrados.Xy

Ejemplo: 'Standardize',false

Tipos de datos: logical

Valor inicial de la variable dual escalada en el, especificado como el par separado por comas que consta de y un vector numérico.uAlgoritmo ADMM'U0'

Nota

Esta opción solo se aplica cuando se utiliza en matrices altas.Lazo Consulte para obtener más información.Capacidades extendidas

Tipos de datos: single | double

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector no negativo. tiene longitud, donde es el número de filas de.'Weights'WeightsnnX La función se escala para sumar.LazoWeights1

Tipos de datos: single | double

Argumentos de salida

contraer todo

Coeficientes ajustados, devueltos como una matriz numérica. es un-por-matriz, donde es el número de predictores (columnas) en, y es el número de valores.BpLpXLLambda Puede especificar el número de valores mediante el argumento de par nombre-valor.LambdaNumLambda

El coeficiente correspondiente al término de intercepción es un campo en.FitInfo

Tipos de datos: single | double

Ajuste de la información de los modelos lineales, devueltos como una estructura con los campos descritos en esta tabla.

Campo en FitInfoDescripción
InterceptInterceptar términoβ0 para cada modelo lineal, a-por-Vector1L
LambdaLos parámetros lambda en orden ascendente, a-por-Vector1L
AlphaValor del parámetro, un escalarAlpha
DFNúmero de coeficientes distintos de cero en para cada valor de, a-por-VectorBLambda1L
MSEError cuadrado medio (MSE), a-por-Vector1L
PredictorNamesValor del parámetro, almacenado como una matriz de celdas de vectores de caracteresPredictorNames

Si establece el argumento de par nombre-valor para la validación cruzada, la estructura contiene estos campos adicionales.CVFitInfo

Campo en FitInfoDescripción
SEError estándar de MSE para cada uno, calculado durante la validación cruzada, a-por-VectorLambda1L
LambdaMinMSEvalor con el MSE mínimo, un escalarLambda
Lambda1SEEl valor más grande tal que MSE está dentro de un error estándar del MSE mínimo, un escalarLambda
IndexMinMSEÍndice de con el valor, un escalarLambdaLambdaMinMSE
Index1SEÍndice de con el valor, un escalarLambdaLambda1SE

Más acerca de

contraer todo

Lazo

Para un valor dado de, un parámetro no negativo, resuelve el problemaλLazo

minβ0,β(12Ni=1N(yiβ0xiTβ)2+λj=1p|βj|).

  • es el número de observaciones.N

  • yi es la respuesta en la observación.i

  • Xi es datos, un vector de longitud en la observación.pi

  • es un parámetro de regularización no negativo correspondiente a un valor de.λLambda

  • Los parámetrosβ0 y son un escalar y un vector de longitud, respectivamente.βp

Como aumentos, el número de componentes distintos de cero de disminuciones.λβ

El problema del lazo involucra elL1 norma de, como contrastada con el algoritmo de red elástica.β

Elastic net

Para estrictamente entre 0 y 1, y la red elástica no negativa resuelve el problemaαλ

minβ0,β(12Ni=1N(yiβ0xiTβ)2+λPα(β)),

Dónde

Pα(β)=(1α)2β22+αβ1=j=1p((1α)2βj2+α|βj|).

La red elástica es igual que el lazo cuando = 1.α Para otros valores, el plazo de penalizaciónα Pα() interpolar entre elβL1 norma de y el cuadradoβL2 norma de.β Como encoge hacia 0, la red elástica se aproxima a la regresión.αridge

Algoritmos

contraer todo

Algoritmo ADMM

Cuando se opera en matrices altas, utiliza un algoritmo basado en el método de dirección alterna de multiplicadores (ADMM).Lazo[5] La notación utilizada aquí es la misma que en el papel de referencia. Este método resuelve problemas de la forma

Minimize l(x)+g(z)

Subject to Ax+Bz=c

Con esta notación, el problema de regresión de lazo es

Minimize l(x)+g(z)=12Axb22+λz1

Subject to xz=0

Debido a que la función de pérdida l(x)=12Axb22 es cuadrática, las actualizaciones iterativas realizadas por el algoritmo cantidad para resolver un sistema lineal de ecuaciones con una matriz de coeficiente único, pero varios lados de la derecha. Las actualizaciones realizadas por el algoritmo durante cada iteración se

xk+1=(ATA+ρI)1(ATb+ρ(zkuk))zk+1=Sλ/ρ(xk+1+uk)uk+1=uk+xk+1zk+1

es el DataSet (un array alto), contiene los coeficientes, es el parámetro Penalty (parámetro Lagrangian aumentado), es la respuesta (una matriz alta), y es el operador de umbral suave.AxρbS

Sκ(a)={aκ,a>κ0,|a|κa+κ,a<κ.

resuelve el sistema lineal usando la factorización de Cholesky porque la matriz de coeficienteLazo ATA+ρI es simétrico y positivo definitivo. porque ρ no cambia entre iteraciones, la factorización de Cholesky se almacena en caché entre iteraciones.

Aunque son matrices altas, solo aparecen en los términosAb ATA Y ATb. Los resultados de estas dos multiplicaciones de matriz son lo suficientemente pequeños como para caber en la memoria, por lo que son precalculadas y las actualizaciones iterativas entre iteraciones se realizan enteramente dentro de la memoria.

Referencias

[1] Tibshirani, R. “Regression Shrinkage and Selection via the Lasso.” Journal of the Royal Statistical Society. Series B, Vol. 58, No. 1, 1996, pp. 267–288.

[2] Zou, H., and T. Hastie. “Regularization and Variable Selection via the Elastic Net.” Journal of the Royal Statistical Society. Series B, Vol. 67, No. 2, 2005, pp. 301–320.

[3] Friedman, J., R. Tibshirani, and T. Hastie. “Regularization Paths for Generalized Linear Models via Coordinate Descent.” Journal of Statistical Software. Vol. 33, No. 1, 2010. https://www.jstatsoft.org/v33/i01

[4] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning. 2nd edition. New York: Springer, 2008.

[5] Boyd, S. “Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers.” Foundations and Trends in Machine Learning. Vol. 3, No. 1, 2010, pp. 1–122.

Capacidades ampliadas

Consulte también

| | |

Introducido en R2011b