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.

templateSVM

Plantilla de máquina de vectores de soporte

Descripción

ejemplo

t = templateSVM() Devuelve una plantilla de aprendizaje de máquina de vectores de soporte (SVM) adecuada para el entrenamiento de modelos multiclase de código de salida de corrección de errores (ECOC).

Si especifica una plantilla predeterminada, el software utiliza los valores predeterminados para todos los argumentos de entrada durante el entrenamiento.

Especifique como un aprendizaje binario, o uno en un conjunto de alumnos binarios, para entrenar un clasificador multiclase ECOC.tfitcecoc

ejemplo

t = templateSVM(Name,Value) Devuelve una plantilla con opciones adicionales especificadas por uno o más argumentos de par nombre-valor.

Por ejemplo, puede especificar la restricción de cuadro, la función del kernel o si desea estandarizar los predictores.

Si se muestra en la ventana de comandos, todas las opciones aparecerán vacías (), excepto las que especifique mediante los argumentos de par nombre-valor.t[] Durante el entrenamiento, el software utiliza valores predeterminados para las opciones vacías.

Ejemplos

contraer todo

Se usa para especificar una plantilla de SVM predeterminada.templateSVM

t = templateSVM()
t =  Fit template for classification SVM.                       Alpha: [0x1 double]              BoxConstraint: []                  CacheSize: []              CachingMethod: ''                 ClipAlphas: []     DeltaGradientTolerance: []                    Epsilon: []               GapTolerance: []               KKTTolerance: []             IterationLimit: []             KernelFunction: ''                KernelScale: []               KernelOffset: []      KernelPolynomialOrder: []                   NumPrint: []                         Nu: []            OutlierFraction: []           RemoveDuplicates: []            ShrinkagePeriod: []                     Solver: ''            StandardizeData: []         SaveSupportVectors: []             VerbosityLevel: []                    Version: 2                     Method: 'SVM'                       Type: 'classification'  

Todas las propiedades del objeto de plantilla están vacías excepto y.MethodType Al pasar a la función de entrenamiento, el software rellena las propiedades vacías con sus respectivos valores predeterminados.t Por ejemplo, el software rellena la propiedad con.KernelFunction'linear' Para obtener más información sobre otros valores predeterminados, consulte.fitcsvm

es un plan para un alumno de SVM y no se produce ningún cálculo al especificarlo.t Puede pasar a especificar alumnos binarios de SVM para el aprendizaje multiclase de ECOC.tfitcecoc Sin embargo, de forma predeterminada, utiliza los alumnos binarios de SVM predeterminados.fitcecoc

Cree una plantilla de SVM no predeterminada para usarla.fitcecoc

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Cree una plantilla para clasificadores binarios de SVM y especifique si desea utilizar una función de kernel gaussiano.

t = templateSVM('KernelFunction','gaussian')
t =  Fit template for classification SVM.                       Alpha: [0x1 double]              BoxConstraint: []                  CacheSize: []              CachingMethod: ''                 ClipAlphas: []     DeltaGradientTolerance: []                    Epsilon: []               GapTolerance: []               KKTTolerance: []             IterationLimit: []             KernelFunction: 'gaussian'                KernelScale: []               KernelOffset: []      KernelPolynomialOrder: []                   NumPrint: []                         Nu: []            OutlierFraction: []           RemoveDuplicates: []            ShrinkagePeriod: []                     Solver: ''            StandardizeData: []         SaveSupportVectors: []             VerbosityLevel: []                    Version: 2                     Method: 'SVM'                       Type: 'classification'  

Todas las propiedades del objeto de plantilla están vacías excepto, y.DistributionNamesMethodType Cuando se entrena en, el software rellena las propiedades vacías con sus respectivos valores predeterminados.

Especifique como un aprendizaje binario para un modelo multiclase ECOC.t

Mdl = fitcecoc(meas,species,'Learners',t);

es un clasificador multiclase.MdlClassificationECOC De forma predeterminada, el software se entrena utilizando el diseño de codificación uno contra uno.Mdl

Muestra el error de clasificación errónea en la muestra (reenvío).

L = resubLoss(Mdl,'LossFun','classiferror')
L = 0.0200 

Cuando se entrena un modelo ECOC con alumnos binarios de SVM lineales, se vacía la, y las propiedades de los alumnos binarios de forma predeterminada.fitcecocAlphaSupportVectorLabelsSupportVectors Puede elegir en su lugar para conservar los vectores de soporte y los valores relacionados y, a continuación, descartarlos del modelo más adelante.

Cargue el conjunto de datos de iris de Fisher.

load fisheriris rng(1); % For reproducibility

Entrenar un modelo ECOC utilizando todo el conjunto de datos. Especifique la retención de los vectores de soporte transfiriendo la plantilla SVM correspondiente.

t = templateSVM('SaveSupportVectors',true); MdlSV = fitcecoc(meas,species,'Learners',t);

es un modelo entrenado con estudiantes binarios de SVM lineales.MdlSVClassificationECOC De forma predeterminada, implementa un diseño de codificación uno contra uno, que requiere tres estudiantes binarios para el aprendizaje de tres clases.fitcecoc

