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 red elástica para modelos lineales

Descripción

ejemplo

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

B = lasso(X,y,Name,Value) ajusta las regresiones regularizadas con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, establece elastic net 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

Construya un conjunto de datos con predictores redundantes e identifique esos predictores mediante .lasso

Cree una matriz de 100 variables normales de cinco dimensiones.X Cree un vector de respuesta a partir de solo dos componentes de , 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 elimina los predictores redundantes.lasso

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

Cree una matriz de 100 variables normales de cinco dimensiones.X Cree un vector de respuesta a partir de dos componentes de , 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 mediante 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 cuadrado medio (MSE) con validación cruzada mínima.

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

Visualice las variables en el modelo más escaso 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.lasso

Examine visualmente el error validado 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 sin constante.

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

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

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

Trazar los ajustes validados cruzados.

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

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

Predecir las puntuaciones de los exámenes de los estudiantes usando y el método de red elástica.lasso

Cargue el conjunto de datos.examgrades

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

Divida los datos en conjuntos de entrenamiento y pruebas.

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 regularizado 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 tal 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 los resultados de los exámenes para los datos de la prueba. Compare los valores predichos con las calificaciones reales del examen mediante 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 del 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 vector numérico. tiene longitud, donde está el número de filas de .ynnX La respuesta corresponde a la ésta fila de .y(i)iX

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.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 de red elástica con 10 veces de validación cruzada.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 del , especificado 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.lasso Consulte para obtener más información.Capacidades extendidas

Ejemplo: 'AbsTol',1e–3

Tipos de datos: single | double

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

Ejemplo: 'Alpha',0.5

Tipos de datos: single | double

Valores iniciales para -coefficients 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.lasso 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 y uno de los siguientes:'CV'

  • — utiliza y ajusta el modelo y para estimar el MSE sin validación cruzada.'resubstitution'lassoXy

  • Entero escalar positivo: utiliza -fold de validación cruzada.KlassoK

  • object — utiliza el método de validación cruzada expresado en .cvpartitioncvplassocvp No se puede utilizar una partición con .'leaveout'lasso

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'lassoLambda

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 proporciona , calcula el valor más grande de que proporciona un modelo no nulo.LambdalassoLambda En este caso, proporciona la relación del valor más pequeño al más grande de la secuencia y da la longitud del vector.LambdaRatioNumLambda

  • Si suministra , entonces ignora y .LambdalassoLambdaRatioNumLambda

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

El valor por defecto es una secuencia geométrica de valores, con sólo el valor 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 los más grandes cuando no se suministra , especificado como el par separado por comas que consta de y un escalar positivo.LambdaLambda'LambdaRatio'

Si establece s 0, genera una secuencia predeterminada de valores y reemplaza la más pequeña por .LambdaRatiolassoLambda0

Ejemplo: 'LambdaRatio',1e–2

Tipos de datos: single | double

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

Si el algoritmo ejecuta iteraciones antes de alcanzar la tolerancia de convergencia, la función detiene la iteración 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 las matrices altas.1e51e4

Ejemplo: 'MaxIter',1e3

Tipos de datos: single | double

Número de repeticiones de Monte Carlo para validación cruzada, especificado como el par separado por comas que consta de y un escalar entero positivo.'MCReps'

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

  • Si es un tipo , 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 proporciona , especificado como el par separado por comas que consta de y un escalar entero positivo. puede devolver menos de los ajustes si el error residual de los ajustes cae por debajo de una fracción de umbral de la varianza de .LambdalassoLambda'NumLambda'lassoNumLambday

Ejemplo: 'NumLambda',50

Tipos de datos: single | double

Opción para validar 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 establece para calcular en paralelo.UseParalleltrue El valor predeterminado es .false

  • — Se establece para calcular en paralelo de forma reproducible.UseSubstreamstrue Para la reproducibilidad, establezca en un tipo que permita substreams: o .Streams'mlfg6331_64''mrg32k3a' El valor predeterminado es .false

  • — Un objeto o matriz de celdas que consta de uno de esos objetos.StreamsRandStream Si no especifica , utilice la secuencia predeterminada.Streamslasso

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

