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.

fitrsvm

Ajustar un modelo de regresión de máquina vectorial de soporte

Descripción

trenes o valida cruzadamente un modelo de regresión de máquina vectorial de soporte (SVM) en un conjunto de datos predictor esbelto de baja a moderada. admite la asignación de datos predictores mediante funciones del kernel y admite sMO, ISDA o 1 minimización de margen suave a través de programación cuadrática para la minimización de la función objetiva.fitrsvmfitrsvmL

Para entrenar un modelo de regresión SVM lineal en un conjunto de datos de alta dimensión, es decir, conjuntos de datos que incluyen muchas variables predictoras, utilice en su lugar.fitrlinear

Para entrenar un modelo sVM para la clasificación binaria, consulte conjuntos de datos predictores de baja a moderada dimensión o conjuntos de datos de alta dimensión.fitcsvmfitclinear

ejemplo

Mdl = fitrsvm(Tbl,ResponseVarName) devuelve un modelo de regresión de máquina vectorial de soporte (SVM) completo y entrenado entrenado utilizando los valores predictores de la tabla y los valores de respuesta en .MdlTblTbl.ResponseVarName

Mdl = fitrsvm(Tbl,formula) devuelve un modelo de regresión SVM completo entrenado utilizando los valores predictores de la tabla. es un modelo explicativo de la respuesta y un subconjunto de variables predictoras utilizadas para encajar .TblFórmulaTblMdl

Mdl = fitrsvm(Tbl,Y) devuelve un modelo de regresión SVM completo y entrenado entrenado entrenado utilizando los valores predictores de la tabla y los valores de respuesta en el vector.TblY

Mdl = fitrsvm(X,Y) devuelve un modelo de regresión SVM completo y entrenado entrenado utilizando los valores predictores de la matriz y los valores de respuesta en el vector.XY

ejemplo

Mdl = fitrsvm(___,Name,Value) devuelve un modelo de regresión SVM con opciones adicionales especificadas por uno o varios argumentos de par nombre-valor, utilizando cualquiera de las sintaxis anteriores. Por ejemplo, puede especificar la función del kernel o entrenar un modelo validado entre referencias cruzadas.

Ejemplos

contraer todo

Entrene un modelo de regresión de máquina vectorial de soporte (SVM) utilizando datos de muestra almacenados en matrices.

Cargue el conjunto de datos.carsmall

load carsmall rng 'default'  % For reproducibility

Especifique y como variables predictoras ( ) y como variable de respuesta ( ).HorsepowerWeightXMPGY

X = [Horsepower,Weight]; Y = MPG;

Entrene un modelo de regresión SVM predeterminado.

Mdl = fitrsvm(X,Y)
Mdl =    RegressionSVM              ResponseName: 'Y'     CategoricalPredictors: []         ResponseTransform: 'none'                     Alpha: [75x1 double]                      Bias: 43.2943          KernelParameters: [1x1 struct]           NumObservations: 93            BoxConstraints: [93x1 double]           ConvergenceInfo: [1x1 struct]           IsSupportVector: [93x1 logical]                    Solver: 'SMO'     Properties, Methods  

es un modelo entrenado.MdlRegressionSVM

Compruebe la convergencia del modelo.

Mdl.ConvergenceInfo.Converged
ans = logical
   0

indica que el modelo no convergió.0

Vuelva a entrenar el modelo utilizando datos estandarizados.

MdlStd = fitrsvm(X,Y,'Standardize',true)
MdlStd =    RegressionSVM              ResponseName: 'Y'     CategoricalPredictors: []         ResponseTransform: 'none'                     Alpha: [77x1 double]                      Bias: 22.9131          KernelParameters: [1x1 struct]                        Mu: [109.3441 2.9625e+03]                     Sigma: [45.3545 805.9668]           NumObservations: 93            BoxConstraints: [93x1 double]           ConvergenceInfo: [1x1 struct]           IsSupportVector: [93x1 logical]                    Solver: 'SMO'     Properties, Methods  

Compruebe la convergencia del modelo.

MdlStd.ConvergenceInfo.Converged
ans = logical
   1

indica que el modelo convergió.1

Calcular el error de restitución (en muestra) cuadrado medio para el nuevo modelo.

lStd = resubLoss(MdlStd)
lStd = 17.0256 

Entrene un modelo de regresión de máquina vectorial de soporte utilizando los datos abalone del repositorio de aprendizaje automático de UCI.

Descargue los datos y guárdelos en su carpeta actual con el nombre .'abalone.csv'

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data'; websave('abalone.csv',url); 

Lea los datos en una tabla. Especifique los nombres de las variables.

varnames = {'Sex'; 'Length'; 'Diameter'; 'Height'; 'Whole_weight';...     'Shucked_weight'; 'Viscera_weight'; 'Shell_weight'; 'Rings'}; Tbl = readtable('abalone.csv','Filetype','text','ReadVariableNames',false); Tbl.Properties.VariableNames = varnames; 

Los datos de la muestra contienen 4177 observaciones. Todas las variables predictoras son continuas excepto , que es una variable categórica con valores posibles (para los machos), (para las hembras) y (para los bebés).Sex'M''F''I' El objetivo es predecir el número de anillos (almacenados en ) en el abulón y determinar su edad mediante mediciones físicas.Rings

Entrene un modelo de regresión SVM, utilizando una función de kernel gaussiana con una escala automática del kernel. Estandarizar los datos.

rng default  % For reproducibility Mdl = fitrsvm(Tbl,'Rings','KernelFunction','gaussian','KernelScale','auto',...     'Standardize',true) 
 Mdl =     RegressionSVM            PredictorNames: {1×8 cell}              ResponseName: 'Rings'     CategoricalPredictors: 1         ResponseTransform: 'none'                     Alpha: [3635×1 double]                      Bias: 10.8144          KernelParameters: [1×1 struct]                        Mu: [1×10 double]                     Sigma: [1×10 double]           NumObservations: 4177            BoxConstraints: [4177×1 double]           ConvergenceInfo: [1×1 struct]           IsSupportVector: [4177×1 logical]                    Solver: 'SMO'   

