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.

fitcsvm

Clasificador de máquina de vectores de soporte de tren (SVM) para clasificación binaria y de una clase

Descripción

entrena o realiza una validación cruzada de un modelo de máquina de vectores de soporte (SVM) para la clasificación de una clase y de dos clases (binaria) en un conjunto de datos de predictor de baja dimensión o de dimensión moderada. admite la asignación de los Datos predictores mediante funciones del kernel y admite la optimización mínima secuencial (SMO), el algoritmo de datos único iterativo (ISDA) o 1 minimización de margen flexible mediante programación cuadrática para la minimización de funciones objetivas.fitcsvmfitcsvmL

Para entrenar un modelo de SVM lineal para la clasificación binaria en un conjunto de datos de alta dimensión, es decir, un conjunto de datos que incluye muchas variables predictoras, utilice en su lugar.fitclinear

Para el aprendizaje multiclase con modelos de SVM binarios combinados, utilice códigos de salida de corrección de errores (ECOC). Para obtener más información, consulte.fitcecoc

Para entrenar un modelo de regresión de SVM, consulte para conjuntos de Datos predictores de dimensiones reducidas y moderadas, o para conjuntos de datos de alta dimensión.fitrsvmfitrlinear

Mdl = fitcsvm(Tbl,ResponseVarName) Devuelve un entrenado con los datos de ejemplo contenidos en la tabla. es el nombre de la variable que contiene las etiquetas de clase para la clasificación de una clase o de dos clases.clasificador de máquina de vectores de soporte (SVM)MdlTblResponseVarNameTbl

Mdl = fitcsvm(Tbl,formula) Devuelve un clasificador de SVM entrenado con los datos de ejemplo contenidos en la tabla. es un modelo explicativo de la respuesta y un subconjunto de las variables predictoras utilizadas para ajustarse.TblFórmulaTblMdl

Mdl = fitcsvm(Tbl,Y) Devuelve un clasificador de SVM entrenado usando las variables predictoras en la tabla y las etiquetas de clase en Vector.TblY

ejemplo

Mdl = fitcsvm(X,Y) Devuelve un clasificador de SVM entrenado usando los predictores en la matriz y las etiquetas de clase en Vector para una clase o clasificación de dos clases.XY

ejemplo

Mdl = fitcsvm(___,Name,Value) especifica opciones utilizando uno o más argumentos de par nombre-valor además de los argumentos de entrada en sintaxis anteriores. Por ejemplo, puede especificar el tipo de validación cruzada, el coste de la clasificación errónea y el tipo de función de transformación de puntuación.

Ejemplos

contraer todo

Cargue el conjunto de datos de iris de Fisher. Quitar las longitudes y anchuras sepales y todos los irises observados setosa.

load fisheriris inds = ~strcmp(species,'setosa'); X = meas(inds,3:4); y = species(inds);

Entrenar un clasificador SVM utilizando el conjunto de datos procesados.

SVMModel = fitcsvm(X,y)
SVMModel =    ClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'versicolor'  'virginica'}            ScoreTransform: 'none'           NumObservations: 100                     Alpha: [24x1 double]                      Bias: -14.4149          KernelParameters: [1x1 struct]            BoxConstraints: [100x1 double]           ConvergenceInfo: [1x1 struct]           IsSupportVector: [100x1 logical]                    Solver: 'SMO'     Properties, Methods  

es un clasificador entrenado.SVMModelClassificationSVM Mostrar las propiedades de.SVMModel Por ejemplo, para determinar el orden de la clase, utilice la notación de puntos.

classOrder = SVMModel.ClassNames
classOrder = 2x1 cell array
    {'versicolor'}
    {'virginica' }

La primera clase () es la clase negativa, y la segunda () es la clase positiva.'versicolor''virginica' Puede cambiar el orden de la clase durante el entrenamiento mediante el argumento de par nombre-valor.'ClassNames'

Trace un diagrama de dispersión de los datos y circule los vectores de soporte.

sv = SVMModel.SupportVectors; figure gscatter(X(:,1),X(:,2),y) hold on plot(sv(:,1),sv(:,2),'ko','MarkerSize',10) legend('versicolor','virginica','Support Vector') hold off

Los vectores de soporte son observaciones que ocurren en o más allá de sus límites de clase estimados.

Puede ajustar los límites (y, por lo tanto, el número de vectores de soporte) estableciendo una restricción de cuadro durante el entrenamiento mediante el argumento de par nombre-valor.'BoxConstraint'

Cargue el conjunto de datos.ionosphere

load ionosphere rng(1); % For reproducibility

Entrenar un clasificador SVM usando el kernel de base radial. Deje que el software encuentre un valor de escala para la función del kernel. Estandarizar los predictores.

SVMModel = fitcsvm(X,Y,'Standardize',true,'KernelFunction','RBF',...     'KernelScale','auto');

es un clasificador entrenado.SVMModelClassificationSVM

Valide en cruz el clasificador SVM. De forma predeterminada, el software utiliza la validación cruzada de 10 veces.

CVSVMModel = crossval(SVMModel);

es un clasificador con validación cruzada.CVSVMModelClassificationPartitionedModel

Calcule la tasa de clasificación errónea fuera de muestra.

classLoss = kfoldLoss(CVSVMModel)
classLoss = 0.0484 

La tasa de generalización es de aproximadamente 5%.

Modificar el conjunto de datos de iris de Fisher asignando todos los Iris a la misma clase. Detecte valores atípicos en el conjunto de datos modificados y confirme la proporción esperada de las observaciones que son valores atípicos.

Cargue el conjunto de datos de iris de Fisher. Quite las longitudes y anchos del pétalo. Trate todos los iris como viniendo de la misma clase.

load fisheriris X = meas(:,1:2); y = ones(size(X,1),1);

Entrenar un clasificador SVM utilizando el conjunto de datos modificado. Supongamos que el 5% de las observaciones son valores atípicos. Estandarizar los predictores.

