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.

lassoglm

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

Descripción

ejemplo

B = lassoglm(X,y) Devuelve los coeficientes ajustados penalizados, de máxima verosimilitud para los modelos lineales generalizados de los Datos predictores y la respuesta, donde se asume que los valores en tienen una distribución de probabilidad normal.Xyy 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.lassoglmLambda

B = lassoglm(X,y,distr) realiza la regularización de lazo para ajustarse a los modelos que utilizan la distribución de probabilidad.distry

B = lassoglm(X,y,distr,Name,Value) se ajusta a las regresiones lineales generalizadas 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] = lassoglm(___) 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.lassoglm

Cree una matriz aleatoria con 100 observaciones y 10 predictores.X Cree la respuesta distribuida normalmente utilizando sólo cuatro de los predictores y una pequeña cantidad de ruido.y

rng default X = randn(100,10); weights = [0.6;0.5;0.7;0.4]; y = X(:,[2 4 5 7])*weights + randn(100,1)*0.1; % Small added noise

Realice la regularización de lazo.

B = lassoglm(X,y);

Encuentre el vector de coeficiente para el valor 75 en.LambdaB

B(:,75)
ans = 10×1

         0
    0.5431
         0
    0.3944
    0.6173
         0
    0.3473
         0
         0
         0

identifica y quita los predictores redundantes.lassoglm

Construya datos desde un modelo de Poisson e identifique los predictores importantes mediante el uso de.lassoglm

Crear datos con 20 predictores. Cree una variable de respuesta de Poisson utilizando solo tres de los predictores más una constante.

rng default % For reproducibility X = randn(100,20); weights = [.4;.2;.3]; mu = exp(X(:,[5 10 15])*weights + 1); y = poissrnd(mu);

Construya una regularización de lazo validada de forma cruzada de un modelo de regresión de Poisson de los datos.

[B,FitInfo] = lassoglm(X,y,'poisson','CV',10);

Examine la gráfica de validación cruzada para ver el efecto del parámetro de regularización.Lambda

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.

Busque los coeficientes de modelo distintos de cero correspondientes a los dos puntos identificados.

idxLambdaMinDeviance = FitInfo.IndexMinDeviance; mincoefs = find(B(:,idxLambdaMinDeviance))
mincoefs = 7×1

     3
     5
     6
    10
    11
    15
    16

idxLambda1SE = FitInfo.Index1SE; min1coefs = find(B(:,idxLambda1SE))
min1coefs = 3×1

     5
    10
    15

Los coeficientes del punto de error estándar mínimo-más-uno son exactamente los coeficientes utilizados para crear los datos.

Predecir si los estudiantes tienen una B o superior en su último examen mediante el uso de.lassoglm

Cargue el conjunto de datos.examgrades Convierta las últimas calificaciones de examen en un vector lógico, donde representa una calificación de 80 o superior y representa una calificación inferior a 80.10

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

Particionar los datos en conjuntos de entrenamiento y pruebas.

rng default    % Set the seed for reproducibility c = cvpartition(yBinom,'HoldOut',0.3); idxTrain = training(c,1); idxTest = ~idxTrain; XTrain = X(idxTrain,:); yTrain = yBinom(idxTrain); XTest = X(idxTest,:); yTest = yBinom(idxTest);

Realice la regularización de lazo para la regresión de modelo lineal generalizada con validación cruzada de 3 veces en los datos de entrenamiento. Suponga que los valores de están distribuidos binomialmente.y Elija los coeficientes del modelo correspondientes a la desviación mínima esperada.Lambda

[B,FitInfo] = lassoglm(XTrain,yTrain,'binomial','CV',3); idxLambdaMinDeviance = FitInfo.IndexMinDeviance; B0 = FitInfo.Intercept(idxLambdaMinDeviance); coef = [B0; B(:,idxLambdaMinDeviance)]
coef = 5×1

  -21.1911
    0.0235
    0.0670
    0.0693
    0.0949

Predecir calificaciones de exámenes para los datos de prueba utilizando los coeficientes del modelo encontrados en el paso anterior. Especifique la función de enlace para una respuesta binomial utilizando.'logit' Convierta los valores de predicción en un vector lógico.

yhat = glmval(coef,XTest,'logit'); yhatBinom = (yhat>=0.5);

Determine la precisión de las predicciones mediante una matriz de confusión.

c = confusionchart(yTest,yhatBinom);

La función predice correctamente 31 grados de examen. Sin embargo, la función predice incorrectamente que 1 estudiante recibe una B o superior y los estudiantes reciben una calificación por debajo de una B.4

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 vector numérico, Vector lógico, matriz categórica o matriz numérica de dos columnas.

  • Cuando no lo es, es un vector numérico o una matriz categórica de longitud, donde es el número de filas en.distr'binomial'ynnX La respuesta corresponde a la fila en.y(i)iX

  • Cuando es, es uno de los siguientes:distr'binomial'y

    • Vector numérico de longitud, donde cada entrada representa Success () o Failure ()n10

    • Vector lógico de longitud, donde cada entrada representa el éxito o el fracason

    • Matriz categórica de longitud, donde cada entrada representa el éxito o el fracason

    • Matriz numérica de dos columnas, donde la primera columna contiene el número de éxitos para cada observación y la segunda columna contiene el número total de ensayos

Tipos de datos: single | double | logical | categorical

Distribución de los datos de respuesta, especificados como uno de los siguientes:

  • 'normal'

  • 'binomial'

  • 'poisson'

  • 'gamma'

  • 'inverse gaussian'

