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.

fitrlinear

Ajuste el modelo de regresión lineal a datos de alta cota

Descripción

fitrlinear entrena eficientemente modelos de regresión lineal con Datos predictores de alta dimensión, completos o dispersos. Los modelos de regresión lineal disponibles incluyen máquinas de vectores de soporte regularizados (SVM) y métodos de regresión de mínimos cuadrados. fitrlinear minimiza la función objetiva utilizando técnicas que reducen el tiempo de computación (p. ej., descenso de gradiente estocástico).

Para reducir el tiempo de cálculo en un conjunto de datos de alta dimensión que incluye muchas variables predictoras, entrenar un modelo de regresión lineal mediante el uso de.fitrlinear Para conjuntos de Datos predictores de baja y mediana dimensión, consulte.Alternativas para datos de menor dimensión

ejemplo

Mdl = fitrlinear(X,Y) Devuelve un objeto de modelo de regresión entrenado que contiene los resultados de ajustar un modelo de regresión de máquina vectorial de soporte a los predictores y la respuesta.XY

ejemplo

Mdl = fitrlinear(X,Y,Name,Value) Devuelve un modelo de regresión lineal entrenado con opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, puede especificar la implementación de regresión de mínimos cuadrados, especificar la validación cruzada o especificar el tipo de regularización. Es recomendable realizar una validación cruzada mediante el argumento Pair.KfoldName,Value Los resultados de validación cruzada determinan qué tan bien se generaliza el modelo.

ejemplo

[Mdl,FitInfo] = fitrlinear(___) también devuelve detalles de optimización mediante cualquiera de las sintaxis anteriores. No puede solicitar modelos con validación cruzada.FitInfo

ejemplo