rng(1); SVMModel = fitcsvm(X,y,'KernelScale','auto','Standardize',true,...     'OutlierFraction',0.05);

es un clasificador entrenado.SVMModelClassificationSVM De forma predeterminada, el software utiliza el kernel gaussiano para el aprendizaje de una sola clase.

Trazar las observaciones y el límite de decisión. Marque los vectores de soporte y los posibles valores atípicos.

svInd = SVMModel.IsSupportVector; h = 0.02; % Mesh grid step size [X1,X2] = meshgrid(min(X(:,1)):h:max(X(:,1)),...     min(X(:,2)):h:max(X(:,2))); [~,score] = predict(SVMModel,[X1(:),X2(:)]); scoreGrid = reshape(score,size(X1,1),size(X2,2));  figure plot(X(:,1),X(:,2),'k.') hold on plot(X(svInd,1),X(svInd,2),'ro','MarkerSize',10) contour(X1,X2,scoreGrid) colorbar; title('{\bf Iris Outlier Detection via One-Class SVM}') xlabel('Sepal Length (cm)') ylabel('Sepal Width (cm)') legend('Observation','Support Vector') hold off

El contorno que separa los valores atípicos del resto de los datos se produce donde está el valor de contorno.0

Compruebe que la fracción de observaciones con puntuaciones negativas en los datos validados de forma cruzada sea cercana al 5%.

CVSVMModel = crossval(SVMModel); [~,scorePred] = kfoldPredict(CVSVMModel); outlierRate = mean(scorePred<0)
outlierRate = 0.0467 

Cree un gráfico de dispersión del conjunto de datos.fisheriris Trate las coordenadas de una rejilla dentro del trazado como nuevas observaciones de la distribución del conjunto de datos, y encuentre los límites de la clase asignando las coordenadas a una de las tres clases del conjunto de datos.

Cargue el conjunto de datos de iris de Fisher. Utilice las longitudes y anchos de pétalo como los predictores.

load fisheriris X = meas(:,3:4); Y = species;

Examine un gráfico de dispersión de los datos.

figure gscatter(X(:,1),X(:,2),Y); h = gca; lims = [h.XLim h.YLim]; % Extract the x and y axis limits title('{\bf Scatter Diagram of Iris Measurements}'); xlabel('Petal Length (cm)'); ylabel('Petal Width (cm)'); legend('Location','Northwest');

Los datos contienen tres clases, una de las cuales es linealmente separables de las otras.

Para cada clase:

  1. Cree un vector lógico () que indique si una observación es un miembro de la clase.indx

  2. Entrenar un clasificador SVM utilizando los Datos predictores y.indx

  3. Almacene el clasificador en una celda de una matriz de celdas.

Defina el orden de la clase.

SVMModels = cell(3,1); classes = unique(Y); rng(1); % For reproducibility  for j = 1:numel(classes)     indx = strcmp(Y,classes(j)); % Create binary classes for each classifier     SVMModels{j} = fitcsvm(X,indx,'ClassNames',[false true],'Standardize',true,...         'KernelFunction','rbf','BoxConstraint',1); end

es una matriz de celdas de 3 por 1, con cada celda que contiene un clasificador.SVMModelsClassificationSVM Para cada célula, la clase positiva es setosa, versicolor y virginica, respectivamente.

Defina una rejilla fina dentro del trazado y trate las coordenadas como nuevas observaciones de la distribución de los datos de entrenamiento. Calcule la puntuación de las nuevas observaciones utilizando cada clasificador.

d = 0.02; [x1Grid,x2Grid] = meshgrid(min(X(:,1)):d:max(X(:,1)),...     min(X(:,2)):d:max(X(:,2))); xGrid = [x1Grid(:),x2Grid(:)]; N = size(xGrid,1); Scores = zeros(N,numel(classes));  for j = 1:numel(classes)     [~,score] = predict(SVMModels{j},xGrid);     Scores(:,j) = score(:,2); % Second column contains positive-class scores end

Cada fila de contiene tres puntuaciones.Scores El índice del elemento con la puntuación más grande es el índice de la clase a la que pertenece más probable la observación de la nueva clase.

Asocie cada nueva observación con el clasificador que le da la puntuación máxima.

[~,maxScore] = max(Scores,[],2);

Color en las regiones de la gráfica en función de la clase a la que pertenece la nueva observación correspondiente.

figure h(1:3) = gscatter(xGrid(:,1),xGrid(:,2),maxScore,...     [0.1 0.5 0.5; 0.5 0.1 0.5; 0.5 0.5 0.1]); hold on h(4:6) = gscatter(X(:,1),X(:,2),Y); title('{\bf Iris Classification Regions}'); xlabel('Petal Length (cm)'); ylabel('Petal Width (cm)'); legend(h,{'setosa region','versicolor region','virginica region',...     'observed setosa','observed versicolor','observed virginica'},...     'Location','Northwest'); axis tight hold off

Optimice los hiperparámetros automáticamente mediante.fitcsvm

Cargue el conjunto de datos.ionosphere

load ionosphere

Encuentre hiperparámetros que minimicen la pérdida de validación cruzada de cinco veces mediante la optimización automática de hiperparámetros. Para reproducibilidad, establezca la semilla aleatoria y utilice la función de adquisición.'expected-improvement-plus'

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