La ventana de comandos muestra que es un modelo entrenado y muestra una lista de propiedades.MdlRegressionSVM

Mostrar las propiedades del uso de la notación de puntos.Mdl Por ejemplo, compruebe si el modelo convergió y cuántas iteraciones completó.

conv = Mdl.ConvergenceInfo.Converged iter = Mdl.NumIterations 
 conv =    logical     1   iter =          2759  

Los resultados devueltos indican que el modelo convergió después de 2759 iteraciones.

Cargue el conjunto de datos.carsmall

load carsmall rng 'default'  % For reproducibility

Especifique y como variables predictoras ( ) y como variable de respuesta ( ).HorsepowerWeightXMPGY

X = [Horsepower Weight]; Y = MPG;

Valide dos modelos de regresión SVM mediante la validación cruzada de 5 veces. Para ambos modelos, especifique estandarizar los predictores. Para uno de los modelos, especifique train utilizando el kernel lineal predeterminado y el kernel gaussiano para el otro modelo.

MdlLin = fitrsvm(X,Y,'Standardize',true,'KFold',5)
MdlLin =    classreg.learning.partition.RegressionPartitionedSVM     CrossValidatedModel: 'SVM'          PredictorNames: {'x1'  'x2'}            ResponseName: 'Y'         NumObservations: 94                   KFold: 5               Partition: [1x1 cvpartition]       ResponseTransform: 'none'     Properties, Methods  
MdlGau = fitrsvm(X,Y,'Standardize',true,'KFold',5,'KernelFunction','gaussian')
MdlGau =    classreg.learning.partition.RegressionPartitionedSVM     CrossValidatedModel: 'SVM'          PredictorNames: {'x1'  'x2'}            ResponseName: 'Y'         NumObservations: 94                   KFold: 5               Partition: [1x1 cvpartition]       ResponseTransform: 'none'     Properties, Methods  
MdlLin.Trained
ans=5×1 cell
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}

y son modelos validados cruzadamente.MdlLinMdlGauRegressionPartitionedSVM La propiedad de cada modelo es una matriz de modelos de celda s5 por 1.TrainedCompactRegressionSVM Los modelos en la célula almacenan los resultados de la formación en 4 pliegues de observaciones, y dejando un pliegue de observaciones fuera.

Compare el error de generalización de los modelos. En este caso, el error de generalización es el error de media cuadrada fuera de la muestra.

mseLin = kfoldLoss(MdlLin)
mseLin = 17.4417 
mseGau = kfoldLoss(MdlGau)
mseGau = 16.7397 

El modelo de regresión SVM que utiliza el kernel gaussiano funciona mejor que el que utiliza el kernel lineal.

Cree un modelo adecuado para realizar predicciones pasando todo el conjunto de datos a , y especifique todos los argumentos de par nombre-valor que produjeron el modelo de mejor rendimiento.fitrsvm Sin embargo, no especifique ninguna opción de validación cruzada.

MdlGau = fitrsvm(X,Y,'Standardize',true,'KernelFunction','gaussian');

Para predecir el MPG de un conjunto de coches, pase y una mesa que contiene las medidas de potencia y peso de los coches a .Mdlpredict

En este ejemplo se muestra cómo optimizar los hiperparámetros automáticamente mediante .fitrsvm En el ejemplo se utilizan los datos.carsmall

Cargue el conjunto de datos.carsmall

load carsmall

Especifique y como variables predictoras ( ) y como variable de respuesta ( ).HorsepowerWeightXMPGY

X = [Horsepower Weight]; Y = MPG;

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

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

rng default Mdl = fitrsvm(X,Y,'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',...     'expected-improvement-plus'))

