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.

predict

Clase: RegressionLinear

Predecir la respuesta del modelo de regresión lineal

Descripción

ejemplo

YHat = predict(Mdl,X) Devuelve las respuestas previstas para cada observación en los Datos predictores basados en el modelo de regresión lineal entrenado. contiene respuestas para cada fuerza de regularización en.XMdlYHatMdl

ejemplo

YHat = predict(Mdl,X,Name,Value) Devuelve las respuestas previstas con opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, especifique que las columnas de los Datos predictores correspondan a las observaciones.

Argumentos de entrada

expandir todo

Modelo de regresión lineal, especificado como un objeto de modelo.RegressionLinear Puede crear un objeto de modelo utilizando.RegressionLinearfitrlinear

Datos de predictor, especificados como una matriz dispersa o por completo.np Esta orientación indica que las filas corresponden a observaciones individuales y las columnas corresponden a variables predictoras individuales.X

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de cálculo.'ObservationsIn','columns'

La longitud y el número de observaciones deben ser iguales.YX

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

Dimensión de observación de Datos predictores, especificada como el par separado por comas que consta de y o.'ObservationsIn''columns''rows'

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de ejecución de la optimización.'ObservationsIn','columns'

Argumentos de salida

expandir todo

Respuestas previstas, devueltas como una matriz numérica. es el número de observaciones en y es el número de fortalezas de regularización en.nLnXLMdl.Lambda YHat(i,j) es la respuesta para la observación i utilizando el modelo de regresión lineal que tiene fuerza de regularización Mdl.Lambda(j).

La respuesta pronosticada usando el modelo con fuerza de regularización esj y^j=xβj+bj.

  • es una observación de la matriz de Datos predictores y es un vector de fila.xX

  • βj es el vector de columna estimado de los coeficientes. El software almacena este vector en Mdl.Beta(:,j).

  • bj es el sesgo escalar estimado, que el software almacena en Mdl.Bias(j).

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>
    <mrow>
    <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>
    </mrow>
    </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);

Entrenar un modelo de regresión lineal. Reserve el 30% de las observaciones como una muestra de exclusión.

CVMdl = fitrlinear(X,Y,'Holdout',0.3); Mdl = CVMdl.Trained{1}
Mdl =    RegressionLinear          ResponseName: 'Y'     ResponseTransform: 'none'                  Beta: [1000x1 double]                  Bias: -0.0066                Lambda: 1.4286e-04               Learner: 'svm'     Properties, Methods  

es un modelo.CVMdlRegressionPartitionedLinear Contiene la propiedad, que es un array de celdas 1-por-1 sosteniendo un modelo que el software entrenado usando el conjunto de entrenamiento.TrainedRegressionLinear

Extraiga los datos de entrenamiento y prueba de la definición de partición.

trainIdx = training(CVMdl.Partition); testIdx = test(CVMdl.Partition);

Predecir las respuestas de entrenamiento y muestra de prueba.

yHatTrain = predict(Mdl,X(trainIdx,:)); yHatTest = predict(Mdl,X(testIdx,:));

Porque hay una fuerza de regularización en, y son vectores numéricos.MdlyHatTrainyHatTest

Predecir las respuestas del modelo de regresión lineal de mejor rendimiento que utiliza una penalización de lazo y mínimos cuadrados.

Simular 10000 observaciones como en.Predecir respuestas de muestra de prueba

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>5</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(-5,-1,15);

Valide los modelos en cruz. Para aumentar la velocidad de ejecución, transponer los Datos predictores y especificar que las observaciones se encuentran en columnas. Optimice la función objetivo utilizando SpaRSA.

X = X';  CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','KFold',5,'Lambda',Lambda,...     'Learner','leastsquares','Solver','sparsa','Regularization','lasso');  numCLModels = numel(CVMdl.Trained)
numCLModels = 5 

es un modelo.CVMdlRegressionPartitionedLinear Porque implementa la validación cruzada 5 veces, contiene 5 modelos que el software entrena en cada pliegue.fitrlinearCVMdlRegressionLinear

Visualice el primer modelo de regresión lineal entrenado.

Mdl1 = CVMdl.Trained{1}
Mdl1 =    RegressionLinear          ResponseName: 'Y'     ResponseTransform: 'none'                  Beta: [1000x15 double]                  Bias: [1x15 double]                Lambda: [1x15 double]               Learner: 'leastsquares'     Properties, Methods  

es un objeto de modelo. construido por el entrenamiento en los primeros cuatro pliegues.Mdl1RegressionLinearfitrlinearMdl1 Porque es una secuencia de fortalezas de regularización, se puede pensar en como 11 modelos, uno para cada fuerza de regularización en.LambdaMdl1Lambda

Estime el MSE validado en cruz.

mse = kfoldLoss(CVMdl);

Valores más altos de plomo a la dispersión variable predictora, que es una buena calidad de un modelo de regresión.Lambda Para cada fuerza de regularización, entrenar un modelo de regresión lineal utilizando todo el conjunto de datos y las mismas opciones que cuando se revalida los modelos. Determine el número de coeficientes distintos de cero por modelo.

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

En la misma figura, trace el MSE validado en cruz 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

Elija el índice de la fuerza de regularización que equilibra la dispersión variable predictora y el MSE bajo (por ejemplo,).Lambda(10)

idxFinal = 10;

Extraiga el modelo con correspondiente al MSE mínimo.

MdlFinal = selectModels(Mdl,idxFinal)
MdlFinal =    RegressionLinear          ResponseName: 'Y'     ResponseTransform: 'none'                  Beta: [1000x1 double]                  Bias: -0.0050                Lambda: 0.0037               Learner: 'leastsquares'     Properties, Methods  
idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff = 2×1

   100
   200

EstCoeff = Mdl.Beta(idxNZCoeff)
EstCoeff = 2×1

    1.0051
    1.9965

es un modelo con una fuerza de regularización.MdlFinalRegressionLinear Los coeficientes distintos de cero están cerca de los coeficientes que simulan los datos.EstCoeff

Simule 10 nuevas observaciones y pronostique las respuestas correspondientes utilizando el modelo de mejor rendimiento.

XNew = sprandn(d,10,nz); YHat = predict(MdlFinal,XNew,'ObservationsIn','columns');

Capacidades ampliadas

Consulte también

|

Introducido en R2016a