Tipos de datos: struct

Nombres de las variables predictoras, en el orden en que aparecen en , especificados como el par separado por comas que consta de y una matriz de cadenas o matriz de celdas 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 termina cuando las estimaciones sucesivas del vector de coeficiente difieren en elL2 norma en una cantidad relativa inferior a .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.lasso Consulte para obtener más información.Capacidades extendidas

Ejemplo: 'Rho',2

Tipos de datos: single | double

Marcador para estandarizar los datos del predictor antes de ajustar los modelos, especificado como el par separado por comas que consta de y uno o .X'Standardize'truefalse Si es , entonces los datos se escalan para tener media cero y una varianza de uno. afecta 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.lasso Consulte para obtener más información.Capacidades extendidas

Tipos de datos: single | double

Pesos de observación, especificados como el par separado por comas que consta de un vector no negativo. tiene longitud, donde está el número de filas de .'Weights'WeightsnnX La función se escala para sumar a .lassoWeights1

Tipos de datos: single | double

Argumentos de salida

contraer todo

Coeficientes ajustados, devueltos como una matriz numérica. es una matriz -por-, donde está 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 interceptación es un campo en .FitInfo

Tipos de datos: single | double

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

Campo en FitInfoDescripción
InterceptTérmino de interceptaciónβ0 para cada modelo lineal, un vector -por-1L
LambdaParámetros Lambda en orden ascendente, un vector -by-1L
AlphaValor del parámetro, un escalarAlpha
DFNúmero de coeficientes distintos de cero para cada valor de , un vector -por-BLambda1L
MSEError cuadrado medio (MSE), un vector -by-1L
PredictorNamesValor del parámetro, almacenado como una matriz de celdas de vectores de caracteresPredictorNames

Si establece el argumento de par nombre-valor en 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, un vector -por-Lambda1L
LambdaMinMSEvalor con el MSE mínimo, unLambda
Lambda1SEEl valor más grande tal que el MSE está dentro de un error estándar del MSE mínimo, un escalarLambda
IndexMinMSEIndice de con el valor , un escalarLambdaLambdaMinMSE
Index1SEIndice 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λlasso

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

  • es el número de observaciones.N

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

  • Xi es datos, un vector de longitud en 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

A medida que aumenta, el número de componentes distintos de cero de disminuye.λβ

El problema del lazo implica laL1 norma de , como se contrasta con el algoritmo de red elástica.β

Red elástica

Para estrictamente entre 0 y 1, y no negativo, la red elástica 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 lo mismo que el lazo cuando es 1.α Para otros valores de , el término sancionaciónα Pα( ) interpola entre elβL1 norma y la al cuadradoβL2 norma de .β A medida que se reduce hacia 0, la red elástica se acerca 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 alternativa de multiplicadores (ADMM).lasso[5] La notación utilizada aquí es la misma que en el documento de referencia. Este método resuelve problemas de la forma

Minimizar l(x)+g(z)

Sujeto a Ax+Bz=c

Usando esta notación, el problema de la regresión del lazo es

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

Sujeto a xz=0

Porque la función de pérdida l(x)=12Axb22 es cuadrática, las actualizaciones iterativas realizadas por el algoritmo equivalen a resolver un sistema lineal de ecuaciones con una sola matriz de coeficiente, pero varios lados derecho. Las actualizaciones realizadas por el algoritmo durante cada iteración son

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

es el conjunto de datos (una matriz alta), contiene los coeficientes, es el parámetro de penalización (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 utilizando la factorización Cholesky porque la matriz de coeficienteslasso ATA+ρI es simétrico y positivo definido. porque ρ no cambia entre iteraciones, la factorización Cholesky se almacena en caché entre iteraciones.

A pesar de que y son matrices altas, aparecen sólo 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 están precalculados y las actualizaciones iterativas entre iteraciones se realizan completamente 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

Introducido en R2011b