|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | BoxConstrain-|  KernelScale | |      | result |             | runtime     | (observed)  | (estim.)    | t            |              | |=====================================================================================================| |    1 | Best   |     0.21652 |      18.493 |     0.21652 |     0.21652 |       64.836 |    0.0015729 | |    2 | Accept |     0.35897 |     0.16509 |     0.21652 |     0.22539 |     0.036335 |       5.5755 | |    3 | Best   |     0.13105 |       7.131 |     0.13105 |     0.14152 |    0.0022147 |    0.0023957 | |    4 | Accept |     0.35897 |     0.10991 |     0.13105 |     0.13108 |       5.1259 |        98.62 | |    5 | Accept |      0.1339 |      14.513 |     0.13105 |     0.13111 |    0.0011599 |    0.0010098 | |    6 | Accept |     0.13105 |      3.3991 |     0.13105 |     0.13106 |    0.0010151 |    0.0045756 | |    7 | Best   |     0.12821 |      9.0972 |     0.12821 |     0.12819 |    0.0010563 |    0.0022307 | |    8 | Accept |      0.1339 |      11.601 |     0.12821 |     0.13013 |    0.0010113 |    0.0026572 | |    9 | Accept |     0.12821 |      6.4781 |     0.12821 |     0.12976 |    0.0010934 |    0.0022461 | |   10 | Accept |     0.12821 |      3.8203 |     0.12821 |     0.12933 |    0.0010315 |    0.0023551 | |   11 | Accept |      0.1396 |       17.31 |     0.12821 |     0.12954 |       994.04 |      0.20756 | |   12 | Accept |     0.13105 |      16.182 |     0.12821 |     0.12945 |       20.145 |     0.044584 | |   13 | Accept |     0.21368 |      18.317 |     0.12821 |     0.12787 |       903.79 |     0.056122 | |   14 | Accept |      0.1339 |     0.26202 |     0.12821 |     0.12939 |     0.018688 |     0.038639 | |   15 | Accept |     0.12821 |      2.8504 |     0.12821 |      0.1295 |       5.6464 |      0.15938 | |   16 | Accept |     0.13675 |      9.4282 |     0.12821 |     0.12798 |       0.5485 |     0.020716 | |   17 | Accept |     0.12821 |      6.5178 |     0.12821 |     0.12955 |       1.2899 |     0.063233 | |   18 | Accept |      0.1339 |      9.3664 |     0.12821 |     0.12957 |       869.51 |      0.94889 | |   19 | Accept |     0.13675 |       9.368 |     0.12821 |     0.12957 |       112.89 |      0.31231 | |   20 | Accept |     0.13105 |     0.12209 |     0.12821 |     0.12958 |    0.0010803 |      0.03695 | |=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | BoxConstrain-|  KernelScale | |      | result |             | runtime     | (observed)  | (estim.)    | t            |              | |=====================================================================================================| |   21 | Accept |     0.13675 |      9.5117 |     0.12821 |      0.1299 |       7.7299 |     0.076169 | |   22 | Best   |     0.12536 |     0.17058 |     0.12536 |     0.13007 |    0.0010485 |     0.013248 | |   23 | Accept |     0.20228 |      18.202 |     0.12536 |     0.12548 |     0.060212 |    0.0010323 | |   24 | Accept |      0.1339 |     0.24592 |     0.12536 |     0.12556 |      0.30698 |      0.16097 | |   25 | Accept |      0.1339 |      15.142 |     0.12536 |     0.12923 |       963.05 |       0.5183 | |   26 | Accept |     0.13675 |     0.27628 |     0.12536 |     0.12888 |    0.0039748 |     0.015475 | |   27 | Accept |      0.1339 |      1.5718 |     0.12536 |     0.12889 |      0.33582 |     0.066787 | |   28 | Accept |      0.1339 |      15.411 |     0.12536 |     0.12884 |       4.2069 |     0.032774 | |   29 | Best   |     0.12536 |     0.13208 |     0.12536 |     0.12658 |    0.0010233 |     0.017839 | |   30 | Accept |     0.12536 |     0.13041 |     0.12536 |     0.12579 |    0.0010316 |     0.019592 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 249.4758 seconds. Total objective function evaluation time: 225.3244  Best observed feasible point:     BoxConstraint    KernelScale     _____________    ___________        0.0010233       0.017839    Observed objective function value = 0.12536 Estimated objective function value = 0.12579 Function evaluation time = 0.13208  Best estimated feasible point (according to models):     BoxConstraint    KernelScale     _____________    ___________        0.0010233       0.017839    Estimated objective function value = 0.12579 Estimated function evaluation time = 0.1535 
Mdl =    ClassificationSVM                          ResponseName: 'Y'                 CategoricalPredictors: []                            ClassNames: {'b'  'g'}                        ScoreTransform: 'none'                       NumObservations: 351     HyperparameterOptimizationResults: [1×1 BayesianOptimization]                                 Alpha: [91×1 double]                                  Bias: -5.6976                      KernelParameters: [1×1 struct]                        BoxConstraints: [351×1 double]                       ConvergenceInfo: [1×1 struct]                       IsSupportVector: [351×1 logical]                                Solver: 'SMO'     Properties, Methods  

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificado 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 las variables de varias columnas ni 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 usar 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 en debe ser igual.Tbl

Tipos de datos: table

Nombre de variable de respuesta, especificado como el nombre de una variable en.Tbl

Debe especificar como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si la variable de respuesta se almacena como, a continuación, especifíquese como.YTbl.Y'Y' De lo contrario, el software trata todas las columnas de, incluidos, como predictores al entrenar el modelo.TblY

La variable de respuesta debe ser una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Si es una matriz de caracteres, cada elemento de la variable de respuesta debe corresponder a una fila de la matriz.Y

Es una buena práctica para especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames

Tipos de datos: char | string

Modelo explicativo de la respuesta y un subconjunto de las variables predictoras, especificadas como un vector de caracteres o un 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 Las variables deben ser nombres de variable en ().TblTbl.Properties.VariableNames

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 en la que no aparezcan.TblFórmula

Tipos de datos: char | string

Etiquetas de clase a las que se entrena el modelo SVM, 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.

  • debe contener como máximo dos clases distintas.Y Para el aprendizaje multiclase, véase.fitcecoc

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

  • La longitud y el número de filas en o deben ser iguales.YTblX

  • Es una buena práctica para especificar el orden de la clase mediante el argumento de par nombre-valor.ClassNames

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

Datos predictores a los que se entrena el clasificador SVM, especificados como una matriz de valores numéricos.

Cada fila de corresponde a una observación (también conocida como una instancia o ejemplo), y cada columna corresponde a un predictor (también conocido como una característica).X

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

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