|====================================================================================================================| | Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon | |      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              | |====================================================================================================================| |    1 | Best   |      6.1124 |      10.727 |      6.1124 |      6.1124 |      0.35664 |     0.043031 |      0.30396 | |    2 | Best   |      2.9114 |    0.081241 |      2.9114 |       3.088 |        70.67 |       710.65 |       1.6369 | |    3 | Accept |      4.1884 |    0.062996 |      2.9114 |       3.078 |       14.367 |    0.0059144 |       442.64 | |    4 | Accept |       4.159 |    0.059691 |      2.9114 |      3.0457 |    0.0030879 |       715.31 |       2.6045 | |    5 | Best   |      2.9044 |     0.21473 |      2.9044 |      2.9042 |       906.95 |       761.46 |       1.3274 | |    6 | Best   |      2.8666 |       0.494 |      2.8666 |      2.8668 |        997.3 |       317.41 |       3.7696 | |    7 | Accept |      4.1881 |    0.046231 |      2.8666 |      2.8669 |       759.56 |       987.74 |       15.074 | |    8 | Accept |      2.8992 |      2.5175 |      2.8666 |      2.8669 |       819.07 |       152.11 |       1.5192 | |    9 | Accept |      2.8916 |     0.15154 |      2.8666 |      2.8672 |       921.52 |       627.48 |       2.3029 | |   10 | Accept |      2.9001 |     0.28924 |      2.8666 |      2.8676 |       382.91 |       343.04 |       1.5448 | |   11 | Accept |      3.6573 |      9.8445 |      2.8666 |      2.8784 |        945.1 |        8.885 |       3.9207 | |   12 | Accept |      2.9381 |     0.13287 |      2.8666 |       2.871 |       935.49 |       979.29 |       0.1384 | |   13 | Accept |      2.9341 |    0.048236 |      2.8666 |      2.8719 |        1.992 |       999.49 |      0.21557 | |   14 | Accept |      2.9227 |    0.061377 |      2.8666 |      2.8742 |        2.351 |       977.85 |     0.026124 | |   15 | Accept |      2.9483 |     0.13459 |      2.8666 |      2.8751 |       826.92 |       713.57 |    0.0096305 | |   16 | Accept |      2.9502 |      1.1896 |      2.8666 |      2.8813 |       345.64 |        129.6 |     0.027832 | |   17 | Accept |      2.9329 |     0.10496 |      2.8666 |      2.8799 |       836.96 |       970.73 |     0.034398 | |   18 | Accept |      2.9177 |    0.068845 |      2.8666 |      2.8771 |      0.10167 |       129.91 |    0.0092675 | |   19 | Accept |        2.95 |      2.5322 |      2.8666 |      2.8749 |       199.85 |        68.93 |    0.0092982 | |   20 | Accept |      4.1964 |    0.070247 |      2.8666 |      2.8685 |    0.0012054 |       940.94 |    0.0097673 | |====================================================================================================================| | Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon | |      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              | |====================================================================================================================| |   21 | Accept |       2.905 |    0.079709 |      2.8666 |      2.8675 |       5.9475 |       199.82 |     0.013585 | |   22 | Accept |      2.9329 |    0.096708 |      2.8666 |      2.8747 |      0.33221 |       21.509 |    0.0094248 | |   23 | Accept |      2.9017 |    0.049333 |      2.8666 |      2.8689 |       13.341 |       554.39 |     0.069216 | |   24 | Accept |      2.9067 |    0.049191 |      2.8666 |      2.8694 |      0.21467 |       73.415 |     0.028231 | |   25 | Accept |      2.9046 |    0.056755 |      2.8666 |      2.8731 |      0.68546 |       61.287 |    0.0099165 | |   26 | Accept |      2.9138 |     0.04743 |      2.8666 |      2.8676 |    0.0012185 |       8.8743 |    0.0093263 | |   27 | Accept |      2.9193 |    0.048818 |      2.8666 |      2.8731 |    0.0099434 |       30.484 |    0.0093546 | |   28 | Accept |      8.5384 |      10.252 |      2.8666 |      2.8683 |       992.36 |       1.4043 |    0.0093129 | |   29 | Accept |      3.2254 |    0.046193 |      2.8666 |      2.8682 |    0.0010092 |       16.917 |       7.3665 | |   30 | Accept |      4.1884 |    0.046135 |      2.8666 |      2.8683 |       983.95 |       42.654 |       287.19 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 70.0414 seconds. Total objective function evaluation time: 39.6037  Best observed feasible point:     BoxConstraint    KernelScale    Epsilon     _____________    ___________    _______          997.3          317.41       3.7696   Observed objective function value = 2.8666 Estimated objective function value = 2.8683 Function evaluation time = 0.494  Best estimated feasible point (according to models):     BoxConstraint    KernelScale    Epsilon     _____________    ___________    _______          997.3          317.41       3.7696   Estimated objective function value = 2.8683 Estimated function evaluation time = 0.44767 
Mdl =    RegressionSVM                          ResponseName: 'Y'                 CategoricalPredictors: []                     ResponseTransform: 'none'                                 Alpha: [35×1 double]                                  Bias: 48.8155                      KernelParameters: [1×1 struct]                       NumObservations: 93     HyperparameterOptimizationResults: [1×1 BayesianOptimization]                        BoxConstraints: [93×1 double]                       ConvergenceInfo: [1×1 struct]                       IsSupportVector: [93×1 logical]                                Solver: 'SMO'     Properties, Methods  

La optimización buscada sobre , , y .BoxConstraintKernelScaleEpsilon La salida es la regresión con la pérdida de validación cruzada estimada mínima.

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificados como una tabla. Cada fila de corresponde a una observación y cada columna corresponde a una variable predictora.Tbl Opcionalmente, puede contener una columna adicional para la variable de respuesta.Tbl No se permiten variables de varias columnas y matrices de celdas que no sean matrices de celdas de vectores de caracteres.

Si contiene la variable de respuesta y desea utilizar todas las variables restantes como predictores, especifique la variable de respuesta mediante .TblTblResponseVarName

Si contiene la variable de respuesta y desea utilizar solo un subconjunto de las variables restantes como predictores, especifique una fórmula mediante .TblTblFórmula

Si no contiene la variable de respuesta, especifique una variable de respuesta mediante .TblY La longitud de la variable de respuesta y el número de filas de deben ser iguales.Tbl

Si una fila o un elemento de contiene al menos uno , a continuación, quita esas filas y elementos de ambos argumentos al entrenar el modelo.TblYNaNfitrsvm

Para especificar los nombres de los predictores en el orden de su aparición en , utilice el argumento de par nombre-valor.TblPredictorNames

Tipos de datos: table

Nombre de la variable de respuesta, especificado como el nombre de una variable en .Tbl La variable de respuesta debe ser un vector numérico.

Debe especificar como vector de caracteres o escalar de cadena.ResponseVarName Por ejemplo, si almacena la variable de respuesta como , esbórrela como .TblYTbl.Y'Y' De lo contrario, el software trata todas las columnas de , incluidos , como predictores al entrenar el modelo.TblY

Tipos de datos: char | string

Modelo explicativo de la variable de respuesta y un subconjunto de las variables predictoras, especificadas como vector de caracteres o escalar de cadena en el formulario.'Y~X1+X2+X3' En este formulario, representa la variable de respuesta y , , y representa las variables predictoras.YX1X2X3

Para especificar un subconjunto de variables como predictores para entrenar el modelo, utilice una fórmula.Tbl Si especifica una fórmula, el software no utiliza ninguna variable que no aparezca en .TblFórmula

Los nombres de variable de la fórmula deben ser ambos nombres de variable en ( ) como identificadores válidos.TblTbl.Properties.VariableNamesMATLAB®

