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.

fitclinear

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

Descripción

fitclinear entrena modelos de clasificación lineal para el aprendizaje de dos clases (binario) con Datos predictores de alta dimensión, completos o dispersos. Los modelos de clasificación lineal disponibles incluyen máquinas de vectores de soporte regularizados (SVM) y modelos de regresión logística. fitclinear 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 clasificación lineal mediante el uso.fitclinear Para conjuntos de Datos predictores de baja y mediana dimensión, consulte.Alternativas para datos de menor dimensión

Para entrenar un modelo de clasificación lineal para el aprendizaje multiclase combinando los clasificadores binarios de SVM o de regresión logística mediante códigos de salida de corrección de errores, consulte.fitcecoc

ejemplo

Mdl = fitclinear(X,Y) Devuelve un objeto de modelo de clasificación lineal entrenado que contiene los resultados de ajustar una máquina de vectores de soporte binario a los predictores y etiquetas de clase.XY

ejemplo

Mdl = fitclinear(X,Y,Name,Value) Devuelve un modelo de clasificación lineal entrenado con opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, puede especificar que las columnas de la matriz predictora se correspondan con las observaciones, implementar la regresión logística o especificar la validación cruzada. 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] = fitclinear(___) también devuelve detalles de optimización mediante cualquiera de las sintaxis anteriores. No puede solicitar modelos con validación cruzada.FitInfo

[Mdl,FitInfo,HyperparameterOptimizationResults] = fitclinear(___) 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 clasificación lineal binario utilizando máquinas de vectores de soporte, doble SGD y regularización de cresta.

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY Hay más de dos clases en los datos.

Identifique las etiquetas que corresponden a las páginas web de documentación de estadísticas y machine learning Toolbox™.

Ystats = Y == 'stats';

Entrenar un modelo de clasificación lineal binario que puede identificar si la palabra cuenta en una página web de documentación son de la documentación de estadísticas y machine learning Toolbox™. Entrenar el modelo utilizando todo el conjunto de datos. Determine qué tan bien el algoritmo de optimización ajusta el modelo a los datos mediante la extracción de un resumen de ajuste.

rng(1); % For reproducibility  [Mdl,FitInfo] = fitclinear(X,Ystats)
Mdl =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [0 1]     ScoreTransform: 'none'               Beta: [34023x1 double]               Bias: -1.0059             Lambda: 3.1674e-05            Learner: 'svm'     Properties, Methods  
FitInfo = struct with fields:
                    Lambda: 3.1674e-05
                 Objective: 5.3783e-04
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 238561
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.0562
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.4582
    DeltaGradientTolerance: 1
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [31572x1 double]
                   History: []
                   FitTime: 0.2112
                    Solver: {'dual'}

es un modelo.MdlClassificationLinear Puede pasar y el entrenamiento o los nuevos datos para inspeccionar el error de clasificación en la muestra.Mdlloss O puede pasar y nuevos Datos predictores para predecir etiquetas de clase 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 Dado que el tiempo de entrenamiento es pequeño, puede intentar reentrenar el modelo, pero aumentar el número de pasadas a través de los datos. Esto puede mejorar las medidas como.DeltaGradient

Para determinar una buena fuerza de penalización de lazo para un modelo de clasificación lineal que utiliza un aprendizaje de regresión logística, implemente la validación cruzada de 5 veces.

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY Hay más de dos clases en los datos.

Los modelos deben identificar si la palabra cuenta en una página web son de la documentación de estadísticas y machine learning Toolbox™. Por lo tanto, identifique las etiquetas que corresponden a las páginas web de documentación de estadísticas y machine learning Toolbox™.

Ystats = Y == 'stats';

Cree un conjunto de 11 fortalezas de regularización logarmicamente espaciadas de

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>6</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>0</mn>
<mo>.</mo>
<mn>5</mn>
</mrow>
</msup>
</mrow>
</math>
.

Lambda = logspace(-6,-0.5,11);

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. Calcule los coeficientes utilizando SpaRSA. Reduzca la tolerancia en el degradado de la función objetiva a.1e-8

X = X';  rng(10); % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5,...     'Learner','logistic','Solver','sparsa','Regularization','lasso',...     'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl =    classreg.learning.partition.ClassificationPartitionedLinear     CrossValidatedModel: 'Linear'            ResponseName: 'Y'         NumObservations: 31572                   KFold: 5               Partition: [1×1 cvpartition]              ClassNames: [0 1]          ScoreTransform: 'none'     Properties, Methods  
 numCLModels = numel(CVMdl.Trained)