utiliza el valor predeterminado correspondiente a.lassoglmfunción de enlacedistr Especifique otra función de vínculo mediante el argumento de par nombre-valor.Link

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 suponiendo que los valores de respuesta sean de Poisson distribuidos.lassoglm(X,y,'poisson','Alpha',0.5) El argumento de par nombre-valor establece el parámetro utilizado en la optimización de red elástica.'Alpha',0.5

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 la regresión de cresta de los enfoques y otros valores representan la optimización neta elástica.Alpha = 1Alpha0 Ver.Elastic net

Ejemplo: 'Alpha',0.75

Tipos de datos: single | double

Especificación de validación cruzada para estimar la desviación, especificada como el par separado por comas que consta de uno de los siguientes:'CV'

  • : utiliza y ajusta el modelo y calcula la desviación sin validación cruzada.'resubstitution'lassoglmXy

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

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

Ejemplo: 'CV',10

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

Ejemplo: 'DFmax',25

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, se estima el valor más grande de que da un modelo no nulo.LambdalassoglmLambda 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.LambdalassoglmLambdaRatioNumLambda

  • 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

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.LambdaRatiolassoglmLambda0

Ejemplo: 'LambdaRatio',1e–2

Tipos de datos: single | double

Asignación entre la media de la respuesta y el predictor lineal, especificado como el par separado por comas que consta de y uno de los valores de esta tabla.µXb'Link'

ValorDescripción
'comploglog'

log(–log((1 – µ))) = Xb

, por defecto para la distribución'identity''normal'

µ = Xb

, por defecto para la distribución'log''poisson'

log(µ) = Xb

, por defecto para la distribución'logit''binomial'

log(µ/(1 – µ)) = Xb

'loglog'

log(–log(µ)) = Xb

'probit'

Φ–1(µ) = Xb, donde Φ es la función de distribución acumulativa normal (gaussiana)

, por defecto para la distribución'reciprocal''gamma'

µ–1 = Xb

(un número), por defecto para la distribución (conp'inverse gaussian' p = –2)

µp = Xb

Matriz de celdas del formulario, que contiene tres identificadores de función creados mediante, que definen el vínculo (), la derivada del vínculo () y el vínculo inverso ().{FL FD FI}@FLFDFI O, una estructura de identificadores de función con el campo que contiene, el campo que contiene y el campo que contiene.LinkFLDerivativeFDInverseFI

Función de enlace especificada por el usuario (véase)Función de enlace personalizado

Ejemplo: 'Link','probit'

Tipos de datos: char | string | single | double | cell

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

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',2

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 la desviación de los ajustes cae por debajo de una fracción de umbral de la desviación nula (desviación del ajuste sin ningún predictores).LambdalassoglmLambda'NumLambda'lassoglmNumLambdaX

Ejemplo: 'NumLambda',150

Tipos de datos: single | double

Variable predictora adicional, especificada como el par separado por comas que consta de y un vector numérico con el mismo número de filas que.'Offset'X La función mantiene el valor del coeficiente fijado en.lassoglmOffset1.0

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.Streamslassoglm

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',{'Height','Weight','Age'}

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',2e–3

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.

Ejemplo: 'Standardize',false

Tipos de datos: logical

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 Al menos dos valores deben ser positivos.

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 generalizados, 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
Desviación

Desviación del modelo ajustado para cada valor de, a-por-VectorLambda1L

Si el modelo se valida de forma cruzada, los valores para representar la desviación esperada estimada del modelo aplicado a los nuevos datos, calculado por la validación cruzada.Desviación De lo contrario, se aplica la desviación del modelo ajustado a los datos utilizados para realizar el ajuste.Desviación

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 para cada uno, calculado durante la validación cruzada, a-por-VectorDesviaciónLambda1L
LambdaMinDeviancevalor con la desviación mínima esperada, calculada por la validación cruzada, un escalarLambda
Lambda1SEEl valor más grande que se encuentra dentro de un error estándar del mínimo, un escalarLambdaDesviación
IndexMinDevianceÍndice de con el valor, un escalarLambdaLambdaMinDeviance
Index1SEÍndice de con el valor, un escalarLambdaLambda1SE

Más acerca de

contraer todo

Función de enlace

Una función de enlace () asigna una distribución con la media a un modelo lineal con datos y vector de coeficiente utilizando la fórmulafμμXb

( ) = .fμXb

Puede encontrar las fórmulas para las funciones de vínculo en la descripción del argumento de par nombre-valor.Link Esta tabla enumera las funciones de link que se utilizan típicamente para cada distribución.

Familia de distribuciónFunción de enlace predeterminadaOtras funciones de enlace típicas
'normal''identity' 
'binomial''logit', ,'comploglog''loglog''probit'
'poisson''log' 
'gamma''reciprocal' 
'inverse gaussian'–2 

Lazo

Para un valor no negativo de, resuelve el problemaλlassoglm

minβ0,β(1NDeviance(β0,β)+λj=1p|βj|).

  • La función desviación en esta ecuación es la desviación del modelo que se ajusta a las respuestas usando la intercepciónβ0 y los coeficientes predictores.β La fórmula para Deviance depende del parámetro que proporcione.distrlassoglm Minimizar la desviación-penalizada equivale a maximizar la logverosimilitud-penalizada.λλ

  • es el número de observaciones.N

  • 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,β(1NDeviance(β0,β)+λ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

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] Dobson, A. J. An Introduction to Generalized Linear Models. 2nd edition. New York: Chapman & Hall/CRC Press, 2002.

[6] McCullagh, P., and J. A. Nelder. Generalized Linear Models. 2nd edition. New York: Chapman & Hall/CRC Press, 1989.

[7] Collett, D. Modelling Binary Data. 2nd edition. New York: Chapman & Hall/CRC Press, 2003.

Capacidades ampliadas

Introducido en R2012a