Puede verificar los nombres de las variables mediante la función.Tblisvarname El código siguiente devuelve logical ( ) para cada variable que tiene un nombre de variable válido.1true Si los nombres de variable en no son válidos, a continuación, convertirlos mediante la función.

cellfun(@isvarname,Tbl.Properties.VariableNames)
Tblmatlab.lang.makeValidName
Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);

Tipos de datos: char | string

Datos de respuesta, especificados como un vector numérico -by-1.n La longitud y el número de filas de o debe ser igual.YTblX

Si una fila de o , o un elemento de , contiene al menos uno , a continuación, quita esas filas y elementos de ambos argumentos al entrenar el modelo.TblXYNaNfitrsvm

Para especificar el nombre de la variable de respuesta, utilice el argumento de par nombre-valor.ResponseName

Tipos de datos: single | double

Datos del predictor a los que se ajusta el modelo de regresión SVM, especificados como una matriz numérica -por-. es el número de observaciones y es el número de variables predictoras.npnp

La longitud y el número de filas de debe ser igual.YX

Si una fila o un elemento de contiene al menos uno , a continuación, quita esas filas y elementos de ambos argumentos.XYNaNfitrsvm

Para especificar los nombres de los predictores en el orden de su aparición en , utilice el argumento de par nombre-valor.XPredictorNames

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: entrena un modelo de regresión SVM validado cruzadamente 10 veces utilizando un kernel gaussiano y datos de entrenamiento estandarizados.'KernelFunction','gaussian','Standardize',true,'CrossVal','on'

Nota

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

Opciones de máquina vectorial de soporte

contraer todo

Restricción de caja para los coeficientes alfa, especificada como el par separado por comas que consta de y un valor escalar positivo.'BoxConstraint'

El valor absoluto de los coeficientes no puede superar el valor de .AlphaBoxConstraint

El valor predeterminado para la función o kernel es , donde está el rango intercuartil de la variable de respuesta.BoxConstraint'gaussian''rbf'iqr(Y)/1.349iqr(Y)Y Para todos los demás kernels, el valor predeterminado es 1.BoxConstraint

Ejemplo: BoxConstraint,10

Tipos de datos: single | double

Función Kernel utilizada para calcular el , especificado como el par separado por comas que consta de y un valor en esta tabla.Matriz de Gram'KernelFunction'

ValorDescripciónFórmula
O'gaussian''rbf'Núcleo de función de base gaussiana o radial (RBF)

G(xj,xk)=exp(xjxk2)

'linear'Núcleo lineal

G(xj,xk)=xjxk

'polynomial'Kernel polinómito. Uso 'PolynomialOrder',p para especificar un núcleo polinómio de orden p.

G(xj,xk)=(1+xjxk)q

Puede configurar su propia función de kernel, por ejemplo, , estableciendo . debe tener la siguiente forma: donde:kernel'KernelFunction','kernel'kernel

function G = kernel(U,V)

  • es una matriz por.Ump

  • es una matriz por.Vnp

  • es una matriz -by- Gram de las filas de y .GmnUV

Y debe estar en el camino.kernel.mMATLAB

Es una buena práctica evitar el uso de nombres genéricos para las funciones del kernel. Por ejemplo, llame a una función de kernel sigmoid en lugar de .'mysigmoid''sigmoid'

Ejemplo: 'KernelFunction','gaussian'

Tipos de datos: char | string

Parámetro de escala del núcleo, especificado como el par separado por comas que consta de o un escalar positivo.'KernelScale''auto' El software divide todos los elementos de la matriz predictora por el valor de .XKernelScale A continuación, el software aplica la norma de kernel adecuada para calcular la matriz Gram.

  • Si especifica , el software selecciona un factor de escala adecuado mediante un procedimiento heurístico.'auto' Este procedimiento heurístico utiliza submuestreo, por lo que las estimaciones pueden variar de una llamada a otra. Por lo tanto, para reproducir los resultados, establezca un número aleatorio de semilla según el entrenamiento.rng

  • Si especifica y su propia función de kernel, por ejemplo, , el software produce un error.KernelScale'KernelFunction','kernel' Debe aplicar el escalado dentro de .kernel

Ejemplo: 'KernelScale','auto'

Tipos de datos: double | single | char | string

Orden de la función del núcleo polinómiqueo, especificado como el par separado por comas que consta de y un entero positivo.'PolynomialOrder'

Si establece y no lo es, el software produce un error.'PolynomialOrder'KernelFunction'polynomial'

Ejemplo: 'PolynomialOrder',2

Tipos de datos: double | single

Parámetro de desplazamiento del núcleo, especificado como el par separado por comas que consta de un escalar no negativo.'KernelOffset'

El software se añade a cada elemento de la matriz Gram.KernelOffset

Los valores predeterminados son:

  • si el solucionador es SMO (es decir, se establece)0'Solver','SMO'

  • si el solucionador es ISDA (es decir, se establece)0.1'Solver','ISDA'

Ejemplo: 'KernelOffset',0

Tipos de datos: double | single

La mitad del ancho de la banda insensible a los épsilones, especificada como el par separado por comas que consta de un valor escalar no negativo.'Epsilon'

El valor predeterminado es , que es una estimación de una décima parte 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

Marcar para estandarizar los datos del predictor, especificados como el par separado por comas que consta de y ( ) o .'Standardize'true1false(0)

Si establece:'Standardize',true

  • El software centra y escala cada columna de los datos del predictor ( ) por la media de la columna ponderada y la desviación estándar, respectivamente (para obtener más información sobre la estandarización ponderada, véase ). no estandariza los datos contenidos en las columnas de variables ficticias generadas para los predictores categóricos.XAlgoritmosMATLAB

  • El software entrena el modelo utilizando la matriz predictora estandarizada, pero almacena los datos no estandarizados en la propiedad del modelo.X

