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.

RegressionPartitionedLinear

Paquete: classreg.learning.partition
Superclases: RegressionPartitionedModel

Modelo de regresión lineal con validación cruzada para datos de alta cota

Descripción

es un conjunto de modelos de regresión lineal formados en pliegues con validación cruzada.RegressionPartitionedLinear Para obtener un modelo de regresión lineal validado, utilice y especifique una de las opciones de validación cruzada.fitrlinear Puede estimar la calidad predictiva del modelo, o qué tan bien se generaliza el modelo de regresión lineal, utilizando uno o más de estos métodos "kfold": kfoldPredict Y kfoldLoss.

Cada método "kfold" utiliza modelos formados en observaciones en pliegue para predecir la respuesta para las observaciones fuera de pliegue. Por ejemplo, supongamos que se validan de una validación cruzada con cinco pliegues. En este caso, el software asigna aleatoriamente cada observación en cinco grupos aproximadamente del mismo tamaño. El contiene cuatro de los grupos (es decir, aproximadamente 4/5 de los datos) y el contiene el otro grupo (es decir, aproximadamente 1/5 de los datos).pliegue de entrenamientopliegue de prueba En este caso, la validación cruzada procede de la siguiente manera:

  1. El software entrena el primer modelo (almacenado en) utilizando las observaciones de los últimos cuatro grupos y reserva las observaciones en el primer grupo para su validación.CVMdl.Trained{1}

  2. El software entrena el segundo modelo (almacenado en) utilizando las observaciones del primer grupo y los últimos tres grupos.CVMdl.Trained{2} El software reserva las observaciones en el segundo grupo para su validación.

  3. El software procede de una manera similar para el tercer a quinto modelos.

Si valida llamando a kfoldPredict, calcula las predicciones para las observaciones del grupo 1 utilizando el primer modelo, el grupo 2 para el segundo modelo, y así sucesivamente. En Resumen, el software estima una respuesta para cada observación utilizando el modelo entrenado sin esa observación.

Nota

A diferencia de otros modelos de regresión con validación cruzada, los objetos de modelo no almacenan el conjunto de Datos predictores.RegressionPartitionedLinear

Construcción

CVMdl = fitrlinear(X,Y,Name,Value) crea un modelo de regresión lineal validado mediante validación cruzada cuando es,, o.Name'CrossVal''CVPartition''Holdout''KFold' Para obtener más información, consulte.fitrlinear

Propiedades

expandir todo

Propiedades de validación cruzada

Nombre de modelo validado de forma cruzada, especificado como vector de caracteres.

Por ejemplo, especifica un modelo lineal con validación cruzada para la clasificación binaria o la regresión.'Linear'

Tipos de datos: char

Número de pliegues con validación cruzada, especificado como un entero positivo.

Tipos de datos: double

Valores de parámetro de validación cruzada, p. ej., los valores de los argumentos de par nombre-valor utilizados para validar el modelo lineal, especificado como un objeto. no contiene parámetros estimados.ModelParameters

Acceda a las propiedades del uso de notación de puntos.ModelParameters

Número de observaciones en los datos de entrenamiento, especificado como un escalar numérico positivo.

Tipos de datos: double

Partición de datos que indica cómo el software divide los datos en pliegues de validación cruzada, especificados como un modelo.cvpartition

Modelos de regresión lineal formados en pliegues de validación cruzada, especificados como una matriz de celdas de modelos. tiene células, donde está el número de pliegues.RegressionLinearTrainedkk

Tipos de datos: cell

Ponderaciones de observación utilizadas para validar de forma cruzada el modelo, especificado como un vector numérico. tiene elementos.WNumObservations

El software normaliza las ponderaciones utilizadas para la formación.nansum(W)1

Tipos de datos: single | double

Respuestas observadas utilizadas para validar de forma cruzada el modelo, especificado como un vector numérico que contiene elementos.NumObservations

Cada fila de representa la respuesta observada de la observación correspondiente en los Datos predictores.Y

Tipos de datos: single | double

Otras propiedades de regresión

Índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos del predictor que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, entonces esta propiedad está vacía ().[]

Tipos de datos: single | double

Los nombres de predictor en su orden de aparición en los Datos predictores utilizados para entrenar, especificado como una matriz de celdas de vectores de caracteres. tiene una longitud igual al número de variables predictoras en los Datos predictores.CVMdlPredictorNames

Tipos de datos: cell

Nombre de variable de respuesta, especificado como un vector de caracteres.

Tipos de datos: char

Función de transformación de respuesta, especificada como o un identificador de función. describe cómo el software transforma los valores de respuesta sin procesar.'none'ResponseTransform

Para una función o una función que defina, introduzca su identificador de función.MATLAB® Por ejemplo, puede introducir Mdl.ResponseTransform = @functionDónde function acepta un vector numérico de las respuestas originales y devuelve un vector numérico del mismo tamaño que contiene las respuestas transformadas.

Tipos de datos: char | function_handle

Métodos

kfoldLossPérdida de regresión para observaciones no utilizadas en la formación
kfoldPredictPredecir respuestas para observaciones no utilizadas para el entrenamiento

Semántica de copia

Valor. Para saber cómo afectan las clases de valor a las operaciones de copia, consulte.Copiar objetos (MATLAB)

Ejemplos

contraer 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);

Valide de forma cruzada un modelo de regresión lineal. 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,'CrossVal','on','ObservationsIn','columns');

es un modelo con validación cruzada.CVMdlRegressionPartitionedLinear Dado que implementa la validación cruzada de 10 veces de forma predeterminada, contiene un vector de celda de diez modelos.fitrlinearCVMdl.TrainedRegressionLinear Cada celda contiene un modelo de regresión lineal entrenado en nueve pliegues, y luego probado en el pliegue restante.

Predecir las respuestas para las observaciones que no se pliegan y estimar el error de generalización pasando a y, respectivamente.CVMdlkfoldPredictkfoldLoss

oofYHat = kfoldPredict(CVMdl); ge = kfoldLoss(CVMdl)
ge = 0.1748 

La estimación, generalización, error cuadrado medio es 0,1748.

Para determinar una buena fuerza de penalización de lazo para un modelo de regresión lineal que utiliza mínimos cuadrados, implemente la validación cruzada de 5 veces.

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>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 15 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

Introducido en R2016a