Tipos de datos: double | single

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: realiza una validación cruzada de 10 veces, aplica el doble de penalización a falsos positivos en comparación con los falsos negativos y transforma las puntuaciones mediante la función de signo.fitcsvm(X,Y,'KFold',10,'Cost',[0 2;1 0],'ScoreTransform','sign')

Las opciones de SVM

contraer todo

, especificado como el par separado por comas que consta de un escalar positivo.Restricción de cuadro'BoxConstraint'

Para el aprendizaje de una sola clase, el software siempre establece la restricción de caja.1

Para obtener más detalles sobre las relaciones y el comportamiento algorítmico de,,, y, vea.BoxConstraintCostoPriorStandardizeWeightsAlgoritmos

Ejemplo: 'BoxConstraint',100

Tipos de datos: double | single

Función del kernel utilizada para computar los elementos del, especificado como el par separado por comas que consiste en y un nombre de función del kernel.Matriz de Gram'KernelFunction' Supongo queGXj,Xk) es elemento (,) de la matriz Gram, dondejk Xj Y Xk son vectores dimensionales que representan observaciones y en.pjkX Esta tabla describe los nombres de función del kernel admitidos y sus formas funcionales.

Nombre de función del kernelDescripciónFórmula
O'gaussian''rbf'Kernel gaussiano o función de base radial (RBF), por defecto para el aprendizaje de una clase

G(xj,xk)=exp(xjxk2)

'linear'Kernel lineal, por defecto para el aprendizaje de dos clases

G(xj,xk)=xjxk

'polynomial'Núcleo polinómico. Uso 'PolynomialOrder',q para especificar un kernel Polinómico de orden q.

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

Puede establecer su propia función del kernel, por ejemplo,, estableciendo.kernel'KernelFunction','kernel' El valor debe tener este formulario. Dónde:kernel

function G = kernel(U,V)

  • es una-por-matriz.Ump Las columnas corresponden a las variables predictoras y las filas corresponden a las observaciones.

  • es una-por-matriz.Vnp Las columnas corresponden a las variables predictoras y las filas corresponden a las observaciones.

  • es una-por-de las filas de y.GmnMatriz de GramUV

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 del kernel sigmoide en lugar de.'mysigmoid''sigmoid'

Ejemplo: 'KernelFunction','gaussian'

Tipos de datos: char | string

Parámetro de escala del kernel, especificado como el par separado por comas que consta de un escalar positivo o o un resultado.'KernelScale''auto' El software divide todos los elementos de la matriz predictora por el valor de.XKernelScale Entonces, el software aplica la norma de kernel apropiada para computar la matriz Gram.

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

  • Si especifica y su propia función del kernel, por ejemplo,, entonces 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 función del kernel Polinómico, especificada como el par separado por comas que consta de un entero positivo.'PolynomialOrder'

Si usted fija y no es, después el software arroja un error.'PolynomialOrder'KernelFunction'polynomial'

Ejemplo: 'PolynomialOrder',2

Tipos de datos: double | single

Parámetro de desfase del kernel, especificado como el par separado por comas que consta de un escalar no negativo.'KernelOffset'

El software se suma 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