Ejemplo: 'Standardize',true

Tipos de datos: logical

Rutina de optimización, especificada como el par separado por comas que consta de y un valor en esta tabla.'Solver'

ValorDescripción
'ISDA'Algoritmo iterativo de datos únicos (véase )[30]
'L1QP'Se utiliza para implementar 1 minimización de margen suave mediante programación cuadrática.quadprogL Esta opción requiere una licencia.Optimization Toolbox™ Para obtener más información, consulte .Definición de programación cuadrática (Optimization Toolbox)
'SMO'Optimización mínima secuencial (consulte )[17]

Los valores predeterminados son:

  • si se establece en un valor positivo'ISDA''OutlierFraction'

  • Lo contrario'SMO'

Ejemplo: 'Solver','ISDA'

Estimaciones iniciales de coeficientes alfa, especificadas como el par separado por comas que consta de un vector numérico.'Alpha' La longitud de debe ser igual al número de filas de .AlphaX

  • Cada elemento de corresponde a una observación en .AlphaX

  • no puede contener ninguna s.AlphaNaN

  • Si especifica y cualquiera de los argumentos de par nombre-valor de validación cruzada ( , , , , o ), el software devuelve un error.Alpha'CrossVal''CVPartition''Holdout''KFold''Leaveout'

Si contiene los valores que faltan, quite todas las filas de , , y que correspondan a los valores que faltan.YYXAlpha Es decir, escriba: Then, pass , , y como respuesta, predictores y estimaciones alfa iniciales, respectivamente.

idx = ~isnan(Y); Y = Y(idx); X = X(idx,:); alpha = alpha(idx);
YXalpha

El valor predeterminado es .zeros(size(Y,1))

Ejemplo: 'Alpha',0.1*ones(size(X,1),1)

Tipos de datos: single | double

Tamaño de caché, especificado como el par separado por comas que consta de o un escalar positivo.'CacheSize''maximal'

Si es , entonces el software reserva suficiente memoria para contener todo el -by- .CacheSize'maximal'nnMatriz de Gram

Si es un escalar positivo, el software reserva megabytes de memoria para entrenar el modelo.CacheSizeCacheSize

Ejemplo: 'CacheSize','maximal'

Tipos de datos: double | single | char | string

Marcar para recortar coeficientes alfa, especificados como el par separado por comas que consta de y o .'ClipAlphas'truefalse

Supongamos que el coeficiente alfa para la observación esj Αj y la restricción de observación de la caja esj Cj, 1,..., , dónde está el tamaño de la muestra de entrenamiento.jnn

ValorDescripción
trueEn cada iteración, si Αj está cerca de 0 o cerca Cj, a continuación, estableceMATLAB Αj 0 o a CjRespectivamente.
falseno cambia los coeficientes alfa durante la optimización.MATLAB

almacena los valores finales de en la propiedad del objeto de modelo SVM entrenado.MATLABαAlpha

puede afectar a la convergencia SMO e ISDA.ClipAlphas

Ejemplo: 'ClipAlphas',false

Tipos de datos: logical

Número de iteraciones entre la salida del mensaje de diagnóstico de optimización, especificado como el par separado por comas que consta de un entero no negativo.'NumPrint'

Si especifica y , el software muestra todos los mensajes de diagnóstico de optimización de SMO e ISDA cada iteración en la ventana de comandos.'Verbose',1'NumPrint',numprintnumprint

Ejemplo: 'NumPrint',500

Tipos de datos: double | single

Proporción esperada de valores atípicos en los datos de entrenamiento, especificada como el par separado por comas que consta de y un escalar numérico en el intervalo [0,1). elimina las observaciones con grandes gradientes, asegurando que elimina la fracción de observaciones especificada por el tiempo que se alcanza la convergencia.'OutlierFraction'fitrsvmfitrsvmOutlierFraction Este par nombre-valor solo es válido cuando es .'Solver''ISDA'

Ejemplo: 'OutlierFraction',0.1

Tipos de datos: single | double

Marcador para reemplazar observaciones duplicadas por observaciones individuales en los datos de entrenamiento, especificadas como el par separado por comas que consta de y o .'RemoveDuplicates'truefalse

Si es , entoncesRemoveDuplicatestrue fitrsvm reemplaza las observaciones duplicadas en los datos de entrenamiento por una sola observación del mismo valor. El peso de la observación única es igual a la suma de los pesos de los duplicados eliminados correspondientes (véase ).Weights

Sugerencia

Si el conjunto de datos contiene muchas observaciones duplicadas, especificar puede reducir considerablemente el tiempo de convergencia.'RemoveDuplicates',true

Tipos de datos: logical

Nivel de detalle, especificado como el par separado por comas que consta de y , , o .'Verbose'012 El valor de controla la cantidad de información de optimización que el software muestra en la ventana de comandos y guarda la información como una estructura en .VerboseMdl.ConvergenceInfo.History

En esta tabla se resumen las opciones de nivel de detalle disponibles.

ValorDescripción
0El software no muestra ni guarda la información de convergencia.
1El software muestra mensajes de diagnóstico y guarda los criterios de convergencia cada iteración, donde está el valor del argumento de par nombre-valor.numprintnumprint'NumPrint'
2El software muestra mensajes de diagnóstico y guarda los criterios de convergencia en cada iteración.

Ejemplo: 'Verbose',1

Tipos de datos: double | single

Otras opciones de regresión

contraer todo

Lista de predictores categóricos, especificada como el par separado por comas que consta de y uno de los valores de esta tabla.'CategoricalPredictors'