[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(___) también devuelve detalles de optimización de hiperparámetros cuando se pasa un par nombre-valor.OptimizeHyperparameters

Ejemplos

contraer todo

Entrenar un modelo de regresión lineal mediante SVM, doble SGD y regularización de cresta.

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. De forma predeterminada, utiliza máquinas de vectores de soporte con una penalización de cresta y optimiza el uso de SGD dual para SVM.fitrlinear Determine qué tan bien el algoritmo de optimización ajusta el modelo a los datos mediante la extracción de un resumen de ajuste.

[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl =    RegressionLinear          ResponseName: 'Y'     ResponseTransform: 'none'                  Beta: [1000x1 double]                  Bias: -0.0056                Lambda: 1.0000e-04               Learner: 'svm'     Properties, Methods  
FitInfo = struct with fields:
                    Lambda: 1.0000e-04
                 Objective: 0.2725
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 100000
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.4907
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.5816
    DeltaGradientTolerance: 0.1000
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [10000x1 double]
                   History: []
                   FitTime: 0.0924
                    Solver: {'dual'}

es un modelo.MdlRegressionLinear Puede pasar y el entrenamiento o los nuevos datos para inspeccionar el error medio cuadrado de la muestra.Mdlloss O puede pasar y nuevos Datos predictores para predecir respuestas para nuevas observaciones.MdlPredecir

es una matriz de estructura que contiene, entre otras cosas, el estado de terminación () y el tiempo que el solucionador tomó para ajustarse al modelo a los datos ().FitInfoTerminationStatusFitTime Es una buena práctica utilizar para determinar si las mediciones de optimización-terminación son satisfactorias.FitInfo En este caso, alcanzó el número máximo de iteraciones.fitrlinear Dado que el tiempo de entrenamiento es rápido, puede volver a entrenar el modelo, pero aumentar el número de pasadas a través de los datos. O, pruebe con otro solucionador, como LBFGS.

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

En este ejemplo se muestra cómo optimizar los hiperparámetros automáticamente mediante.fitrlinear El ejemplo utiliza datos artificiales (simulados) para el 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);

Busque hiperparámetros que minimicen la pérdida de validación cruzada de cinco veces mediante la optimización automática de hiperparámetros.

Para reproducibilidad, utilice la función de adquisición.'expected-improvement-plus'

hyperopts = struct('AcquisitionFunctionName','expected-improvement-plus'); [Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(X,Y,...     'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',hyperopts)

|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |    1 | Best   |     0.16029 |      1.3457 |     0.16029 |     0.16029 |   2.4206e-09 |          svm | |    2 | Best   |     0.14496 |     0.66482 |     0.14496 |     0.14601 |     0.001807 |          svm | |    3 | Best   |     0.13879 |     0.92612 |     0.13879 |     0.14065 |   2.4681e-09 | leastsquares | |    4 | Best   |       0.115 |     0.57699 |       0.115 |     0.11501 |     0.021027 | leastsquares | |    5 | Accept |     0.44352 |     0.54971 |       0.115 |      0.1159 |       4.6795 | leastsquares | |    6 | Best   |     0.11025 |     0.59978 |     0.11025 |     0.11024 |     0.010671 | leastsquares | |    7 | Accept |     0.13222 |      0.7679 |     0.11025 |     0.11024 |   8.6067e-08 | leastsquares | |    8 | Accept |     0.13262 |     0.65651 |     0.11025 |     0.11023 |   8.5109e-05 | leastsquares | |    9 | Accept |     0.13543 |     0.51929 |     0.11025 |     0.11021 |   2.7562e-06 | leastsquares | |   10 | Accept |     0.15751 |      0.7474 |     0.11025 |     0.11022 |   5.0559e-06 |          svm | |   11 | Accept |     0.40673 |     0.58484 |     0.11025 |      0.1102 |      0.52074 |          svm | |   12 | Accept |     0.16057 |     0.58393 |     0.11025 |      0.1102 |   0.00014292 |          svm | |   13 | Accept |     0.16105 |      1.0615 |     0.11025 |     0.11018 |   1.0079e-07 |          svm | |   14 | Accept |     0.12763 |     0.57142 |     0.11025 |     0.11019 |    0.0012085 | leastsquares | |   15 | Accept |     0.13504 |     0.62582 |     0.11025 |     0.11019 |   1.3981e-08 | leastsquares | |   16 | Accept |     0.11041 |     0.63469 |     0.11025 |     0.11026 |    0.0093968 | leastsquares | |   17 | Best   |     0.10954 |     0.52427 |     0.10954 |     0.11003 |     0.010393 | leastsquares | |   18 | Accept |     0.10998 |     0.54976 |     0.10954 |     0.11002 |     0.010254 | leastsquares | |   19 | Accept |     0.45314 |     0.59717 |     0.10954 |     0.11001 |       9.9932 |          svm | |   20 | Best   |     0.10753 |      1.0083 |     0.10753 |     0.10759 |     0.022576 |          svm | |=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |   21 | Best   |     0.10737 |      1.0968 |     0.10737 |     0.10728 |     0.010171 |          svm | |   22 | Accept |     0.13448 |     0.83027 |     0.10737 |     0.10727 |   1.5344e-05 | leastsquares | |   23 | Best   |     0.10645 |       0.781 |     0.10645 |     0.10565 |     0.015495 |          svm | |   24 | Accept |     0.13598 |     0.77541 |     0.10645 |     0.10559 |   4.5984e-07 | leastsquares | |   25 | Accept |     0.15962 |      0.9332 |     0.10645 |     0.10556 |   1.4302e-08 |          svm | |   26 | Accept |     0.10689 |     0.68007 |     0.10645 |     0.10616 |     0.015391 |          svm | |   27 | Accept |     0.13748 |      0.8129 |     0.10645 |     0.10614 |    1.001e-09 | leastsquares | |   28 | Accept |     0.10692 |     0.78686 |     0.10645 |     0.10639 |     0.015761 |          svm | |   29 | Accept |     0.10681 |     0.73864 |     0.10645 |     0.10649 |     0.015777 |          svm | |   30 | Accept |     0.34314 |     0.50563 |     0.10645 |     0.10651 |      0.39671 | leastsquares |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 86.2813 seconds. Total objective function evaluation time: 22.0367  Best observed feasible point:      Lambda     Learner     ________    _______      0.015495      svm    Observed objective function value = 0.10645 Estimated objective function value = 0.10651 Function evaluation time = 0.781  Best estimated feasible point (according to models):      Lambda     Learner     ________    _______      0.015777      svm    Estimated objective function value = 0.10651 Estimated function evaluation time = 0.78215 
Mdl =    RegressionLinear          ResponseName: 'Y'     ResponseTransform: 'none'                  Beta: [1000x1 double]                  Bias: -0.0018                Lambda: 0.0158               Learner: 'svm'     Properties, Methods  
FitInfo = struct with fields:
                    Lambda: 0.0158
                 Objective: 0.2309
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 99989
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.0641
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.1697
    DeltaGradientTolerance: 0.1000
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [10000x1 double]
                   History: []
                   FitTime: 0.0843
                    Solver: {'dual'}

HyperparameterOptimizationResults =    BayesianOptimization with properties:                        ObjectiveFcn: @createObjFcn/inMemoryObjFcn               VariableDescriptions: [3x1 optimizableVariable]                            Options: [1x1 struct]                       MinObjective: 0.1065                    XAtMinObjective: [1x2 table]              MinEstimatedObjective: 0.1065           XAtMinEstimatedObjective: [1x2 table]            NumObjectiveEvaluations: 30                   TotalElapsedTime: 86.2813                          NextPoint: [1x2 table]                             XTrace: [30x2 table]                     ObjectiveTrace: [30x1 double]                   ConstraintsTrace: []                      UserDataTrace: {30x1 cell}       ObjectiveEvaluationTimeTrace: [30x1 double]                 IterationTimeTrace: [30x1 double]                         ErrorTrace: [30x1 double]                   FeasibilityTrace: [30x1 logical]        FeasibilityProbabilityTrace: [30x1 double]                IndexOfMinimumTrace: [30x1 double]              ObjectiveMinimumTrace: [30x1 double]     EstimatedObjectiveMinimumTrace: [30x1 double]  

Esta técnica de optimización es más simple que la mostrada en, pero no le permite negociar la complejidad del modelo y la pérdida de validación cruzada.Encontrar multa lazo bueno usando validación cruzada

Argumentos de entrada

contraer todo

Datos de predictor, especificados como una matriz dispersa o por completo.np

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

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'

Tipos de datos: single | double

Datos de respuesta, especificados como vector numérico dimensional.n La longitud y el número de observaciones deben ser iguales.YX

Tipos de datos: single | double

Nota

fitrlinear elimina las observaciones faltantes, es decir, las observaciones con cualquiera de estas características:

  • elementos de la respuesta (o)NaNYValidationData{2}

  • Al menos un valor en una observación predictora (fila en o)NaNXValidationData{1}

  • valor o peso (o)NaN0WeightsValidationData{3}

Para la economía de uso de memoria, es recomendable eliminar manualmente las observaciones que contengan valores faltantes de los datos de entrenamiento antes del entrenamiento.

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: especifica para implementar la regresión de mínimos cuadrados, implementar la validación cruzada de 10 veces y especifica que incluya un término de regularización de lazo.Mdl = fitrlinear(X,Y,'Learner','leastsquares','CrossVal','on','Regularization','lasso')

Nota

No puede usar ningún argumento de par nombre-valor de validación cruzada junto con el argumento de par nombre-valor.'OptimizeHyperparameters' Solo puede modificar la validación cruzada mediante el argumento de par nombre-valor.'OptimizeHyperparameters''HyperparameterOptimizationOptions'

Opciones de regresión lineal

contraer todo

La mitad del ancho de la banda sin distinción de épsilon, especificada como el par separado por comas que consta de un valor escalar no negativo. solo se aplica a los alumnos de SVM.'Epsilon''Epsilon'

El valor predeterminado es, que es una estimación de la desviación estándar utilizando el rango intercuartil de la variable de respuesta.Epsiloniqr(Y)/13.49Y Si es igual a cero, el valor predeterminado es 0,1.iqr(Y)Epsilon

Ejemplo: 'Epsilon',0.3

Tipos de datos: single | double

La fuerza del término de regularización, especificada como el par separado por comas que consiste en y, un escalar no negativo, o un vector de valores no negativos.'Lambda''auto'

  • Para, = 1/.'auto'Lambdan

    • Si especifica una validación cruzada, el argumento de par nombre-valor (p. ej.,), es el número de observaciones en pliegue.CrossValn

    • De lo contrario, es el tamaño de muestra de entrenamiento.n

  • Para un vector de valores no negativos, el software optimiza secuencialmente la función objetiva para cada valor diferenciado en orden ascendente.Lambda

    • Si es o y es, entonces el software no utiliza las estimaciones de coeficiente anteriores como un para la siguiente iteración de optimización.Solver'sgd''asgd'Regularización'lasso'comienzo cálido De lo contrario, el software utiliza inicios cálidos.

    • Si es así, cualquier estimación de coeficiente de 0 conserva su valor cuando el software optimiza el uso de los valores subsiguientes en.Regularización'lasso'Lambda

    Devuelve estimaciones de coeficiente para todas las iteraciones de optimización.

Ejemplo: 'Lambda',10.^(-(10:-2:2))

Tipos de datos: char | string | double | single

Tipo de modelo de regresión lineal, especificado como el par separado por comas que consta de y o.'Learner''svm''leastsquares'

En esta tabla, f(x)=xβ+b.

  • es un vector de coeficientes.βp

  • es una observación de variables predictoras.xp

  • es el sesgo escalar.b

ValorAlgoritmoRango de respuestaFunción de pérdida
'leastsquares'Regresión lineal a través de mínimos cuadrados ordinarios∊ (-∞, ∞)yError cuadrado medio (MSE): [y,f(x)]=12[yf(x)]2
'svm'Apoye la regresión de la máquina vectorialIgual que'leastsquares'Insensible a la Epsilon: [y,f(x)]=max[0,|yf(x)|ε]

Ejemplo: 'Learner','leastsquares'

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'

Tipo de penalización de complejidad, especificado como el par separado por comas que consta de y o.'Regularization''lasso''ridge'

El software compone la función objetiva para la minimización de la suma de la función de pérdida promedio (ver) y el término de regularización en esta tabla.Learner

ValorDescripción
'lasso'Penalización de lazo (L1): λj=1p|βj|
'ridge'Pena de cresta (L2): λ2j=1pβj2

Para especificar la intensidad del término de regularización, que se encuentra en las expresiones, utilice.λLambda

El software excluye el término de sesgo (β0) de la sanción por regularización.

Si es, entonces el valor predeterminado es.Solver'sparsa'Regularización'lasso' De lo contrario, el valor predeterminado es.'ridge'

Sugerencia

  • Para la selección de variables predictoras, especifique.'lasso'

  • Para la precisión de la optimización, especifique.'ridge'

Ejemplo: 'Regularization','lasso'

Técnica de minimización de función objetiva, especificada como el par separado por comas que consta de un vector de caracteres o un escalar de cadena, una matriz de cadenas o una matriz de vectores de caracteres con valores de esta tabla.'Solver'

ValorDescripciónRestricciones
'sgd'Descenso del gradiente estocástico (SGD)[5][3] 
'asgd'Descenso de gradiente estocástico promedio (ASGD)[8] 
'dual'SGD dual para SVM[2][7]debe ser y debe ser.Regularización'ridge'Learner'svm'
'bfgs'Algoritmo de Broyden-Fletcher-Goldfarb-Shanno quasi-Newton (BFGS)[4]Ineficiente si es muy alta dimensional.X
'lbfgs'BFGS de memoria limitada (LBFGS)[4]debe ser.Regularización'ridge'
'sparsa'Reconstrucción dispersa por aproximación separable (SpaRSA)[6]debe ser.Regularización'lasso'

Si especifica:

  • Una penalización de cresta (ver) y (100 o menos variables predictoras), entonces el solucionador predeterminado es.Regularizaciónsize(X,1) <= 100'bfgs'

  • Un modelo de regresión de SVM (ver), una penalización de cresta y (más de 100 variables predictoras), entonces el solucionador predeterminado es.Learnersize(X,1) > 100'dual'

  • Una penalización de lazo y contiene 100 o menos variables predictoras, entonces el solucionador predeterminado es.X'sparsa'

De lo contrario, el solucionador predeterminado es.'sgd'

Si especifica una matriz de cadenas o una matriz de celdas de nombres de solucionador, el software utiliza todos los solucionadores en el orden especificado para cada uno.Lambda

Para obtener más información sobre qué solucionador elegir, consulte.Consejos

Ejemplo: 'Solver',{'sgd','lbfgs'}

Estimación de coeficiente lineal inicial (), especificada como el par separado por comas que consiste en un vector numérico o una matriz numérica. es el número de variables predictoras en y es el número de valores de fuerza de regularización (para más detalles, ver).β'Beta'ppLpXLLambda

  • Si especifica un vector dimensional, el software optimiza los tiempos de función objetivo utilizando este proceso.pL

    1. El software optimiza el uso como el valor inicial y el valor mínimo de como la fuerza de regularización.BetaLambda

    2. El software optimiza de nuevo utilizando la estimación resultante de la optimización anterior como un, y el siguiente valor más pequeño en como la fuerza de regularización.comienzo cálidoLambda

    3. El software implementa el paso 2 hasta que agota todos los valores.Lambda

  • Si especifica a-by-Matrix, el software optimiza los tiempos de función objetivo.pLL En la iteración j, el software utiliza Beta(:,j) como el valor inicial y, después de ordenarlo en orden ascendente, utilizaLambda Lambda(j) como la fuerza de regularización.

Si usted fija, después el software ignora.'Solver','dual'Beta

Tipos de datos: single | double

La estimación de intercepción inicial (), especificada como el par separado por comas que consta de un vector numérico o una cota numérica o una dimensión. es el número de valores de fuerza de regularización (para obtener más información, consulte).b'Bias'LLLambda

  • Si especifica un escalar, el software optimiza los tiempos de función objetivo utilizando este proceso.L

    1. El software optimiza el uso como el valor inicial y el valor mínimo de como la fuerza de regularización.BiasLambda

    2. El utiliza la estimación resultante como la siguiente iteración de optimización y utiliza el siguiente valor más pequeño como la fuerza de regularización.comienzo cálidoLambda

    3. El software implementa el paso 2 hasta que agota todos los valores.Lambda

  • Si especifica un vector dimensional, el software optimiza los tiempos de función objetivo.LL En la iteración j, el software utiliza Bias(j) como el valor inicial y, después de ordenarlo en orden ascendente, utilizaLambda Lambda(j) como la fuerza de regularización.

  • Por defecto:

    • Si es así, el promedio ponderado de para la formación o, para la validación cruzada, respuestas en-Fold.Learner'leastsquares'BiasY

    • Si es así, es la mediana ponderada de toda la formación o, para la validación cruzada, las observaciones en pliegue que son mayores que.Learner'svm'BiasYEpsilon

Tipos de datos: single | double

Indicador de inclusión de intersección de modelo lineal, especificado como el par separado por comas que consta de y o.'FitBias'truefalse

ValorDescripción
trueEl software incluye el término de sesgo en el modelo lineal y, a continuación, lo estima.b
falseEl software establece = 0 durante la estimación.b

Ejemplo: 'FitBias',false

Tipos de datos: logical

Marcar para ajustar la intercepción del modelo lineal después de la optimización, especificada como el par separado por comas que consta de y o.'PostFitBias'truefalse

ValorDescripción
falseEl software estima el término de sesgo y los coeficientes durante la optimización.bβ
true

Para estimar, el software:b

  1. Estimaciones y uso del modelo.βb

  2. Calcula los residuales.

  3. Reacondicionamientos.b Para los mínimos cuadrados, es el promedio ponderado de los residuos.b Para la regresión de SVM, es la mediana ponderada entre todos los residuales con una magnitud mayor que.bEpsilon

Si especifica, debe ser true.trueFitBias

Ejemplo: 'PostFitBias',true

Tipos de datos: logical

Nivel de verbosidad, especificado como el par separado por comas que consta de un entero no negativo. controla la cantidad de información de diagnóstico'Verbose'Verbose fitrlinear aparece en la línea de comandos.

ValorDescripción
0fitrlinear no muestra información de diagnóstico.
1fitrlinear muestra y almacena periódicamente el valor de la función objetiva, la magnitud del degradado y otra información de diagnóstico. contiene la información de diagnóstico.FitInfo.History
Cualquier otro entero positivofitrlinear muestra y almacena información de diagnóstico en cada iteración de optimización. contiene la información de diagnóstico.FitInfo.History

Ejemplo: 'Verbose',1

Tipos de datos: double | single

Las opciones de Solver SGD y ASGD

contraer todo

Tamaño de mini lote, especificado como el par separado por comas que consta de un entero positivo.'BatchSize' En cada iteración, el software estima el subdegradado utilizando observaciones de los datos de entrenamiento.BatchSize

  • Si es una matriz numérica, el valor predeterminado es.X10

  • Si es una matriz dispersa, el valor predeterminado es, donde (el de).Xmax([10,ceil(sqrt(ff))])ff = numel(X)/nnz(X)factor de plenitudX

Ejemplo: 'BatchSize',100

Tipos de datos: single | double

Velocidad de aprendizaje, especificada como el par separado por comas que consta de un escalar positivo. especifica cuántos pasos se han de realizar por iteración.'LearnRate'LearnRate En cada iteración, el degradado especifica la dirección y la magnitud de cada paso.

  • Si es así, especifica la tasa de aprendizaje inicialRegularización'ridge'LearnRateγ0. El software determina la velocidad de aprendizaje para la iteración,t ΓtUsando

    γt=γ0(1+λγ0t)c.

    • es el valor de.λLambda

    • Si es, entonces = 1.Solver'sgd'c

    • Si es así, entonces es:Solver'asgd'c

      • 2/3 si esLearner'leastsquares'

      • 3/4 si esLearner'svm'[8]

  • Si es, entonces, para todas las iteraciones, es constante.Regularización'lasso'LearnRate

De forma predeterminada, es, donde es si las observaciones componen las columnas de, y de lo contrario.LearnRate1/sqrt(1+max((sum(X.^2,obsDim))))obsDim1X2

Ejemplo: 'LearnRate',0.01

Tipos de datos: single | double

Marcar para disminuir la velocidad de aprendizaje cuando el software detecta la divergencia (es decir, sobrepisar el mínimo), especificado como el par separado por comas que consiste en y o.'OptimizeLearnRate'truefalse

Si es, entonces:OptimizeLearnRate'true'

  1. Para las pocas iteraciones de optimización, el software comienza la optimización utilizando como la tasa de aprendizaje.LearnRate

  2. Si el valor de la función objetiva aumenta, el software se reinicia y utiliza la mitad del valor actual de la tasa de aprendizaje.

  3. El software recorre en iteración el paso 2 hasta que la función objetiva disminuye.

Ejemplo: 'OptimizeLearnRate',true

Tipos de datos: logical

Número de minilotes entre ejecuciones de truncamiento de lazo, especificadas como el par separado por comas que consta de un entero positivo.'TruncationPeriod'

Después de una ejecución de truncamiento, el software aplica un umbral suave a los coeficientes lineales. Es decir, después de procesar = mini-lotes, el software trunca el coeficiente estimado usandokTruncationPeriodj

β^j={β^jutifβ^j>ut,0if|β^j|ut,β^j+utifβ^j<ut.

  • Para SGD, β^j es la estimación de coeficiente después de procesar mini-lotes.jk ut=kγtλ. Γt es la velocidad de aprendizaje en la iteración. es el valor de.tλLambda

  • Para ASGD, β^j es el coeficiente de estimación promediado después de procesar mini-lotes,jk ut=kλ.

Si es, después el software ignora.Regularización'ridge'TruncationPeriod

Ejemplo: 'TruncationPeriod',100

Tipos de datos: single | double

Otras opciones de regresión

contraer todo

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico de valores positivos.'Weights' fitrlinear pesa las observaciones con el valor correspondiente en.XWeights El tamaño de debe ser igual, el número de observaciones en.WeightsnX

fitrlinear Normaliza para sumar a 1.Weights

Tipos de datos: double | single

Nombre de variable de respuesta, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena.'ResponseName'

  • Si proporciona, puede usar para especificar un nombre para la variable de respuesta.Y'ResponseName'

  • Si usted suministra o, entonces usted no puede utilizar.ResponseVarNameFórmula'ResponseName'

Ejemplo: 'ResponseName','response'

Tipos de datos: char | string

Transformación de respuesta, especificada como el par separado por comas que consta de y uno o un identificador de función.'ResponseTransform''none' El valor predeterminado es, que significa, o ninguna transformación.'none'@(y)y Para una función o una función que defina, utilice su manejador de funciones.MATLAB® El identificador de función debe aceptar un vector (los valores de respuesta originales) y devolver un vector del mismo tamaño (los valores de respuesta transformados).

Ejemplo: Supongamos que crea un identificador de función que aplica una transformación exponencial a un vector de entrada mediante el uso de.myfunction = @(y)exp(y) A continuación, puede especificar la transformación de respuesta como.'ResponseTransform',myfunction

Tipos de datos: char | string | function_handle

Opciones de validación cruzada

contraer todo

Indicador de validación cruzada, especificado como el par separado por comas que consta de y o.'Crossval''on''off'

Si se especifica, el software implementa la validación cruzada de 10 veces.'on'

Para invalidar esta configuración de validación cruzada, use uno de estos argumentos de par nombre-valor:, o.CVPartitionHoldoutKFold Para crear un modelo validado de forma cruzada, puede usar un argumento de par nombre-valor de validación cruzada a la vez.

Ejemplo: 'Crossval','on'

Partición de validación cruzada, especificada como el par separado por comas que consta de un objeto de partición creado por.'CVPartition'cvpartitioncvpartition El objeto de partición especifica el tipo de validación cruzada y también la indización para conjuntos de entrenamiento y validación.

Para crear un modelo con validación cruzada, puede utilizar una de estas cuatro opciones solamente:, o.'CVPartition''Holdout''KFold'

Fracción de datos utilizada para la validación de exclusión, especificada como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Holdout' Si especifica 'Holdout',p, a continuación, el software:

  1. Reservas al azar p*100% de los datos como datos de validación y entrena el modelo utilizando el resto de los datos

  2. Almacena el modelo compacto y entrenado en la propiedad del modelo con validación cruzada.Trained

Para crear un modelo con validación cruzada, puede utilizar una de estas cuatro opciones solamente:, o.'CVPartition''Holdout''KFold'

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

Número de pliegues que se utilizarán en un clasificador con validación cruzada, especificado como el par separado por comas y que consta de un valor entero positivo mayor que 1.'KFold' Si especifica, p. ej., 'KFold',k, a continuación, el software:

  1. Divide aleatoriamente los datos en conjuntosk

  2. Para cada conjunto, reserva el conjunto como datos de validación y entrena el modelo utilizando el otro k – 1 Establece

  3. Almacena el k modelos compactos y entrenados en las celdas de un k-por-1 vector de celda en la propiedad del modelo validado por la Cruz.Trained

Para crear un modelo con validación cruzada, puede utilizar una de estas cuatro opciones solamente:, o.'CVPartition''Holdout''KFold'

Ejemplo: 'KFold',8

Tipos de datos: single | double

Los controles de convergencia SGD y ASGD

contraer todo

Número máximo de lotes a procesar, especificado como el par separado por comas que consta de un entero positivo.'BatchLimit' Cuando el software procesa lotes, finaliza la optimización.BatchLimit

  • Por defecto:

    • El software pasa a través de los tiempos de datos.PassLimit

    • Si especifica varios solucionadores y utiliza (a) SGD para obtener una aproximación inicial para el siguiente solucionador, entonces el valor predeterminado es. es el valor del argumento de par nombre-valor.ceil(1e6/BatchSize)BatchSize'BatchSize'

  • Si especifica y, a continuación, el software elige el argumento que resulta en el procesamiento de la menor cantidad de observaciones.'BatchLimit''PassLimit'

  • Si especifica pero no, el software procesa suficientes lotes para completar hasta un paso completo a través de los datos.'BatchLimit''PassLimit'

Ejemplo: 'BatchLimit',100

Tipos de datos: single | double

Tolerancia relativa en los coeficientes lineales y el término de sesgo (intercepción), especificado como el par separado por comas que consta de un escalar no negativo.'BetaTolerance'

Dejar Bt=[βtbt], es decir, el vector de los coeficientes y el término de sesgo en la iteración de optimización.t Si BtBt1Bt2<BetaTolerance, la optimización finaliza.

Si el software converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

Ejemplo: 'BetaTolerance',1e-6

Tipos de datos: single | double

Número de lotes que se procesan antes de la siguiente comprobación de convergencia, especificado como el par separado por comas y que consta de un entero positivo.'NumCheckConvergence'

Para especificar el tamaño del lote, consulte.BatchSize

El software comprueba la convergencia de aproximadamente 10 veces por paso a través de todo el conjunto de datos de forma predeterminada.

Ejemplo: 'NumCheckConvergence',100

Tipos de datos: single | double

Número máximo de pasadas a través de los datos, especificadas como el par separado por comas que consta de un entero positivo.'PassLimit'

fitrlinear procesa todas las observaciones cuando completa una pasada a través de los datos.

Cuando fitrlinear pasa a través de los tiempos de datos, finaliza la optimización.PassLimit

Si especifica y, a continuación,'BatchLimit'PassLimit fitrlinear elige el argumento que resulta en el procesamiento de la menor cantidad de observaciones. Para obtener más información, consulte.Algoritmos

Ejemplo: 'PassLimit',5

Tipos de datos: single | double

Datos para la detección de convergencia de optimización, especificados como el par separado por comas que consta de una matriz de celdas.'ValidationData'

Durante la optimización, el software estima periódicamente la pérdida de.ValidationData Si aumenta la pérdida de datos de validación, el software finaliza la optimización. Para obtener más información, consulte.Algoritmos Para optimizar los hiperparámetros mediante la validación cruzada, consulte Opciones de validación cruzada, como.CrossVal

  • debe contener una matriz de Datos predictores, por o por completo o disperso, que tenga la misma orientación que.ValidationData(1)mppmX Las variables predictoras en los datos de entrenamiento y deben corresponder.XValidationData{1} El número de observaciones en ambos sets puede variar.

  • debe contener una matriz de respuestas con la longitud correspondiente al número de observaciones en.ValidationData(2)mValidationData{1}

  • Opcionalmente, puede contener un vector numérico dimensional de ponderaciones de observación.ValidationData(3)m El software normaliza los pesos con los datos de validación para que sumará a 1.

Si especifica, a continuación, para mostrar la pérdida de validación en la línea de comandos, especifique un valor mayor que 0 para.ValidationDataVerbose

Si el software converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

De forma predeterminada, el software no detecta la convergencia supervisando la pérdida de datos de validación.

Tolerancia de degradado absoluta, especificada como el par separado por comas que consta de un escalar no negativo. se aplica a estos valores de:,, y.'GradientTolerance'GradientToleranceSolver'bfgs''lbfgs''sparsa'

Dejar t ser el vector de degradado de la función objetiva con respecto a los coeficientes y el término de sesgo en la iteración de optimización.t Si t=max|t|<GradientTolerance, la optimización finaliza.

Si también especifica, la optimización finaliza cuandoBetaTolerance fitrlinear satisface cualquier criterio de detención.

Si fitrlinear converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver Lo contrario fitrlinear utiliza el siguiente solucionador especificado en.Solver

Ejemplo: 'GradientTolerance',eps

Tipos de datos: single | double

Número máximo de iteraciones de optimización, especificadas como el par separado por comas que consta de un entero positivo. se aplica a estos valores de:,, y.'IterationLimit'IterationLimitSolver'bfgs''lbfgs''sparsa'

Ejemplo: 'IterationLimit',1e7

Tipos de datos: single | double

Los controles duales de convergencia de optimización SGD

contraer todo

Tolerancia relativa en los coeficientes lineales y el término de sesgo (intercepción), especificado como el par separado por comas que consta de un escalar no negativo.'BetaTolerance'

Dejar Bt=[βtbt], es decir, el vector de los coeficientes y el término de sesgo en la iteración de optimización.t Si BtBt1Bt2<BetaTolerance, la optimización finaliza.

Si también especifica, la optimización finaliza cuando el software satisface cualquier criterio de detención.DeltaGradientTolerance

Si el software converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

Ejemplo: 'BetaTolerance',1e-6

Tipos de datos: single | double

Tolerancia de diferencia de degradado entre los violadores de grupo superior e inferior, especificados como el par separado por comas que consta de un escalar no negativo. se aplica al valor de Only.Las condiciones de complementariedad de Karush-Kuhn-Tucker (KKT)'DeltaGradientTolerance'DeltaGradientTolerance'dual'Solver

  • Si la magnitud de los violadores KKT es menor que, entoncesDeltaGradientTolerance fitrlinear finaliza la optimización.

  • Si fitrlinear converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver Lo contrario fitrlinear utiliza el siguiente solucionador especificado en.Solver

Ejemplo: 'DeltaGapTolerance',1e-2

Tipos de datos: double | single

Número de pasadas a través del conjunto de datos completo para procesar antes de la siguiente comprobación de convergencia, especificada como el par separado por comas que consta de un entero positivo y otro.'NumCheckConvergence'

Ejemplo: 'NumCheckConvergence',100

Tipos de datos: single | double

Número máximo de pasadas a través de los datos, especificadas como el par separado por comas que consta de un entero positivo.'PassLimit'

Cuando el software completa una pasada a través de los datos, ha procesado todas las observaciones.

Cuando el software pasa a través de los tiempos de datos, finaliza la optimización.PassLimit

Ejemplo: 'PassLimit',5

Tipos de datos: single | double

Datos para la detección de convergencia de optimización, especificados como el par separado por comas que consta de una matriz de celdas.'ValidationData'

Durante la optimización, el software estima periódicamente la pérdida de.ValidationData Si aumenta la pérdida de datos de validación, el software finaliza la optimización. Para obtener más información, consulte.Algoritmos Para optimizar los hiperparámetros mediante la validación cruzada, consulte Opciones de validación cruzada, como.CrossVal

  • debe contener una matriz de Datos predictores, por o por completo o disperso, que tenga la misma orientación que.ValidationData(1)mppmX Las variables predictoras en los datos de entrenamiento y deben corresponder.XValidationData{1} El número de observaciones en ambos sets puede variar.

  • debe contener una matriz de respuestas con la longitud correspondiente al número de observaciones en.ValidationData(2)mValidationData{1}

  • Opcionalmente, puede contener un vector numérico dimensional de ponderaciones de observación.ValidationData(3)m El software normaliza los pesos con los datos de validación para que sumará a 1.

Si especifica, a continuación, para mostrar la pérdida de validación en la línea de comandos, especifique un valor mayor que 0 para.ValidationDataVerbose

Si el software converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

De forma predeterminada, el software no detecta la convergencia supervisando la pérdida de datos de validación.

Los controles de convergencia BFGS, LBFGS y SpaRSA

contraer todo

Tolerancia relativa en los coeficientes lineales y el término de sesgo (intercepción), especificado como el par separado por comas que consta de un escalar no negativo.'BetaTolerance'

Dejar Bt=[βtbt], es decir, el vector de los coeficientes y el término de sesgo en la iteración de optimización.t Si BtBt1Bt2<BetaTolerance, la optimización finaliza.

Si también especifica, la optimización finaliza cuando el software satisface cualquier criterio de detención.GradientTolerance

Si el software converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

Ejemplo: 'BetaTolerance',1e-6

Tipos de datos: single | double

Tolerancia de degradado absoluta, especificada como el par separado por comas que consta de un escalar no negativo.'GradientTolerance'

Dejar t ser el vector de degradado de la función objetiva con respecto a los coeficientes y el término de sesgo en la iteración de optimización.t Si t=max|t|<GradientTolerance, la optimización finaliza.

Si también especifica, la optimización finaliza cuando el software satisface cualquier criterio de detención.BetaTolerance

Si el software converge para el último solucionador especificado en el software, la optimización finaliza. De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

Ejemplo: 'GradientTolerance',1e-5

Tipos de datos: single | double

Tamaño del búfer de historial para la aproximación de hessian, especificado como el par separado por comas que consta de un entero positivo.'HessianHistorySize' Es decir, en cada iteración, el software compone el hessian utilizando estadísticas de las últimas iteraciones.HessianHistorySize

El software no es compatible con SpaRSA.'HessianHistorySize'

Ejemplo: 'HessianHistorySize',10

Tipos de datos: single | double

Número máximo de iteraciones de optimización, especificadas como el par separado por comas que consta de un entero positivo. se aplica a estos valores de:,, y.'IterationLimit'IterationLimitSolver'bfgs''lbfgs''sparsa'

Ejemplo: 'IterationLimit',500

Tipos de datos: single | double

Datos para la detección de convergencia de optimización, especificados como el par separado por comas que consta de una matriz de celdas.'ValidationData'

Durante la optimización, el software estima periódicamente la pérdida de.ValidationData Si aumenta la pérdida de datos de validación, el software finaliza la optimización. Para obtener más información, consulte.Algoritmos Para optimizar los hiperparámetros mediante la validación cruzada, consulte Opciones de validación cruzada, como.CrossVal

  • debe contener una matriz de Datos predictores, por o por completo o disperso, que tenga la misma orientación que.ValidationData(1)mppmX Las variables predictoras en los datos de entrenamiento y deben corresponder.XValidationData{1} El número de observaciones en ambos sets puede variar.

  • debe contener una matriz de respuestas con la longitud correspondiente al número de observaciones en.ValidationData(2)mValidationData{1}

  • Opcionalmente, puede contener un vector numérico dimensional de ponderaciones de observación.ValidationData(3)m El software normaliza los pesos con los datos de validación para que sumará a 1.

Si especifica, a continuación, para mostrar la pérdida de validación en la línea de comandos, especifique un valor mayor que 0 para.ValidationDataVerbose

Si el software converge para el último solucionador especificado en, a continuación, finaliza la optimización.Solver De lo contrario, el software utiliza el siguiente solucionador especificado en.Solver

De forma predeterminada, el software no detecta la convergencia supervisando la pérdida de datos de validación.

La optimización de hiperparámetros

contraer todo

Parámetros para optimizar, especificados como el par separado por comas que consta de uno de los siguientes:'OptimizeHyperparameters'

  • — No optimice.'none'

  • Uso.'auto'{'Lambda','Learner'}

  • : Optimice todos los parámetros elegibles.'all'

  • Matriz de cadenas o matriz de celdas de nombres de parámetro elegibles.

  • Vector de objetos, normalmente la salida de.optimizableVariablehiperparámetros

La optimización intenta minimizar la pérdida de validación cruzada (error) para variando los parámetros.fitrlinear Para controlar el tipo de validación cruzada y otros aspectos de la optimización, utilice el par nombre-valor.HyperparameterOptimizationOptions

Nota

valores reemplazan los valores que se establecen con otros argumentos de par nombre-valor.'OptimizeHyperparameters' Por ejemplo, si se establece en hace que los valores se apliquen.'OptimizeHyperparameters''auto''auto'

Los parámetros elegibles para son:fitrlinear

  • — busca entre valores positivos, de forma predeterminada, con escala logaritmo en el rango.Lambdafitrlinear[1e-5/NumObservations,1e5/NumObservations]

  • — busca entre y.Learnerfitrlinear'svm''leastsquares'

  • — busca entre y.Regularizaciónfitrlinear'ridge''lasso'

Establezca parámetros no predeterminados pasando un vector de objetos que tienen valores no predeterminados.optimizableVariable Por ejemplo,

load carsmall params = hyperparameters('fitrlinear',[Horsepower,Weight],MPG); params(1).Range = [1e-3,2e4];

Pase como el valor de.paramsOptimizeHyperparameters

De forma predeterminada, la visualización iterativa aparece en la línea de comandos y los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y los trazados, la función objetivo es log(1 + cross-validation loss) para la regresión y la tasa de clasificación errónea para la clasificación. Para controlar la visualización iterativa, establezca el campo del argumento de par nombre-valor.Verbose'HyperparameterOptimizationOptions' Para controlar los trazados, establezca el campo del argumento de par nombre-valor.ShowPlots'HyperparameterOptimizationOptions'

Para ver un ejemplo, vea.Optimice una regresión lineal

Ejemplo: 'OptimizeHyperparameters','auto'

Opciones de optimización, especificadas como el par separado por comas que consta de una estructura.'HyperparameterOptimizationOptions' Este argumento modifica el efecto del argumento de par nombre-valor.OptimizeHyperparameters Todos los campos de la estructura son opcionales.

Nombre de campoValoresPredeterminado
Optimizer
  • — Utilice la optimización bayesiana.'bayesopt' Internamente, esta configuración llama.bayesopt

  • : Utilice la búsqueda de cuadrícula con valores por dimensión.'gridsearch'NumGridDivisions

  • — Búsqueda aleatoria entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en orden aleatorio, utilizando muestreo uniforme sin sustitución de la rejilla.'gridsearch' Después de la optimización, puede obtener una tabla en orden de cuadrícula mediante el comando.sortrows(Mdl.HyperparameterOptimizationResults)

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Las funciones de adquisición cuyos nombres incluyen no producen resultados reproducibles porque la optimización depende del tiempo de ejecución de la función objetiva.per-second Las funciones de adquisición cuyos nombres incluyen modificar su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte.Tipos de función de adquisición

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsNúmero máximo de evaluaciones de funciones objetivas.para o, y toda la rejilla para30'bayesopt''randomsearch''gridsearch'
MaxTime

Límite de tiempo, especificado como real positivo. El límite de tiempo es en segundos, medido por y.tictoc El tiempo de ejecución puede exceder porque no interrumpe las evaluaciones de funciones.MaxTimeMaxTime

Inf
NumGridDivisionsPara el número de valores de cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que da el número de valores para cada dimensión, o un escalar que se aplica a todas las dimensiones. Este campo se omite para las variables categóricas.10
ShowPlotsValor lógico que indica si se mostrarán los trazados. Si, este campo traza el mejor valor de la función objetiva con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es así, también traza un modelo de la función objetiva contra los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se guardan los resultados cuando es.Optimizer'bayesopt' Si, este campo sobrescribe una variable de espacio de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Mostrar en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Visualización iterativa con información adicional2

Para obtener información detallada, vea el argumento de par nombre-valor.bayesoptVerbose

1
UseParallelValor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere.Parallel Computing Toolbox™ Para obtener más información, consulte.Optimización bayesiana paralelafalse
Repartition

Valor lógico que indica si se vuelve a particionar la validación cruzada en cada iteración. Si, el optimizador utiliza una sola partición para la optimización.false

normalmente proporciona los resultados más sólidos, ya que esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, requiere al menos el doble de evaluaciones de función.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, creado por.cvpartitioncvpartitionSi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de exclusión.(0,1)
KfoldUn entero mayor que 1.

Ejemplo: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Tipos de datos: struct

Argumentos de salida

contraer todo

Modelo de regresión lineal entrenado, devuelto como objeto de modelo o objeto de modelo validado de forma cruzada.RegressionLinearRegressionPartitionedLinear

Si establece cualquiera de los argumentos de par nombre-valor,, o, a continuación, es un objeto de modelo validado por Cruz.KFoldHoldoutCrossValCVPartitionMdlRegressionPartitionedLinear De lo contrario, es un objeto de modelo.MdlRegressionLinear

Para hacer referencia a las propiedades de, utilice notación de puntos.Mdl Por ejemplo, escriba en la ventana de comandos para mostrar el vector o la matriz de los coeficientes estimados.Mdl.Beta

Nota

A diferencia de otros modelos de regresión, y para el uso de memoria económica, y los objetos de modelo no almacenan los datos de entrenamiento ni los detalles de optimización (por ejemplo, el historial de convergencia).RegressionLinearRegressionPartitionedLinear

Detalles de optimización, devueltos como una matriz de estructura.

Los campos especifican los valores finales o las especificaciones del argumento de par nombre-valor, por ejemplo, es el valor de la función objetivo cuando finaliza la optimización.Objective Las filas de campos multidimensionales corresponden a los valores de y las columnas corresponden a los valores de.LambdaSolver

Esta tabla describe algunos campos notables.

CampoDescripción
TerminationStatus
  • Motivo de la terminación de la optimización

  • Corresponde a un valor enTerminationCode

FitTimeTiempo transcurrido, reloj de pared en segundos
History

Una matriz de estructura de información de optimización para cada iteración. El campo almacena los tipos de solucionador mediante codificación de enteros.Solver

EnteroSolver
1Sgd
2ASGD
3SGD dual para SVM
4LBFGS
5BFGS
6Sparsa

Para acceder a los campos, utilice notación de puntos. Por ejemplo, para acceder al vector de los valores de función objetiva para cada iteración, escriba.FitInfo.History.Objective

Es una buena práctica examinar para evaluar si la convergencia es satisfactoria.FitInfo

Optimización de validación cruzada de hiperparámetros, devueltos como un objeto o una tabla de hiperparámetros y valores asociados.BayesianOptimization La salida no está vacía cuando el valor de no es.'OptimizeHyperparameters''none' El valor de salida depende del valor de campo del argumento de par nombre-valor:Optimizer'HyperparameterOptimizationOptions'

Valor de campoOptimizerValor deHyperparameterOptimizationResults
predeterminado'bayesopt'Objeto de claseBayesianOptimization
O'gridsearch''randomsearch'Tabla de hiperparámetros utilizados, valores de función objetiva observados (pérdida de validación cruzada) y rango de observaciones de menor (mejor) a mayor (peor)

Nota

Si es, después el término de la pérdida en la función objetiva es la mitad del MSE.Learner'leastsquares' loss vuelve el MSE por abandono. Por lo tanto, si usted utiliza para marcar el reenvío, o el entrenamiento, el error entonces hay una discrepancia entre el MSE devuelto por y los resultados de la optimización en o devueltos a la línea de comando estableciendo un nivel de verbosidad positivo usando.losslossFitInfoVerbose

Más acerca de

contraer todo

Inicio cálido

A son estimaciones iniciales de los coeficientes beta y el término de sesgo suministrados a una rutina de optimización para una convergencia más rápida.comienzo cálido

Alternativas para datos de menor dimensión

Los modelos de regresión y clasificación lineal de alta dimensión minimizan las funciones objetivas con relativa rapidez, pero a costa de cierta precisión, la restricción de las variables predictoras de solo numérico y el modelo debe ser lineal con respecto a los parámetros. Si el conjunto de datos de predictor es de baja a media dimensión, o contiene variables heterogéneas, debe usar la función de ajuste de la clasificación o la regresión adecuada. Para ayudarle a decidir qué función de ajuste es adecuada para su conjunto de datos de dimensiones reducidas, utilice esta tabla.

Modelo para ajustarFunciónDiferencias algorítmicas notables
Svm
  • Calcula la matriz gram de las variables predictoras, que es conveniente para las transformaciones de kernel no lineales.

  • Resuelve el problema dual usando SMO, ISDA, o 1 minimización a través de la programación cuadrática usando.Lquadprog

La regresión lineal
  • Mínimos cuadrados sin regularización:fitlm

  • Los mínimos cuadrados regularizados con una penalización de lazo:Lazo

  • Regresión de cresta: oridgeLazo

  • implementa el descenso de coordenadas cíclicas.Lazo

La regresión logística
  • Regresión logística sin regularización:.fitglm

  • Regresión logística regularizada usando una penalización de lazo:lassoglm

  • implementa los mínimos cuadrados reponderados de forma iterativa.fitglm

  • implementa el descenso de coordenadas cíclicas.lassoglm

Sugerencias

  • Es una práctica recomendada orientar la matriz predictora para que las observaciones se correspondan con las columnas y se especifiquen.'ObservationsIn','columns' Como resultado, puede experimentar una reducción significativa en el tiempo de ejecución de la optimización.

  • Para una mejor precisión de la optimización si es alta dimensional y es, establezca cualquiera de estas combinaciones para:XRegularización'ridge'Solver

    • 'sgd'

    • 'asgd'

    • Si es'dual'Learner'svm'

    • {'sgd','lbfgs'}

    • {'asgd','lbfgs'}

    • Si es{'dual','lbfgs'}Learner'svm'

    Otras combinaciones pueden resultar en una precisión de optimización deficiente.

  • Para una mejor precisión de la optimización si es moderada-a través de baja dimensional y está, establecido en.XRegularización'ridge'Solver'bfgs'

  • Si es así, establezca cualquiera de estas combinaciones para:Regularización'lasso'Solver

    • 'sgd'

    • 'asgd'

    • 'sparsa'

    • {'sgd','sparsa'}

    • {'asgd','sparsa'}

  • Al elegir entre SGD y ASGD, tenga en cuenta que:

    • SGD tarda menos tiempo por iteración, pero requiere más iteraciones para converger.

    • ASGD requiere menos iteraciones para converger, pero toma más tiempo por iteración.

  • Si tiene pocas observaciones, pero muchas variables predictoras, entonces:X

    • Especificar.'PostFitBias',true

    • Para los solucionadores de SGD o ASGD, establezca un entero positivo que sea mayor que 1, por ejemplo, 5 o 10.PassLimit Esta configuración a menudo resulta en una mejor precisión.

  • Para los solucionadores de SGD y ASGD, afecta a la tasa de convergencia.BatchSize

    • Si es demasiado pequeño, entoncesBatchSize fitrlinear alcanza el mínimo en muchas iteraciones, pero calcula el degradado por iteración rápidamente.

    • Si es demasiado grande, entoncesBatchSize fitrlinear alcanza el mínimo en menos iteraciones, pero calcula el degradado por iteración lentamente.

  • Las grandes tasas de aprendizaje (ver) aceleran la convergencia al mínimo, pero pueden dar lugar a una divergencia (es decir, sobrepisar el mínimo).LearnRate Las pequeñas tasas de aprendizaje aseguran la convergencia al mínimo, pero pueden conducir a una terminación lenta.

  • Cuando se utilizan las penas de lazo, experimentar con varios valores de.TruncationPeriod Por ejemplo, establecer en y, a continuación,.TruncationPeriod110100

  • Para mayor eficiencia, fitrlinear no estandariza los Datos predictores. Para estandarizar, introduzcaX

    X = bsxfun(@rdivide,bsxfun(@minus,X,mean(X,2)),std(X,0,2));

    El código requiere orientar los predictores y observaciones como las filas y columnas de, respectivamente.X Además, para la economía de uso de memoria, el código reemplaza los Datos predictores originales de los datos estandarizados.

  • Después de entrenar un modelo, puede generar código de C/C++ que predice las respuestas de los nuevos datos. La generación de código C/C++ requiere MATLABCoder™. Para obtener más información, consulte.Introducción a la generación de código

Algoritmos

  • Si especifica, a continuación, durante la optimización de la función objetiva:ValidationData

    • fitrlinear estima la pérdida de validación de usar periódicamente el modelo actual y realiza un seguimiento de la estimación mínima.ValidationData

    • Cuando fitrlinear estima una pérdida de validación, compara la estimación con la estimación mínima.

    • Cuando las estimaciones de pérdidas de validación posteriores superan la estimación mínima cinco veces, fitrlinear finaliza la optimización.

  • Si especifica e implementa una rutina de validación cruzada (,, o), entonces:ValidationDataCrossValCVPartitionHoldoutKFold

    1. fitrlinear particiones aleatoriamente y de acuerdo con la rutina de validación cruzada que elija.XY

    2. fitrlinear entrena el modelo utilizando la partición de datos de entrenamiento. Durante la optimización de la función objetiva, fitrlinear utiliza como otra forma posible de terminar la optimización (para obtener más información, consulte la viñeta anterior).ValidationData

    3. una vez fitrlinear satisface un criterio de detención, construye un modelo entrenado basado en los coeficientes lineales optimizados y la interceptación.

      1. Si implementa la validación cruzada, yk fitrlinear no ha agotado todos los pliegues del set de entrenamiento, entonces fitrlinear regresa al paso 2 para entrenar usando el siguiente pliegue del conjunto de entrenamiento.

      2. Lo contrario fitrlinear finaliza el entrenamiento y, a continuación, devuelve el modelo con validación cruzada.

    4. Puede determinar la calidad del modelo validado en cruz. Por ejemplo:

      • Para determinar la pérdida de validación utilizando los datos de exclusión o fuera de pliegue del paso 1, pase el modelo validado en cruz.kfoldLoss

      • Para predecir las observaciones de los datos de exclusión o fuera de pliegue del paso 1, pase el modelo validado en cruz.kfoldPredict

Referencias

[1] Ho, C. H. and C. J. Lin. “Large-Scale Linear Support Vector Regression.” Journal of Machine Learning Research, Vol. 13, 2012, pp. 3323–3348.

[2] Hsieh, C. J., K. W. Chang, C. J. Lin, S. S. Keerthi, and S. Sundararajan. “A Dual Coordinate Descent Method for Large-Scale Linear SVM.” Proceedings of the 25th International Conference on Machine Learning, ICML ’08, 2001, pp. 408–415.

[3] Langford, J., L. Li, and T. Zhang. “Sparse Online Learning Via Truncated Gradient.” J. Mach. Learn. Res., Vol. 10, 2009, pp. 777–801.

[4] Nocedal, J. and S. J. Wright. Numerical Optimization, 2nd ed., New York: Springer, 2006.

[5] Shalev-Shwartz, S., Y. Singer, and N. Srebro. “Pegasos: Primal Estimated Sub-Gradient Solver for SVM.” Proceedings of the 24th International Conference on Machine Learning, ICML ’07, 2007, pp. 807–814.

[6] Wright, S. J., R. D. Nowak, and M. A. T. Figueiredo. “Sparse Reconstruction by Separable Approximation.” Trans. Sig. Proc., Vol. 57, No 7, 2009, pp. 2479–2493.

[7] Xiao, Lin. “Dual Averaging Methods for Regularized Stochastic Learning and Online Optimization.” J. Mach. Learn. Res., Vol. 11, 2010, pp. 2543–2596.

[8] Xu, Wei. “Towards Optimal One Pass Large Scale Learning with Averaged Stochastic Gradient Descent.” CoRR, abs/1107.2490, 2011.

Capacidades ampliadas

Introducido en R2016a