numCLModels = 5 

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

Mostrar el primer modelo de clasificación lineal entrenado.

Mdl1 = CVMdl.Trained{1}
Mdl1 =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [0 1]     ScoreTransform: 'logit'               Beta: [34023×11 double]               Bias: [-13.2904 -13.2904 -13.2904 -13.2904 -9.9357 -7.0782 -5.4335 -4.5473 -3.4223 -3.1649 -2.9795]             Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05 1.5849e-04 5.6234e-04 0.0020 0.0071 0.0251 0.0891 0.3162]            Learner: 'logistic'     Properties, Methods  

es un objeto de modelo. construido por el entrenamiento en los primeros cuatro pliegues.Mdl1ClassificationLinearfitclinearMdl1 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 error de clasificación de validación cruzada.

ce = kfoldLoss(CVMdl);

Debido a que hay 11 fortalezas de regularización, es un vector de 1 por 11 de tasas de error de clasificación.ce

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

Mdl = fitclinear(X,Ystats,'ObservationsIn','columns',...     'Learner','logistic','Solver','sparsa','Regularization','lasso',...     'Lambda',Lambda,'GradientTolerance',1e-8); numNZCoeff = sum(Mdl.Beta~=0);

En la misma figura, trace las tasas de error de clasificación y validación cruzada y la frecuencia de 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(ce),...     log10(Lambda),log10(numNZCoeff));  hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} classification error') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') title('Test-Sample Statistics') hold off

Elija el índice de la fuerza de regularización que equilibra la dispersión variable predictora y el error de clasificación baja. En este caso, un valor entre

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>4</mn>
</mrow>
</msup>
</mrow>
</math>
Para
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
debería ser suficiente.

idxFinal = 7;

Seleccione el modelo con la fuerza de regularización elegida.Mdl

MdlFinal = selectModels(Mdl,idxFinal);

es un modelo que contiene una fuerza de regularización.MdlFinalClassificationLinear Para estimar las etiquetas de las nuevas observaciones, pasar y los nuevos datos a.MdlFinalPredecir

En este ejemplo se muestra cómo minimizar el error de validación cruzada en un clasificador lineal mediante.fitclinear El ejemplo utiliza el conjunto de datos NLP.

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY Hay más de dos clases en los datos.

Los modelos deben identificar si la palabra cuenta en una página web son de la documentación de estadísticas y machine learning Toolbox™. Identifique las etiquetas pertinentes.

X = X'; Ystats = Y == 'stats';

Optimice la clasificación utilizando los parámetros.'auto'

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