ValorDescripción
Vector de enteros positivosCada entrada del vector es un valor de índice correspondiente a la columna de los datos predictores ( o ) que contiene una variable categórica.XTbl
Vector lógicoUna entrada significa que la columna correspondiente de datos predictores ( o ) es una variable categórica.trueXTbl
Matriz de caracteresCada fila de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas de .PredictorNames Rellena los nombres con espacios en blanco adicionales para que cada fila de la matriz de caracteres tenga la misma longitud.
Matriz de cadenas o matriz de celdas de vectores de caracteresCada elemento de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas de .PredictorNames
'todos'Todos los predictores son categóricos.

De forma predeterminada, si los datos del predictor están en una tabla ( ),Tbl fitrsvm supone que una variable es categórica si es un vector lógico, vector categórico, matriz de caracteres, matriz de cadenas o matriz de celdas de vectores de caracteres. Si los datos del predictor son una matriz ( ),X fitrsvm asume que todos los predictores son continuos. Para identificar cualquier otro predictor como predictores categóricos, escépéscalos mediante el argumento de par nombre-valor.'CategoricalPredictors'

Para los predictores categóricos identificados, fitrsvm crea variables ficticias utilizando dos esquemas diferentes, dependiendo de si una variable categórica está desordenada u ordenada. Para obtener más información, consulte .Automatic Creation of Dummy Variables

Ejemplo: 'CategoricalPredictors','all'

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

Nombres de variables predictoras, especificados como el par separado por comas que consta de y una matriz de cadenas de nombres únicos o matriz de celdas de vectores de caracteres únicos.'PredictorNames' La funcionalidad de depende de la forma en que proporcione los datos de entrenamiento.'PredictorNames'

  • Si proporciona y , entonces puede utilizar para dar las variables predictoras en los nombres.XY'PredictorNames'X

    • El orden de los nombres en debe corresponder al orden de columna de .PredictorNamesX Es decir, es el nombre de , es el nombre de , y así sucesivamente.PredictorNames{1}X(:,1)PredictorNames{2}X(:,2) Además, y debe ser igual.size(X,2)numel(PredictorNames)

    • De forma predeterminada, es .PredictorNames{'x1','x2',...}

  • Si proporciona , entonces puede utilizar para elegir qué variables predictoras utilizar en el entrenamiento.Tbl'PredictorNames' Es decir fitrsvm utiliza sólo las variables predictoras en y la variable de respuesta en el entrenamiento.PredictorNames

    • debe ser un subconjunto de y no puede incluir el nombre de la variable de respuesta.PredictorNamesTbl.Properties.VariableNames

    • De forma predeterminada, contiene los nombres de todas las variables predictoras.PredictorNames

    • Es una buena práctica especificar los predictores para el entrenamiento usando uno o solo.'PredictorNames'Fórmula

Ejemplo: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

Tipos de datos: string | cell

Nombre de la 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 suministra o , entonces 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 , lo que significa , o ninguna transformación.'none'@(y)y Para una función o una función que defina, utilice su identificador de función.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 .myfunction = @(y)exp(y) A continuación, puede especificar la transformación de respuesta como .'ResponseTransform',myfunction

Tipos de datos: char | string | function_handle

Pesos de observación, especificados como el par separado por comas que consta de y un vector de valores numéricos.'Weights' El tamaño de debe ser igual al número de filas en . normaliza los valores de hasta sumar a 1.WeightsXfitrsvmWeights

Tipos de datos: single | double

Opciones de validación cruzada

contraer todo

Marca de validación cruzada, especificada como el par separado por comas que consta de y uno o .'CrossVal''on''off'

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

Para invalidar esta configuración de validación cruzada, utilice uno de estos argumentos de par nombre-valor: , , o .CVPartitionHoldoutKFoldLeaveout Para crear un modelo validado entre referencias cruzadas, puede usar un argumento de par nombre-valor de validación cruzada a la vez.

Alternativamente, puede validar el modelo más adelante usando el crossval Método.

Ejemplo: 'CrossVal','on'

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

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: Supongamos que crea una partición aleatoria para la validación cruzada de 5 veces en 500 observaciones mediante .cvp = cvpartition(500,'KFold',5) A continuación, puede especificar el modelo validado entre cruces mediante .'CVPartition',cvp

Fracción de los datos utilizados para la validación de retención, especificada como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Holdout' Si usted especifica, después el software completa estos pasos:'Holdout',p

  1. Seleccione y reserve aleatoriamente % de los datos como datos de validación y entrene el modelo con el resto de los datos.p*100

  2. Almacene el modelo compacto y entrenado en la propiedad del modelo validado de forma cruzada.Trained

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

Número de pliegues que se van a utilizar en un modelo validado por cruz, especificado como el par separado por comas que consta de y un valor entero positivo mayor que 1.'KFold' Si usted especifica, después el software completa estos pasos:'KFold',k

  1. Particione aleatoriamente los datos en conjuntos.k

  2. Para cada conjunto, reserve el conjunto como datos de validación y entrene el modelo con el otro k – 1 Establece.

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda -by-1 en la propiedad del modelo validado cruzadamente.kkTrained

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Deje el indicador de validación cruzada uno-out, especificado como el par separado por comas que consta de y o .'Leaveout''on''off' Si especifica , entonces, para cada una de las observaciones (donde está el número de observaciones excluyendo las observaciones faltantes, especificadas en la propiedad del modelo), el software completa estos pasos:'Leaveout','on'nnNumObservations

  1. Reserve la observación como datos de validación y entrene el modelo utilizando las otras observaciones – 1.n

  2. Almacene los modelos compactos y entrenados en las celdas de un vector de celda -by-1 en la propiedad del modelo validado cruzadamente.nnTrained

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Leaveout','on'

Controles de convergencia

contraer todo

Tolerancia para la diferencia de gradiente entre los infractores superior e inferior obtenidos por SMO o ISDA, especificado como el par separado por comas que consta de y un escalar no negativo.'DeltaGradientTolerance'

Ejemplo: 'DeltaGradientTolerance',1e-4

Tipos de datos: single | double

