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.

selectModels

Clase: RegressionLinear

Seleccione modelos de regresión lineal regularizados ajustados

Descripción

ejemplo

SubMdl = selectModels(Mdl,idx) Devuelve un subconjunto de modelos de regresión lineal entrenados a partir de un conjunto de modelos de regresión lineal () entrenados utilizando diversas fortalezas de regularización.Mdl Los índices corresponden a las fortalezas de regularización y especifican qué modelos devolver.idxMdl.Lambda

Argumentos de entrada

expandir todo

Modelos de regresión lineal formados utilizando diversas fortalezas de regularización, especificadas como un objeto de modelo.RegressionLinear Puede crear un objeto de modelo utilizando.RegressionLinearfitrlinear

Aunque es un objeto de modelo, si = ≥ 2, entonces se puede pensar en modelos entrenados.Mdlnumel(Mdl.Lambda)LMdlL

Índices correspondientes a las fortalezas de regularización, especificados como un vector numérico de enteros positivos. Los valores de deben estar en el intervalo [1,], donde =.idxLLnumel(Mdl.Lambda)

Tipos de datos: double | single

Argumentos de salida

expandir todo

Subconjunto de modelos de regresión lineal entrenados con varias fortalezas de regularización, devueltos como un objeto de modelo.RegressionLinear

Ejemplos

expandir todo

Simular 10000 observaciones de este modelo

<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
<mn>0</mn>
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<mn>2</mn>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
<mn>0</mn>
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>e</mi>
<mo>.</mo>
</mrow>
</math>

  • <math display="block">
    <mrow>
    <mi>X</mi>
    <mo>=</mo>
    <mo stretchy="false">{</mo>
    <msub>
    <mrow>
    <mi>x</mi>
    </mrow>
    <mrow>
    <mn>1</mn>
    </mrow>
    </msub>
    <mo>,</mo>
    <mo>.</mo>
    <mo>.</mo>
    <mo>.</mo>
    <mo>,</mo>
    <msub>
    <mrow>
    <mi>x</mi>
    </mrow>
    <mrow>
    <mn>1</mn>
    <mn>0</mn>
    <mn>0</mn>
    <mn>0</mn>
    </mrow>
    </msub>
    <mo stretchy="false">}</mo>
    </mrow>
    </math>
    es una matriz dispersa 10000-by-1000 con un 10% de cero elementos normales estándar.

  • es un error normal aleatorio con la media 0 y la desviación estándar 0,3.e

rng(1) % For reproducibility n = 1e4; d = 1e3; nz = 0.1; X = sprandn(n,d,nz); Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

Cree un conjunto de 15 puntos fuertes de regularización logarmicamente espaciados de

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>4</mn>
</mrow>
</msup>
</mrow>
</math>
a través de
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
.

Lambda = logspace(-4,-1,15);

Mantenga el 30% de los datos para las pruebas. Identifique los índices de muestreo de prueba.

cvp = cvpartition(numel(Y),'Holdout',0.30); idxTest = test(cvp);

Entrenar un modelo de regresión lineal utilizando las sanciones de lazo con las fortalezas en.Lambda Especifique las fortalezas de regularización, optimizando la función objetiva utilizando SpaRSA y la partición de datos. Para aumentar la velocidad de ejecución, transponer los Datos predictores y especificar que las observaciones se encuentran en columnas.

X = X';  CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','Lambda',Lambda,...     'Solver','sparsa','Regularization','lasso','CVPartition',cvp); Mdl1 = CVMdl.Trained{1}; numel(Mdl1.Lambda)
ans = 15 

es un modelo.Mdl1RegressionLinear Debido a que es un vector de 15 dimensiones de las fortalezas de regularización, se puede pensar en como 15 modelos entrenados, uno para cada fuerza de regularización.LambdaMdl1

Calcule el error cuadrado medio de la muestra de prueba para cada modelo regularizado.

mse = loss(Mdl1,X(:,idxTest),Y(idxTest),'ObservationsIn','columns');

Valores más altos de plomo a la dispersión variable predictora, que es una buena calidad de un modelo de regresión.Lambda Vuelva a entrenar el modelo utilizando todo el conjunto de datos y todas las opciones utilizadas anteriormente, excepto la especificación de partición de datos. Determine el número de coeficientes distintos de cero por modelo.

Mdl = fitrlinear(X,Y,'ObservationsIn','columns','Lambda',Lambda,...     'Solver','sparsa','Regularization','lasso'); numNZCoeff = sum(Mdl.Beta~=0);

En la misma figura, trace el MSE y la frecuencia de los coeficientes distintos de cero para cada fuerza de regularización. Trace todas las variables en la escala de registro.

figure; [h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),...     log10(Lambda),log10(numNZCoeff));  hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} MSE') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') hold off

Seleccione el índice o los índices de ese equilibrio de error de clasificación mínima y la dispersión variable predictora (por ejemplo,).LambdaLambda(11)

idx = 11; MdlFinal = selectModels(Mdl,idx);

es un objeto de modelo entrenado que utiliza como fuerza de regularización.MdlFinalRegressionLinearLambda(11)

Sugerencias

Una forma de crear varios modelos de regresión lineal predictiva es:

  1. Mantenga una parte de los datos para realizar pruebas.

  2. Entrenar un modelo de regresión lineal utilizando.fitrlinear Especifique una cuadrícula de fortalezas de regularización mediante el argumento de par nombre-valor y proporcione los datos de entrenamiento. Devuelve un objeto de modelo, pero contiene un modelo para cada fuerza de regularización.'Lambda'fitrlinearRegressionLinear

  3. Para determinar la calidad de cada modelo regularizado, pase el objeto de modelo devuelto y los datos retenidos a, por ejemplo, loss.

  4. Identifique los índices () de un subconjunto satisfactorio de modelos regularizados y, a continuación, pase el modelo devuelto y los índices a. Devuelve un objeto de modelo, pero contiene modelos regularizados.idxselectModelsselectModelsRegressionLinearnumel(idx)

  5. Para predecir etiquetas de clase para nuevos datos, transfiera los datos y el subconjunto de modelos regularizados a predict.

Consulte también

| | |

Introducido en R2016a