Acceda a la estimación

<math display="block">
<mrow>
<mi>α</mi>
</mrow>
</math>
(Alpha) utilizando la notación de puntos.

alpha = cell(3,1); alpha{1} = MdlSV.BinaryLearners{1}.Alpha; alpha{2} = MdlSV.BinaryLearners{2}.Alpha; alpha{3} = MdlSV.BinaryLearners{3}.Alpha; alpha
alpha = 3x1 cell array
    { 3x1 double}
    { 3x1 double}
    {23x1 double}

es una matriz de celdas de 3 por 1 que almacena los valores estimados dealpha

<math display="block">
<mrow>
<mi>α</mi>
</mrow>
</math>
.

Descarte los vectores de soporte y los valores relacionados del modelo ECOC.

Mdl = discardSupportVectors(MdlSV);

es similar a, excepto que el, y las propiedades de todos los alumnos binarios de SVM lineales están vacíos ().MdlMdlSVAlphaSupportVectorLabelsSupportVectors[]

areAllEmpty = @(x)isempty([x.Alpha x.SupportVectors x.SupportVectorLabels]); cellfun(areAllEmpty,Mdl.BinaryLearners)
ans = 3x1 logical array

   1
   1
   1

Compare los tamaños de los dos modelos de ECOC.

vars = whos('Mdl','MdlSV'); 100*(1 - vars(1).bytes/vars(2).bytes)
ans = 4.8583 

es un 5% más pequeño que.MdlMdlSV

Reduzca el uso de memoria compactando y luego despejando y desde el espacio de trabajo.MdlMdlMdlSV

CompactMdl = compact(Mdl); clear Mdl MdlSV;

Predecir la etiqueta para una fila aleatoria de los datos de entrenamiento utilizando el modelo SVM más eficiente.

idx = randsample(size(meas,1),1)
idx = 63 
predictedLabel = predict(CompactMdl,meas(idx,:))
predictedLabel = 1x1 cell array
    {'versicolor'}

trueLabel = species(idx)
trueLabel = 1x1 cell array
    {'versicolor'}

Argumentos de entrada

contraer todo

Argumentos de par nombre-valor

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

Ejemplo: especifica una restricción de cuadro de, para utilizar el kernel gaussiano (RBF) y para estandarizar los predictores.'BoxConstraint',0.1,'KernelFunction','gaussian','Standardize',10.1

, 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

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

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

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

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

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

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

Almacene los vectores de soporte, sus etiquetas y los coeficientes estimados como propiedades del modelo resultante, especificados como el par separado por comas que consta de y o.α'SaveSupportVectors'truefalse

Si es así, el modelo resultante almacena los vectores de soporte en la propiedad, sus etiquetas en la propiedad y los coeficientes estimados en la propiedad de los alumnos compactos de SVM.SaveSupportVectorstrueSupportVectorsSupportVectorLabelsαAlpha

Si es y es, el modelo resultante no almacena los vectores de soporte y las estimaciones relacionadas.SaveSupportVectorsfalseKernelFunction'linear'

Para reducir el consumo de memoria mediante modelos compactos de SVM, especifique.SaveSupportVectors

Para los alumnos binarios de SVM lineales en un modelo ECOC, el valor predeterminado es.false De lo contrario, el valor predeterminado es.true

Ejemplo: 'SaveSupportVectors',true

Tipos de datos: logical

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

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'

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 columna de los Datos predictores () por la media de la columna ponderada y la desviación estándar, respectivamente (para obtener detalles sobre la estandarización ponderada, ver). no estandariza los datos contenidos en las columnas de variables ficticias generadas para los predictores categóricos.XAlgoritmosMATLAB

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

Ejemplo: 'Standardize',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

Argumentos de salida

contraer todo

Plantilla de clasificación de SVM adecuada para los modelos multiclase de código de salida de corrección de errores de entrenamiento (ECOC), devueltos como un objeto de plantilla. Pase a para especificar cómo crear el clasificador SVM para el modelo ECOC.tfitcecoc

Si se visualiza en la ventana de comandos, todas las opciones no especificadas aparecerán vacías ().t[] Sin embargo, el software reemplaza las opciones vacías con sus valores predeterminados correspondientes durante el entrenamiento.

Sugerencias

De forma predeterminada y para la eficacia, vacía la, y las propiedades de todos los alumnos binarios de SVM lineales. listas, en lugar de, en la visualización del modelo.fitcecocAlphaSupportVectorLabelsSupportVectorsfitcecocBetaAlpha

Para almacenar y pasar una plantilla de SVM lineal que especifica el almacenamiento de vectores de soporte.AlphaSupportVectorLabelsSupportVectorsfitcecoc Por ejemplo, escriba:

t = templateSVM('SaveSupportVectors',true) Mdl = fitcecoc(X,Y,'Learners',t);

Puede quitar los vectores de soporte y los valores relacionados pasando el modelo resultante a.ClassificationECOCdiscardSupportVectors

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.” In 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.

Introducido en R2014b