Tolerancia de separación de viabilidad obtenida por SMO o ISDA, especificada como el par separado por comas que consta de un escalar no negativo.'GapTolerance'

Si es , después no utiliza este parámetro para marcar la convergencia.GapTolerance0fitrsvm

Ejemplo: 'GapTolerance',1e-4

Tipos de datos: single | double

Número máximo de iteraciones de optimización numérica, especificado como el par separado por comas que consta de y un entero positivo.'IterationLimit'

El software devuelve un modelo entrenado independientemente de si la rutina de optimización converge correctamente. contiene información de convergencia.Mdl.ConvergenceInfo

Ejemplo: 'IterationLimit',1e8

Tipos de datos: double | single

Tolerancia para la infracción de Karush-Kuhn-Tucker (KKT), especificada como el par separado por comas que consta de un valor escalar no negativo.'KKTTolerance'

Este par nombre-valor solo se aplica si es o .'Solver''SMO''ISDA'

Si es , después no utiliza este parámetro para marcar la convergencia.KKTTolerance0fitrsvm

Ejemplo: 'KKTTolerance',1e-4

Tipos de datos: single | double

Número de iteraciones entre las reducciones del conjunto activo, especificado como el par separado por comas que consta de un entero no negativo.'ShrinkagePeriod'

Si establece , el software no reduce el conjunto activo.'ShrinkagePeriod',0

Ejemplo: 'ShrinkagePeriod',1000

Tipos de datos: double | single

Optimización de hiperparámetros

contraer todo

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

  • — No optimizar.'none'

  • — Utilice .'auto'{'BoxConstraint','KernelScale','Epsilon'}

  • — Optimizar todos los parámetros elegibles.'all'

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

  • Vector de objetos, normalmente la salida de .optimizableVariablehyperparameters

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

Nota

los valores reemplazan los valores que establezca utilizando otros argumentos de par nombre-valor.'OptimizeHyperparameters' Por ejemplo, establecer para hacer que se apliquen los valores.'OptimizeHyperparameters''auto''auto'

Los parámetros elegibles para son:fitrsvm

  • — búsquedas entre valores positivos, por defecto escalado de registro en el rango .BoxConstraintfitrsvm[1e-3,1e3]

  • — búsquedas entre valores positivos, por defecto escalado de registro en el rango .KernelScalefitrsvm[1e-3,1e3]

  • — búsquedas entre valores positivos, por defecto escalado de registro en el rango .Epsilonfitrsvm[1e-3,1e2]*iqr(Y)/1.349

  • — búsquedas entre , , y .KernelFunctionfitrsvm'gaussian''linear''polynomial'

  • — búsquedas entre enteros en el rango .PolynomialOrderfitrsvm[2,4]

  • — búsquedas entre y .Standardizefitrsvm'true''false'

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

load carsmall params = hyperparameters('fitrsvm',[Horsepower,Weight],MPG); 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 comandoy los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y las gráficas, 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 obtener un ejemplo, consulte .Optimizar la regresión de SVM

Ejemplo: 'OptimizeHyperparameters','auto'

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

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

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

  • — Buscar al azar entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en un orden aleatorio, utilizando muestreo uniforme sin reemplazo de la cuadrícula.'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 objetivo.per-second Las funciones de adquisición cuyos nombres incluyen modifican su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte .Acquisition Function Types

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

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

Inf
NumGridDivisionsPara , el número de valores en cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que dan 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 deben mostrar trazados. Si , este campo traza el mejor valor de función objetivo con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es , también se traza un modelo de la función objetivo con los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se deben guardar los resultados cuando es .Optimizer'bayesopt' Si , este campo sobrescribe una variable de área de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Visualice en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Pantalla iterativa con información adicional2

Para obtener más información, consulte 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™ Debido a la no reproducibilidad de la sincronización paralela, la optimización bayesiana paralela no produce necesariamente resultados reproducibles. Para obtener más información, consulte .Parallel Bayesian Optimizationfalse
Repartition

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

por lo general da los resultados más robustos porque esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, se requiere al menos el doble de evaluaciones de funciones.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, tal como lo creó .cvpartitioncvpartitionsi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de retenció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 SVM entrenado, devuelto como modelo o modelo validado entre referencias cruzadas.RegressionSVMRegressionPartitionedSVM

Si establece cualquiera de los argumentos de par nombre-valor , , , , o , a continuación, es un modelo validado entre sí.KFoldHoldoutLeaveoutCrossValCVPartitionMdlRegressionPartitionedSVM De lo contrario, es un modelo.MdlRegressionSVM

Limitaciones

fitrsvm admite conjuntos de datos de baja a moderada dimensión. Para el conjunto de datos de alta dimensión, utilice en su lugar.fitrlinear

Sugerencias

  • A menos que el conjunto de datos sea grande, intente siempre estandarizar los predictores (consulte ).Standardize La estandarización hace que los predictores sean insensibles a las escalas en las que se miden.

  • Se recomienda validar cruzadamente mediante el argumento de par nombre-valor.KFold Los resultados de la validación cruzada determinan qué tan bien se generaliza el modelo sVM.

  • Sparsity en vectores de soporte es una propiedad deseable de un modelo SVM. Para reducir el número de vectores de soporte, establezca el argumento de par nombre-valor en un valor grande.BoxConstraint Esta acción también aumenta el tiempo de entrenamiento.

  • Para un tiempo de entrenamiento óptimo, establezca el límite de memoria que permita el límite de memoria del equipo.CacheSize

  • Si espera muchos menos vectores de soporte que las observaciones en el conjunto de entrenamiento, puede acelerar significativamente la convergencia reduciendo el conjunto activo mediante el argumento de par nombre-valor .'ShrinkagePeriod' Es una buena práctica de usar .'ShrinkagePeriod',1000

  • Las observaciones duplicadas que están lejos de la línea de regresión no afectan a la convergencia. Sin embargo, sólo unas pocas observaciones duplicadas que ocurren cerca de la línea de regresión pueden ralentizar la convergencia considerablemente. Para acelerar la convergencia, especifique si:'RemoveDuplicates',true

    • El conjunto de datos contiene muchas observaciones duplicadas.

    • Sospecha que algunas observaciones duplicadas pueden caer cerca de la línea de regresión.

    Sin embargo, para mantener el conjunto de datos original durante el entrenamiento, fitrsvm deben almacenar temporalmente conjuntos de datos independientes: el original y otro sin las observaciones duplicadas. Por lo tanto, si especifica para conjuntos de datos que contienen pocos duplicados,true fitrsvm consume cerca del doble de memoria de los datos originales.

  • Después de entrenar un modelo, puede generar código C/C++ que predice las respuestas para nuevos datos. La generación de código C/C++ requiere MATLAB Coder™. Para obtener más información, consulte .Introduction to Code Generation