Marcar para estandarizar los Datos predictores, 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 variable predictora (o) por la media de la columna ponderada correspondiente y la desviación estándar.XTbl Para obtener más información sobre la estandarización ponderada, consulte. no estandariza los datos contenidos en las columnas de variables ficticias generadas para los predictores categóricos.AlgoritmosMATLAB

  • El software entrena el clasificador utilizando los predictores estandarizados, pero almacena los predictores no estandarizados como una matriz o tabla en la propiedad clasificador.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 de datos único iterativo (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 (véase)[17]

El valor predeterminado es para el aprendizaje de dos clases o si se establece en un valor positivo, y de lo contrario.'ISDA''OutlierFraction''SMO'

Ejemplo: 'Solver','ISDA'

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

  • Cada elemento corresponde a una observación en.'Alpha'X

  • no puede contener ninguna s.'Alpha'NaN

  • 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 corresponden a los valores que faltan.YYX'Alpha' Es decir, escriba: a continuación, pase, y como la respuesta, predictores y estimaciones alfa iniciales, respectivamente.

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

Los valores predeterminados son:

  • para el aprendizaje de una sola clase0.5*ones(size(X,1),1)

  • para el aprendizaje de dos claseszeros(size(X,1),1)

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

Tipos de datos: double | single

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

Si es, entonces el software reserva bastante memoria para sostener el todo-por-.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 los coeficientes alfa, especificados como el par separado por comas que consta de y cualquiera o.'ClipAlphas'truefalse

Supongamos que el coeficiente alfa para la observación esj Αj y la restricción de la caja de observación esj Cj, = 1,...,, donde 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 a 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 de SVM entrenado.MATLABαAlpha

puede afectar a la convergencia SMO e ISDA.ClipAlphas

Ejemplo: 'ClipAlphas',false

Tipos de datos: logical

parámetro, especificado como el par separado por comas que consta de y un escalar positivo. debe ser mayor que y como máximo.νEl aprendizaje de una clase'Nu'Nu01

Se establece para controlar el equilibrio entre garantizar que la mayoría de los ejemplos de formación están en la clase positiva y minimizar los pesos en la función de puntuación.Nu

Ejemplo: 'Nu',0.25

Tipos de datos: double | single

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

Si especifica y, a continuación, el software muestra todos los mensajes de diagnóstico de optimización de SMO e ISDA cada iteraciones 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, especificados como el par separado por comas que consta de y un escalar numérico en el intervalo [0,1).'OutlierFraction'

Supongamos que se establece, donde es un valor mayor que 0.'OutlierFraction',outlierfractionoutlierfraction

  • Para el aprendizaje de dos clases, el software implementa.aprendizaje robusto En otras palabras, el software intenta eliminar el 100 *% de las observaciones cuando converge el algoritmo de optimización.outlierfraction Las observaciones eliminadas corresponden a gradientes de gran magnitud.

  • Para el aprendizaje de una sola clase, el software encuentra un término de sesgo apropiado tal que de las observaciones en el conjunto de entrenamiento tienen puntuaciones negativas.outlierfraction

Ejemplo: 'OutlierFraction',0.01

Tipos de datos: double | single

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

Si es así,RemoveDuplicatestrue fitcsvm reemplaza las observaciones duplicadas en los datos de entrenamiento con una sola observación del mismo valor. El peso de la única observación es igual a la suma de los pesos de los duplicados eliminados correspondientes (ver).Weights

Sugerencia

Si el conjunto de datos contiene muchas observaciones duplicadas, la especificación puede reducir considerablemente el tiempo de convergencia.'RemoveDuplicates',true

Tipos de datos: logical

Nivel de verbosidad, 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.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 los mensajes de diagnóstico y guarda los criterios de convergencia cada iteraciones, donde es el valor del argumento del 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 clasificació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 positivosUna entrada en el vector es el 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.PredictorNames Pad los nombres con espacios en blanco adicionales por lo que cada fila de la matriz de caracteres tiene la misma longitud.
Matriz de cadenas o matriz de vectores de caracteresCada elemento de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas.PredictorNames
todosTodos los predictores son categóricos.

De forma predeterminada, si los Datos predictores están en una tabla (),Tbl fitcsvm asume que una variable es categórica si contiene valores lógicos, valores categóricos, una matriz de cadenas o una matriz de vectores de caracteres. Si los Datos predictores son una matriz (),X fitcsvm asume que todos los predictores son continuos. Para identificar los predictores categóricos cuando los datos son una matriz, utilice el argumento de par nombre-valor.'CategoricalPredictors'

Ejemplo: 'CategoricalPredictors','all'

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

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 una matriz de estructura.'Cost'

  • Si especifica la matriz cuadrada y la clase verdadera de una observación es, entonces es el costo de clasificar un punto en la clase.CostoiCost(i,j)j Es decir, las filas corresponden a las clases verdaderas y las columnas corresponden a las clases previstas. Para especificar el orden de la clase para las filas y columnas correspondientes, especifique también el argumento de par nombre-valor.CostoClassNames

  • Si especifica la estructura, debe tener dos campos: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

Para el aprendizaje de dos clases, si especifica una matriz de costes, el software actualiza las probabilidades previas incorporando las sanciones descritas en la matriz de costes. Por lo tanto, la matriz de costes se restablece al valor predeterminado. Para obtener más detalles sobre las relaciones y el comportamiento algorítmico de,,, y, vea.BoxConstraintCostoPriorStandardizeWeightsAlgoritmos

Los valores predeterminados son:

  • para el aprendizaje de una sola claseCost = 0

  • Si y si para el aprendizaje de dos clasesCost(i,j) = 1i ~= jCost(i,j) = 0i = j

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

Tipos de datos: double | single | struct

Los 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 se suministra y, a continuación, se puede utilizar para dar las variables predictoras en los nombres.XY'PredictorNames'X

    • El orden de los nombres en debe corresponder al orden de las columnas de.PredictorNamesX Es decir, es el nombre de, es el nombre de, y así sucesivamente.PredictorNames{1}X(:,1)PredictorNames{2}X(:,2) También, y debe ser igual.size(X,2)numel(PredictorNames)

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

  • Si usted suministra, entonces usted puede utilizar para elegir qué variables predictoras a utilizar en el entrenamiento.Tbl'PredictorNames' Es decir fitcsvm utiliza únicamente las variables predictoras 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 para especificar los predictores para el entrenamiento utilizando cualquiera o sólo.'PredictorNames'Fórmula

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

Tipos de datos: string | cell

Probabilidades previas para cada clase, especificadas como el par separado por comas que consta de y un valor en esta tabla.'Prior'

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/, donde está el número de clases.KK
Vector numéricoCada elemento del vector es una clase de probabilidad previa. Ordene los elementos según o especifique el orden mediante el argumento de par nombre-valor.Mdl.ClassNamesClassNames El software normaliza los elementos a sumar.1
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 El software normaliza los elementos del vector a sumar.1

Para el aprendizaje de dos clases, si especifica una matriz de costes, el software actualiza las probabilidades previas incorporando las sanciones descritas en la matriz de costes. Para obtener más detalles sobre las relaciones y el comportamiento algorítmico de,,, y, vea.BoxConstraintCostoPriorStandardizeWeightsAlgoritmos

Ejemplo: struct('ClassNames',{{'setosa','versicolor','virginica'}},'ClassProbs',1:3)

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

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

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

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

Ejemplo: 'ResponseName','response'

Tipos de datos: char | string

Transformación de 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 o el nombre de una variable en.'Weights'Tbl El software pesa las observaciones en cada fila o con el valor correspondiente en.XTblWeights El tamaño de debe ser igual al número de filas en o.WeightsXTbl

Si especifica los datos de entrada como una tabla, puede ser el nombre de una variable que contenga un vector numérico.TblWeightsTbl En este caso, debe especificar como un vector de caracteres o un escalar de cadena.Weights Por ejemplo, si el vector de ponderaciones se almacena como, a continuación, especifíquese como.WTbl.W'W' De lo contrario, el software trata todas las columnas de, incluidos, como predictores o la variable de respuesta al entrenar el modelo.TblW

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

El software normaliza para resumir hasta el valor de la probabilidad anterior en la clase respectiva.Weights Para obtener más detalles sobre las relaciones y el comportamiento algorítmico de,,, y, vea.BoxConstraintCostoPriorStandardizeWeightsAlgoritmos

Tipos de datos: double | single | char | string

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 validación cruzada

contraer todo

Marcar para entrenar un clasificador con validación cruzada, especificado como el par separado por comas que consta de y o.'Crossval''on''off'

Si se especifica, el software entrena un clasificador de validación cruzada con 10 pliegues.'on'

Puede invalidar esta configuración de validación cruzada mediante el argumento de par nombre-valor, o Name.CVPartitionHoldoutKFoldLeaveout Solo puede usar un argumento de par nombre-valor de validación cruzada a la vez para crear un modelo validado de forma cruzada.

Alternativamente, valide de forma cruzada más adelante pasando a.Mdlcrossval

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 la indización para los conjuntos de entrenamiento y validación.

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

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

Fracción de los datos utilizados para la validación de exclusión, especificado 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 aleatoriamente y Reserve% de los datos como datos de validación y capacite al modelo con el resto de los datos.p*100

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

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

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

  1. Particionar aleatoriamente los datos en sets.k

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

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda a-por-1 en la propiedad del modelo validado de forma cruzada.kkTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Marca de validación cruzada de Leave-One-out, especificada como el par separado por comas que consta de y o.'Leaveout''on''off' Si especifica, a continuación, 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. Reservar la observación como datos de validación, y entrenar el modelo utilizando el otro – 1 observaciones.n

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

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Leaveout','on'

Opciones de control de convergencia

contraer todo

Tolerancia para la diferencia de degradado entre los infractores superior e inferior obtenidos por la optimización mínima secuencial (SMO) o el algoritmo iterativo de datos únicos (ISDA), especificado como el par separado por comas que consta de un escalar no negativo.'DeltaGradientTolerance'

Si es así, el software no utiliza la tolerancia para la diferencia de degradado para comprobar la convergencia de la optimización.DeltaGradientTolerance0

Los valores predeterminados son:

  • Si el solucionador es SMO (por ejemplo, se establece)1e-3'Solver','SMO'

  • Si el solucionador es ISDA (por ejemplo, se establece)0'Solver','ISDA'

Ejemplo: 'DeltaGradientTolerance',1e-2

Tipos de datos: double | single

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

Si es así, entonces el software no utiliza la tolerancia de la brecha de viabilidad para comprobar la convergencia de la optimización.GapTolerance0

Ejemplo: 'GapTolerance',1e-2

Tipos de datos: double | single

Número máximo de iteraciones de optimización numérica, especificadas como el par separado por comas que consta de 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 de infracción, especificada como el par separado por comas que consta de un escalar no negativo.Las condiciones de complementariedad de Karush-Kuhn-Tucker (KKT)'KKTTolerance'

Si es así, el software no utiliza la tolerancia de infracción de las condiciones de complementariedad de KKT para comprobar la convergencia de la optimización.KKTTolerance0

Los valores predeterminados son:

  • Si el solucionador es SMO (por ejemplo, se establece)0'Solver','SMO'

  • Si el solucionador es ISDA (por ejemplo, se establece)1e-3'Solver','ISDA'

Ejemplo: 'KKTTolerance',1e-2

Tipos de datos: double | single

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

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

Ejemplo: 'ShrinkagePeriod',1000

Tipos de datos: double | single

Opciones de optimización de hiperparámetros

contraer todo

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

  • — No optimice.'none'

  • Uso.'auto'{'BoxConstraint','KernelScale'}

  • : 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.fitcsvm Para obtener información sobre la pérdida de validación cruzada, consulte.Pérdida de clasificación Para controlar el tipo de validación cruzada y otros aspectos de la optimización, use el argumento de 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:fitcsvm

  • — busca entre valores positivos, de forma predeterminada, con escala logaritmo en el rango.BoxConstraintfitcsvm[1e-3,1e3]

  • — busca entre valores positivos, de forma predeterminada, con escala logaritmo en el rango.KernelScalefitcsvm[1e-3,1e3]

  • — busca entre, y.KernelFunctionfitcsvm'gaussian''linear''polynomial'

  • : busca entre números enteros en el rango.PolynomialOrderfitcsvm[2,4]

  • — busca entre y.Standardizefitcsvm'true''false'

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

load fisheriris params = hyperparameters('fitcsvm',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.Optimice el clasificador de SVM

Ejemplo: '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 de SVM entrenado, devuelto como objeto de modelo o objeto de modelo validado de forma cruzada.ClassificationSVMClassificationPartitionedModel

Si establece cualquiera de los argumentos de par nombre-valor,,, o, a continuación, es un clasificador con validación cruzada.KFoldHoldoutLeaveoutCrossValCVPartitionMdlClassificationPartitionedModel De lo contrario, es un clasificador.MdlClassificationSVM

Para hacer referencia a las propiedades de, utilice notación de puntos.Mdl Por ejemplo, escriba en la ventana de comandos para visualizar los multiplicadores de Lagrange entrenados.Mdl.Alpha

Limitaciones

  • entrena clasificadores de SVM para aplicaciones de aprendizaje de una o dos clases.fitcsvm Para entrenar clasificadores de SVM utilizando datos con más de dos clases, utilice.fitcecoc

  • admite conjuntos de datos de dimensiones reducidas y moderadas.fitcsvm Para conjuntos de datos de alta dimensión, utilice en su lugar.fitclinear

Más acerca de

contraer todo

Restricción de cuadro

Una restricción de caja es un parámetro que controla la penalización máxima impuesta en las observaciones que infringen el margen, lo que ayuda a evitar el sobreajuste (regularización).

Si aumenta la restricción de cuadro, el clasificador de SVM asignará menos vectores de soporte. Sin embargo, el aumento de la restricción de caja puede conducir a tiempos de entrenamiento más largos.

Gram Matrix

La matriz gram de un conjunto de vectores {nx1,..,Xn; XjRp} es un-por-matriz con elemento (,) definido como (nnjkGXj,Xk) = < (ϕXj), (ϕXk) >, un producto interno de los predictores transformados utilizando la función del kernel.ϕ

Para SVM no lineal, el algoritmo forma una matriz Gram utilizando las filas de los Datos predictores.X La doble formalización reemplaza el producto interno de las observaciones con los elementos correspondientes de la matriz Gram resultante (llamada "truco del kernel").X Por consiguiente, SVM no lineal funciona en el espacio predictor transformado para encontrar un hiperplano separador.

Karush-Kuhn-Tucker (KKT) condiciones de complementariedad

Las condiciones de complementariedad de KKT son restricciones de optimización requeridas para soluciones de programación no lineales óptimas.

En la SVM, las condiciones de complementariedad de KKT son

{αj[yjf(xj)1+ξj]=0ξj(Cαj)=0

para todos = 1,...,, dondejn f(xj)=ϕ(xj)β+b, es una función del kernel (ver), yϕMatriz de Gram Ξj es una variable de holgura. Si las clases son perfectamente separables, entonces Ξj = 0 para todos = 1,...,.jn

El aprendizaje de una clase

El aprendizaje de una sola clase, o SVM sin supervisión, tiene como objetivo separar los datos del origen en el espacio predictor de alta dimensión (no el espacio predictor original), y es un algoritmo utilizado para la detección de valores atípicos.

El algoritmo se asemeja al de.SVM para la clasificación binaria El objetivo es minimizar la expresión dual

0.5jkαjαkG(xj,xk)

con respecto a α1,...,αn, sujeto a

αj=nν

Y 0αj1 para todos = 1,...,.jn El valor de (GXj,Xk) está en el elemento (,) del.jkMatriz de Gram

Un pequeño valor de conduce a menos vectores de soporte y, por lo tanto, un límite de decisión suave y crudo.ν Un gran valor de conduce a más vectores de soporte y, por lo tanto, un límite de decisión flexible y con curvas.ν El valor óptimo de debe ser lo suficientemente grande como para capturar la complejidad de los datos y lo suficientemente pequeño como para evitar el sobreentrenamiento.ν También, 0 < ≤ 1.ν

Para obtener más información, consulte.[5]

Vector de soporte

Los vectores de soporte son observaciones correspondientes a estimaciones estrictamente positivas deα1,...,Αn.

Se preferían los clasificadores SVM que producen menos vectores de soporte para un determinado conjunto de entrenamiento.

Máquinas de vectores de soporte para clasificación binaria

El algoritmo de clasificación binaria de SVM busca un hiperplano óptimo que separe los datos en dos clases. Para las clases separables, el hiperplano óptimo maximiza un (espacio que no contiene ninguna observación) que rodea a sí mismo, lo que crea límites para las clases positivas y negativas.Margen Para las clases inseparables, el objetivo es el mismo, pero el algoritmo impone una penalización en la longitud del margen para cada observación que se encuentra en el lado equivocado de su límite de clase.

La función de puntuación de SVM lineal es

f(x)=xβ+b,

Dónde:

  • es una observación (correspondiente a una fila de).xX

  • El vector contiene los coeficientes que definen un vector ortogonal al hiperplano (correspondiente a).βMdl.Beta Para los datos separables, la longitud de margen óptima es 2/β.

  • es el término de sesgo (correspondiente a).bMdl.Bias

La raíz de () para coeficientes concretos define un hiperplano.fx Para un hiperplano particular, () es la distancia desde el punto hasta el hiperplano.fzz

El algoritmo busca la longitud máxima del margen, manteniendo las observaciones en las clases positivas (= 1) y negativas (= – 1) separadas.yy

  • Para las clases separables, el objetivo es minimizar β con respecto a la y sujeta aβb yj(fXj) ≥ 1, para todos = 1,..,.jn Esta es la formalización de clases separables.Primordial

  • Para las clases inseparables, el algoritmo utiliza variables de holgura (Ξj) para penalizar la función objetiva para las observaciones que cruzan el límite de margen para su clase. Ξj = 0 para las observaciones que no cruzan el límite del margen para su clase, de lo contrario Ξj ≥ 0.

    El objetivo es minimizar 0.5β2+Cξj con respecto a la, yβb Ξj sujetas a yjf(xj)1ξj Y ξj0 para todos = 1,..,, y para un escalar positivo.jnrestricción de cuadroC Esta es la formalización primordial para las clases inseparables.

El algoritmo utiliza el método de multiplicadores de Lagrange para optimizar el objetivo, que introduce coeficientesnα1,...,Αn (correspondiente a).Mdl.Alpha Las formalizaciones duales para SVM lineales son las siguientes:

  • Para las clases separables, minimice

    0.5j=1nk=1nαjαkyjykxjxkj=1nαj

    con respecto aα1,...,Αn, sujeto a αjyj=0, Αj ≥ 0 para todos = 1,...,, y.jnLas condiciones de complementariedad de Karush-Kuhn-Tucker (KKT)

  • Para las clases inseparables, el objetivo es el mismo que para las clases separables, excepto para la condición adicional 0αjC para todos = 1,..,.jn

La función de puntuación resultante es

f^(x)=j=1nα^jyjxxj+b^.

b^ es la estimación del sesgo y α^j es la estimación del vectorj α^, = 1,...,.jn Escrito de esta manera, la función de puntuación está libre de la estimación de como resultado de la formalización primigenia.β

El algoritmo SVM clasifica una nueva observación utilizandoz sign(f^(z)).

En algunos casos, un límite no lineal separa las clases. trabaja en un espacio predictor transformado para encontrar un hiperplano de separación óptimo.SVM no lineal

La formalización dual para SVM no lineal es

0.5j=1nk=1nαjαkyjykG(xj,xk)j=1nαj

con respecto aα1,...,Αn, sujeto a αjyj=0, 0αjC para todos = 1,..,, y las condiciones de complementariedad de KKT. (jnGXk,Xj) son elementos de la.Matriz de Gram La función de puntuación resultante es

f^(x)=j=1nα^jyjG(x,xj)+b^.

Para obtener más información, consulte y.Entender las máquinas de vectores de soporte[1][3]

Sugerencias

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

  • Es una buena práctica para la validación cruzada mediante el argumento de par nombre-valor.KFold Los resultados de validación cruzada determinan qué tan bien se generaliza el clasificador de SVM.

  • Para el aprendizaje de una clase:

    • La configuración predeterminada para el argumento de par nombre-valor puede llevar a largos tiempos de entrenamiento.Alpha Para acelerar el entrenamiento, se establece en un vector compuesto principalmente por s.Alpha0

    • Establezca el argumento de par nombre-valor en un valor más cercano para producir menos vectores de soporte y, por lo tanto, un límite de decisión más suave pero crudo.Nu0

  • La dispersión de los vectores de soporte es una propiedad deseable de un clasificador de SVM. Para reducir el número de vectores de soporte, establezca un valor grande.BoxConstraint Esta acción incrementa el tiempo de entrenamiento.

  • Para un tiempo de entrenamiento óptimo, establezca tan alto como el límite de memoria que su computadora permite.CacheSize

  • Si espera muchos menos vectores de soporte que las observaciones del 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 especificar.'ShrinkagePeriod',1000

  • Las observaciones duplicadas que están lejos del límite de decisión no afectan a la convergencia. Sin embargo, solo unas cuantas observaciones duplicadas que ocurren cerca del límite de decisión pueden ralentizar considerablemente la convergencia. Para acelerar la convergencia, especifique si:'RemoveDuplicates',true

    • El conjunto de datos contiene muchas observaciones duplicadas.

    • Usted sospecha que algunas observaciones duplicadas caen cerca del límite de decisión.

    Para mantener el conjunto de datos original durante el entrenamiento, fitcsvm debe almacenar temporalmente conjuntos de datos separados: el original y otro sin las observaciones duplicadas. Por lo tanto, si especifica para conjuntos de datos que contengan pocos duplicados,true fitcsvm consume cerca del doble de la memoria de los datos originales.

  • 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

  • Para la formulación matemática del algoritmo de clasificación binaria de SVM, vea y.Máquinas de vectores de soporte para clasificación binariaEntender las máquinas de vectores de soporte

  • ,, el vector de carácter vacío (), la cadena vacía () y los valores indican valores faltantes. elimina filas enteras de datos correspondientes a una respuesta que falta.NaN<undefined>''""<missing>fitcsvm Al calcular los pesos totales (ver las siguientes balas), ignora cualquier peso correspondiente a una observación con al menos un predictor que falta.fitcsvm Esta acción puede llevar a que se desequilibren las probabilidades previas en problemas de clase equilibrada. Por consiguiente, las restricciones del cuadro de observación podrían no ser iguales.BoxConstraint

  • elimina las observaciones que tienen peso cero o probabilidad previa.fitcsvm

  • Para el aprendizaje de dos clases, si especifica la matriz de costes C (ver), el software actualiza las probabilidades previas de la clase (véase) paraCostopPrior Pc incorporando las sanciones descritas en C.

    Específicamente, completa estos pasos:fitcsvm

    1. Calcular pc=pC.

    2. Normalizar Pc* por lo que las probabilidades previas actualizadas suman 1.

      pc=1j=1Kpc,jpc.

      es el número de clases.K

    3. Restablezca la matriz de costes al valor predeterminado

      C=[0110].

    4. Eliminar observaciones de los datos de entrenamiento correspondientes a clases con cero probabilidad previa.

  • Para el aprendizaje de dos clases, normaliza todos los pesos de observación (ver) para sumar a 1.fitcsvmWeights A continuación, la función renormaliza los pesos normalizados para sumar a la probabilidad anterior actualizada de la clase a la que pertenece la observación. Es decir, el peso total para la observación en clase esjk

    wj=wjjClass kwjpc,k.

    Wj es el peso normalizado para la observación;jpc,k es la probabilidad previa actualizada de la clase (véase la viñeta anterior).k

  • Para el aprendizaje de dos clases, asigna una restricción de cuadro a cada observación en los datos de entrenamiento.fitcsvm La fórmula para la restricción de la caja de observación esj

    Cj=nC0wj.

    es el tamaño de la muestra de entrenamiento,nC0 es la restricción de cuadro inicial (consulte el argumento de par nombre-valor) y'BoxConstraint' wj es el peso total de la observación (ver bala anterior).j

  • Si establece y, o el argumento de par nombre-valor, estandariza los predictores utilizando sus medias ponderadas correspondientes y las desviaciones estándar ponderadas.'Standardize',true'Cost''Prior''Weights'fitcsvm Es decir, Estandariza el predictor (fitcsvmjXj) 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.

  • Suponga que es la proporción de valores atípicos que espera en los datos de entrenamiento y que establece.p'OutlierFraction',p

    • Para el aprendizaje de una sola clase, el software entrena el término de sesgo de tal manera que el 100% de las observaciones en los datos de entrenamiento tienen puntuaciones negativas.p

    • El software implementa para el aprendizaje de dos clases.aprendizaje 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.

  • Si los Datos predictores contienen variables categóricas, el software generalmente utiliza la 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 variables predictoras originales.PredictorNames Por ejemplo, supongamos que hay tres predictores, uno de los cuales es una variable categórica con tres niveles. Entonces es una matriz de 1 por 3 celdas 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. A continuación, es una matriz de 1 por 5 celdas de 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 de-por-5.SupportVectorsn

    • La propiedad almacena los datos de entrenamiento como entrada original y no incluye las variables ficticias.X Cuando la entrada es una tabla, contiene sólo 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 con niveles ordenados, el software creak k – 1 variables ficticias. La variable ficticia TH esj –1 para niveles hasta, yj +1 para los 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 de predictores adicionales para las variables ficticias, incluidos los nombres de los niveles 2, 3,...,.k

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

  • Para el aprendizaje de una sola clase, el software estima los multiplicadores de Lagrange,α1,...,Αn, de tal que

    j=1nαj=nν.

Referencias

[1] Christianini, N., and J. C. Shawe-Taylor. An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods. Cambridge, UK: Cambridge University Press, 2000.

[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] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, Second Edition. NY: Springer, 2008.

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

[5] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. “Estimating the Support of a High-Dimensional Distribution.” Neural Comput., Vol. 13, Number 7, 2001, pp. 1443–1471.

[6] Scholkopf, B., and A. Smola. Learning with Kernels: Support Vector Machines, Regularization, Optimization and Beyond, Adaptive Computation and Machine Learning. Cambridge, MA: The MIT Press, 2002.

Capacidades ampliadas

Introducido en R2014a