rng default Mdl = fitclinear(X,Ystats,'ObservationsIn','columns','Solver','sparsa',...     'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',...     struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |    1 | Best   |    0.041619 |      3.7102 |    0.041619 |    0.041619 |     0.077903 |     logistic | |    2 | Best   |  0.00072849 |      3.6146 |  0.00072849 |   0.0028767 |   2.1405e-09 |     logistic | |    3 | Accept |    0.049221 |       4.383 |  0.00072849 |  0.00075737 |      0.72101 |          svm | |    4 | Accept |  0.00079184 |      4.0362 |  0.00072849 |  0.00074989 |   3.4734e-07 |          svm | |    5 | Accept |  0.00082351 |      3.6567 |  0.00072849 |  0.00072924 |   1.1738e-08 |     logistic | |    6 | Accept |  0.00085519 |      3.8855 |  0.00072849 |  0.00072746 |   2.4529e-09 |          svm | |    7 | Accept |  0.00079184 |      3.8795 |  0.00072849 |  0.00072518 |   3.1854e-08 |          svm | |    8 | Accept |  0.00088686 |      4.1503 |  0.00072849 |  0.00072236 |   3.1717e-10 |          svm | |    9 | Accept |  0.00076017 |      3.5691 |  0.00072849 |  0.00068304 |   3.1837e-10 |     logistic | |   10 | Accept |  0.00079184 |       4.203 |  0.00072849 |  0.00072853 |   1.1258e-07 |          svm | |   11 | Accept |  0.00076017 |      3.8095 |  0.00072849 |  0.00072144 |   2.1214e-09 |     logistic | |   12 | Accept |  0.00079184 |      6.3278 |  0.00072849 |  0.00075984 |   2.2819e-07 |     logistic | |   13 | Accept |  0.00072849 |      3.9257 |  0.00072849 |  0.00075648 |   6.6161e-08 |     logistic | |   14 | Best   |  0.00069682 |      4.1709 |  0.00069682 |  0.00069781 |   7.4324e-08 |     logistic | |   15 | Best   |  0.00066515 |      4.1086 |  0.00066515 |  0.00068861 |   7.6994e-08 |     logistic | |   16 | Accept |  0.00076017 |       3.685 |  0.00066515 |  0.00068881 |   7.0687e-10 |     logistic | |   17 | Accept |  0.00066515 |      4.1488 |  0.00066515 |   0.0006838 |   7.7159e-08 |     logistic | |   18 | Accept |   0.0012353 |      4.5418 |  0.00066515 |  0.00068521 |   0.00083275 |          svm | |   19 | Accept |  0.00076017 |      4.0808 |  0.00066515 |  0.00068508 |   5.0781e-05 |          svm | |   20 | Accept |  0.00085519 |      3.1398 |  0.00066515 |  0.00068527 |   0.00022104 |          svm | |=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |   21 | Accept |  0.00082351 |      6.2676 |  0.00066515 |  0.00068569 |   4.5396e-06 |          svm | |   22 | Accept |   0.0010769 |      14.789 |  0.00066515 |  0.00070107 |   5.1931e-06 |     logistic | |   23 | Accept |  0.00095021 |      16.747 |  0.00066515 |  0.00069594 |   1.3051e-06 |     logistic | |   24 | Accept |  0.00085519 |      5.2072 |  0.00066515 |  0.00069625 |   1.6481e-05 |          svm | |   25 | Accept |  0.00085519 |       4.265 |  0.00066515 |  0.00069643 |    1.157e-06 |          svm | |   26 | Accept |  0.00079184 |      3.4761 |  0.00066515 |  0.00069667 |   1.0016e-08 |          svm | |   27 | Accept |  0.00072849 |      3.7038 |  0.00066515 |  0.00069848 |   4.2234e-08 |     logistic | |   28 | Accept |    0.049221 |     0.48067 |  0.00066515 |  0.00069842 |       3.1608 |     logistic | |   29 | Accept |  0.00085519 |      4.0213 |  0.00066515 |  0.00069855 |   8.5626e-10 |          svm | |   30 | Accept |  0.00076017 |      3.6389 |  0.00066515 |  0.00069837 |   3.1946e-10 |     logistic |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 162.4664 seconds. Total objective function evaluation time: 143.6227  Best observed feasible point:       Lambda      Learner      __________    ________      7.6994e-08    logistic  Observed objective function value = 0.00066515 Estimated objective function value = 0.00069837 Function evaluation time = 4.1086  Best estimated feasible point (according to models):       Lambda      Learner      __________    ________      7.4324e-08    logistic  Estimated objective function value = 0.00069837 Estimated function evaluation time = 4.0948 
Mdl =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [0 1]     ScoreTransform: 'logit'               Beta: [34023×1 double]               Bias: -10.1723             Lambda: 7.4324e-08            Learner: 'logistic'     Properties, Methods  

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

Etiquetas de clase a las que se entrena el modelo de clasificación, especificadas como una matriz categórica, de caracteres o de cadena, Vector lógico o numérico o matriz de celdas de vectores de caracteres.

  • fitclinear solo admite la clasificación binaria. O bien debe contener exactamente dos clases distintas, o debe especificar dos clases para el entrenamiento mediante el argumento de par nombre-valor.Y'ClassNames' Para el aprendizaje multiclase, véase.fitcecoc

  • Si es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.Y

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

  • Es recomendable especificar el orden de la clase mediante el argumento de par nombre-valor.ClassNames

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

Nota

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

  • , Vector de carácter vacío (), cadena vacía () y elementos en la respuesta (o)NaN''""<missing><undefined>YValidationData{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 que las columnas de la matriz predictora corresponden a las observaciones, para implementar la regresión logística, para implementar la validación cruzada de 10 veces.'ObservationsIn','columns','Learner','logistic','CrossVal','on'

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 clasificación lineal

contraer todo

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 clasificación lineal, especificado como el par separado por comas que consta de y o.'Learner''svm''logistic'

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
'svm'Máquina de vectores de soporte∊ {– 1, 1}; 1 para la clase positiva y – 1 de lo contrarioyBisagra: [y,f(x)]=max[0,1yf(x)]
'logistic'La regresión logísticaIgual que'svm'Desviación (logística): [y,f(x)]=log{1+exp[yf(x)]}

Ejemplo: 'Learner','logistic'

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 contiene 100 o menos variables predictoras, entonces el solucionador predeterminado es.RegularizaciónX'bfgs'

  • Un modelo SVM (ver), una penalización de cresta, y contiene más de 100 variables predictoras, entonces el solucionador predeterminado es.LearnerX'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 uso de la estimación resultante como un inicio cálido a la siguiente iteración de optimización y utiliza el siguiente valor más pequeño como la fuerza de regularización.Lambda

    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í, deje queLearner'logistic' Gj ser 1 si Y(j) es la clase positiva, y-1 de lo contrario. es la media ponderada del entrenamiento o, para la validación cruzada, las observaciones en plegamiento.Biasg

    • Si es, entonces es 0.Learner'svm'Bias

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. Las estimaciones y el uso del modeloβb

  2. Estima las puntuaciones de clasificación

  3. Rellena colocando el umbral en las puntuaciones de clasificación que alcanza la máxima precisiónb

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 fitclinear aparece en la línea de comandos.

ValorDescripción
0fitclinear no muestra información de diagnóstico.
1fitclinear 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 positivofitclinear 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 0,75.Solver'asgd'c[7]

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

Por defecto, es, donde es si las observaciones componen las columnas de los Datos predictores, 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 clasificación

contraer todo

Nombres de las clases que se usarán para el entrenamiento, especificadas como el par separado por comas que consta de una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. debe tener el mismo tipo de datos que.'ClassNames'ClassNamesY

Si es una matriz de caracteres, cada elemento debe corresponder a uno de la matriz.ClassNamesrow

Utilizar para:ClassNames

  • Ordene las clases durante el entrenamiento.

  • Especifique el orden de cualquier dimensión de argumento de entrada o de salida que corresponda al orden de la clase. Por ejemplo, se utiliza para especificar el orden de las dimensiones o el orden de columnas de las puntuaciones de clasificación devueltas por.ClassNamesCostoPredecir

  • Seleccione un subconjunto de clases para el entrenamiento. Por ejemplo, supongamos que el conjunto de todos los nombres de clase distintos en es.Y{'a','b','c'} Para entrenar el modelo utilizando observaciones de clases y sólo, especifique.'a''c''ClassNames',{'a','c'}

El valor predeterminado para es el conjunto de todos los nombres de clase distintos en.ClassNamesY

Ejemplo: 'ClassNames',{'b','g'}

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

Costo de clasificación errónea, especificado como el par separado por comas que consta de una matriz cuadrada o estructura.'Cost'

  • Si especifica la matriz cuadrada (), entonces es el costo de clasificar un punto en la clase si su clase verdadera es.Costo'Cost',costcost(i,j)ji Es decir, las filas corresponden a la clase true y las columnas corresponden a la clase pronosticada. Para especificar el orden de la clase para las filas y columnas correspondientes de, use el argumento de par nombre-valor.CostoClassNames

  • Si especifica la estructura (), debe tener dos campos:S'Cost',S

    • , que contiene los nombres de clase como una variable del mismo tipo de datos queS.ClassNamesY

    • , que contiene la matriz de costes con filas y columnas ordenadas como enS.ClassificationCostsS.ClassNames

El valor predeterminado de esCosto ones(K) – eye(K)Dónde K es el número de clases distintas.

fitclinear utiliza para ajustar las probabilidades de clase previas especificadas en.CostoPrior Entonces fitclinear utiliza las probabilidades previas ajustadas para el entrenamiento y restablece la matriz de costes a su valor predeterminado.

Ejemplo: 'Cost',[0 2; 1 0]

Tipos de datos: single | double | struct

Probabilidades previas para cada clase, especificadas como el par separado por comas que consta de y, un vector numérico o una matriz de estructura.'Prior''empirical''uniform'

Esta tabla resume las opciones disponibles para establecer las probabilidades previas.

ValorDescripción
'empirical'Las probabilidades previas de clase son las frecuencias de clase relativas.Y
'uniform'Todas las probabilidades previas de clase son iguales a 1/KDónde K es el número de clases.
Vector numéricoCada elemento es una clase de probabilidad previa. Ordene los elementos según su orden en.Y Si especifica el orden mediante el argumento de par nombre-valor, ordene los elementos en consecuencia.'ClassNames'
matriz de estructura

Una estructura con dos campos:S

  • contiene los nombres de clase como una variable del mismo tipo que.S.ClassNamesY

  • contiene un vector de las probabilidades previas correspondientes.S.ClassProbs

fitclinear Normaliza las probabilidades previas en sumar a 1.Prior

Ejemplo: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)

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

Transformación de puntuación, especificada como el par separado por comas que consta de un vector de caracteres, un escalar de cadena o un identificador de función.'ScoreTransform'

Esta tabla resume los vectores de caracteres disponibles y los escalares de cadena.

ValorDescripción
'doublelogit'1/(1 +e–2x)
'invlogit'log (/(1 –))xx
'ismax'Establece la puntuación de la clase con la puntuación más grande y establece las puntuaciones de todas las demás clases para10
'logit'1/(1 +ex)
O'none''identity'(sin transformación)x
'sign'– 1 para < 0 0 para = 0 1 para > 0x
x
x
'symmetric'2 – 1x
'symmetricismax'Establece la puntuación de la clase con la puntuación más grande y establece las puntuaciones de todas las demás clases para1–1
'symmetriclogit'2/(1 +ex) – 1

Para una función o una función que defina, utilice su identificador de función para la transformación de puntuación.MATLAB® El identificador de función debe aceptar una matriz (las puntuaciones originales) y devolver una matriz del mismo tamaño (las puntuaciones transformadas).

Ejemplo: 'ScoreTransform','logit'

Tipos de datos: char | string | function_handle

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

fitclinear Normaliza para resumir hasta el valor de la probabilidad anterior en la clase respectiva.Weights

De forma predeterminada, esWeights ones(n,1)Dónde n es el número de observaciones en.X

Tipos de datos: double | single

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'

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

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

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

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.

  • y debe ser el mismo tipo de datos.ValidationData{2}Y El conjunto de todas las etiquetas distintas de debe ser un subconjunto de todas las etiquetas distintas de.ValidationData{2}Y

  • 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 duales de convergencia 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.Las condiciones de complementariedad de Karush-Kuhn-Tucker (KKT)'DeltaGradientTolerance'

  • Si la magnitud de los violadores KKT es menor que, entonces el software termina la optimizació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: '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.

  • y debe ser el mismo tipo de datos.ValidationData{2}Y El conjunto de todas las etiquetas distintas de debe ser un subconjunto de todas las etiquetas distintas de.ValidationData{2}Y

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

  • y debe ser el mismo tipo de datos.ValidationData{2}Y El conjunto de todas las etiquetas distintas de debe ser un subconjunto de todas las etiquetas distintas de.ValidationData{2}Y

  • 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.fitclinear Para obtener información sobre la pérdida de validación cruzada (aunque en un contexto diferente), consulte.Pérdida de clasificación 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:fitclinear

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

  • — busca entre y.Learnerfitclinear'svm''logistic'

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

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

load fisheriris params = hyperparameters('fitclinear',meas,species); params(1).Range = [1e-4,1e6];

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.Optimizar el clasificador 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 clasificación lineal entrenado, devuelto como objeto de modelo o objeto de modelo validado de forma cruzada.ClassificationLinearClassificationPartitionedLinear

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

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 clasificación, y para el uso de memoria económica, y los objetos de modelo no almacenan los datos de entrenamiento o detalles del proceso de entrenamiento (por ejemplo, historial de convergencia).ClassificationLinearClassificationPartitionedLinear

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)

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 fitclinear alcanza el mínimo en muchas iteraciones, pero calcula el degradado por iteración rápidamente.

    • Si es demasiado grande, entoncesBatchSize fitclinear 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, fitclinear 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 etiquetas para 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

    • fitclinear 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 fitclinear 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, fitclinear finaliza la optimización.

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

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

    2. fitclinear entrena el modelo utilizando la partición de datos de entrenamiento. Durante la optimización de la función objetiva, fitclinear 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 fitclinear 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 fitclinear no ha agotado todos los pliegues del set de entrenamiento, entonces fitclinear regresa al paso 2 para entrenar usando el siguiente pliegue del conjunto de entrenamiento.

      2. Lo contrario fitclinear 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] 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.

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

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

[4] 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.

[5] 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.

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

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

Capacidades ampliadas

Introducido en R2016a