Algoritmos

  • Para la formulación matemática de problemas de regresión SVM lineales y no lineales y los algoritmos del solucionador, véase .Comprender la regresión de la máquina vectorial de soporte

  • , , vector de caracteres vacíos ( ), cadena vacía ( ) y los valores indican que faltan valores de datos.NaN<undefined>''""<missing> fitrsvm elimina filas enteras de datos correspondientes a una respuesta que falta. Al normalizar pesos, fitrsvm ignora cualquier peso correspondiente a una observación con al menos un predictor que falta. Por consiguiente, es posible que las restricciones del cuadro de observación no sea igual a .BoxConstraint

  • fitrsvm elimina las observaciones que tienen cero peso.

  • Si establece y , entonces'Standardize',true'Weights' fitrsvm estandariza los predictores utilizando sus correspondientes medios ponderados y desviaciones estándar ponderadas. Es decir fitrsvm estandariza el predictor (jXj) utilizando

    xj=xjμjσj.

    • μj=1kwkkwkxjk.

    • Xjk es la observación (fila) del predictor (columna).kj

    • (σj)2=v1v12v2kwk(xjkμj)2.

    • v1=jwj.

    • v2=j(wj)2.

  • Si los datos del predictor contienen variables categóricas, el software generalmente utiliza una codificación ficticia completa para estas variables. El software crea una variable ficticia para cada nivel de cada variable categórica.

    • La propiedad almacena un elemento para cada uno de los nombres de variable predictor originales.PredictorNames Por ejemplo, supongamos que hay tres predictores, uno de los cuales es una variable categórica con tres niveles. Luego es una matriz de celdas 1 por 3 de vectores de caracteres que contiene los nombres originales de las variables predictoras.PredictorNames

    • La propiedad almacena un elemento para cada una de las variables predictoras, incluidas las variables ficticias.ExpandedPredictorNames Por ejemplo, supongamos que hay tres predictores, uno de los cuales es una variable categórica con tres niveles. Luego es una matriz de celdas de 1 por 5 vectores de caracteres que contiene los nombres de las variables predictoras y las nuevas variables ficticias.ExpandedPredictorNames

    • Del mismo modo, la propiedad almacena un coeficiente beta para cada predictor, incluidas las variables ficticias.Beta

    • La propiedad almacena los valores predictores para los vectores de soporte, incluidas las variables ficticias.SupportVectors Por ejemplo, supongamos que hay vectores de soporte y tres predictores, uno de los cuales es una variable categórica con tres niveles.m Entonces es una matriz -by-5.SupportVectorsm

    • La propiedad almacena los datos de entrenamiento como entrada original.X No incluye las variables ficticias. Cuando la entrada es una tabla, contiene solo las columnas utilizadas como predictores.X

  • Para los predictores especificados en una tabla, si alguna de las variables contiene categorías ordenadas (ordinales), el software utiliza la codificación ordinal para estas variables.

    • Para una variable que tiene niveles ordenados, el software creak k – 1 variables ficticias. La variable ficticia esj -1 para niveles hasta , yj +1 para niveles j + 1 a través de.k

    • Los nombres de las variables ficticias almacenadas en la propiedad indican el primer nivel con el valorExpandedPredictorNames +1. Las tiendas de software k – 1 nombres predictores adicionales para las variables ficticias, incluidos los nombres de los niveles 2, 3, ..., .k

  • Todos los solucionadores implementan 1 minimización de margen flexible.L

  • Sea la proporción de valores atípicos que espera en los datos de entrenamiento.p Si establece , el software implementa .'OutlierFraction',paprendizaje robusto En otras palabras, el software intenta eliminar el 100 % de las observaciones cuando converge el algoritmo de optimización.p Las observaciones eliminadas corresponden a gradientes de gran magnitud.

Referencias

[1] Clark, D., Z. Schreter, A. Adams. A Quantitative Comparison of Dystal and Backpropagation, submitted to the Australian Conference on Neural Networks, 1996.

[2] Fan, R.-E., P.-H. Chen, and C.-J. Lin. “Working set selection using second order information for training support vector machines.” Journal of Machine Learning Research, Vol 6, 2005, pp. 1889–1918.

[3] Kecman V., T. -M. Huang, and M. Vogt. “Iterative Single Data Algorithm for Training Kernel Machines from Huge Data Sets: Theory and Performance.” In Support Vector Machines: Theory and Applications. Edited by Lipo Wang, 255–274. Berlin: Springer-Verlag, 2005.

[4] Lichman, M. UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.

[5] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. The Population Biology of Abalone (Haliotis species) in Tasmania. I. Blacklip Abalone (H. rubra) from the North Coast and Islands of Bass Strait, Sea Fisheries Division, Technical Report No. 48, 1994.

[6] Waugh, S. Extending and benchmarking Cascade-Correlation, Ph.D. thesis, Computer Science Department, University of Tasmania, 1995.

Capacidades ampliadas

Introducido en R2015b