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.

templateKernel

Plantilla de modelo de kernel

Descripción

crea una plantilla adecuada para ajustar un modelo de clasificación de kernel gaussiano para la clasificación no lineal.templateKernel

La plantilla especifica el modelo de aprendizaje binario, el número de dimensiones del espacio expandido, la escala del kernel, la restricción de cuadro y la fuerza de regularización, entre otros parámetros. Después de crear la plantilla, entrena el modelo pasando la plantilla y los datos a.fitcecoc

ejemplo

t = templateKernel() Devuelve una plantilla de modelo de kernel.

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

ejemplo

t = templateKernel(Name,Value) Devuelve una plantilla con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, puede implementar la regresión logística o especificar el número de dimensiones del espacio expandido.

Si se visualiza en la ventana de comandos, algunas propiedades de aparecen vacías ().tt[] Durante el entrenamiento, el software utiliza los valores predeterminados para las propiedades vacías.

Ejemplos

contraer todo

Cree una plantilla de modelo de kernel predeterminada y utilíla para entrenar un modelo multiclase de códigos de salida de corrección de errores (ECOC).

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Cree una plantilla de modelo de kernel predeterminada.

t = templateKernel()
t =  Fit template for classification Kernel.               BetaTolerance: []                  BlockSize: []              BoxConstraint: []                    Epsilon: []     NumExpansionDimensions: []          GradientTolerance: []         HessianHistorySize: []             IterationLimit: []                KernelScale: []                     Lambda: []                    Learner: 'svm'               LossFunction: []                     Stream: []             VerbosityLevel: []                    Version: 1                     Method: 'Kernel'                       Type: 'classification'  

Durante el entrenamiento, 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)
Mdl =    classreg.learning.classif.CompactClassificationECOC       ResponseName: 'Y'         ClassNames: {'setosa'  'versicolor'  'virginica'}     ScoreTransform: 'none'     BinaryLearners: {3x1 cell}       CodingMatrix: [3x3 double]     Properties, Methods  

es un clasificador multiclase.MdlCompactClassificationECOC

Cree una plantilla de modelo de kernel con opciones adicionales para implementar la regresión logística con un parámetro de escala de kernel seleccionado por un procedimiento heurístico.

t = templateKernel('Learner','logistic','KernelScale','auto')
t =  Fit template for classification Kernel.               BetaTolerance: []                  BlockSize: []              BoxConstraint: []                    Epsilon: []     NumExpansionDimensions: []          GradientTolerance: []         HessianHistorySize: []             IterationLimit: []                KernelScale: 'auto'                     Lambda: []                    Learner: 'logistic'               LossFunction: []                     Stream: []             VerbosityLevel: []                    Version: 1                     Method: 'Kernel'                       Type: 'classification'  

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 para implementar la regresión logística después de asignar los Datos predictores al espacio dimensional mediante la expansión de características con un parámetro de escala de kernel seleccionado por un procedimiento heurístico.'Learner','logistic','NumExpansionDimensions',2^15,'KernelScale','auto'2^15

Opciones de clasificación del kernel

contraer todo

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

En la siguiente tabla, f(x)=T(x)β+b.

  • es una observación (vector de fila) a partir de variables predictoras.xp

  • T(·) es una transformación de una observación (vector de fila) para la expansión de entidades. T(x) mapas enx p a un espacio de alta dimensionalidad (m).

  • es un vector de coeficientes.βm

  • es el sesgo escalar.b

ValorAlgoritmoRango de respuestaFunción de pérdida
'svm'Máquina de vectores de soporte∊ {– 1, 1}; 1 para la clase positiva y – 1 de lo contrarioyBisagra: [y,f(x)]=max[0,1yf(x)]
'logistic'La regresión logísticaIgual que'svm'Desviación (logística): [y,f(x)]=log{1+exp[yf(x)]}

Ejemplo: 'Learner','logistic'

Número de dimensiones del espacio expandido, especificado como el par separado por comas que consta de un entero positivo o de él.'NumExpansionDimensions''auto' Porque el'auto' templateKernel función selecciona el número de cotas que se utilizan, donde está el número de predictores.2.^ceil(min(log2(p)+5,15))p

Para obtener más información, consulte.Expansión de características aleatorias

Ejemplo: 'NumExpansionDimensions',2^15

Tipos de datos: char | string | single | double

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 obtiene una base aleatoria para la expansión aleatoria de características mediante el uso del parámetro de escala del kernel. Para obtener más información, consulte.Expansión de características aleatorias

Si se especifica, el software selecciona un parámetro de escala de kernel 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 aleatoria utilizando antes del entrenamiento.rng

Ejemplo: 'KernelScale','auto'

Tipos de datos: char | string | single | double

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

Este argumento sólo es válido cuando es (predeterminado) y no se especifica un valor para la intensidad del término de regularización.'Learner''svm''Lambda' Puede especificar o porque la restricción de cuadro () y la intensidad del término de regularización () están relacionadas por'BoxConstraint''Lambda'Cλ C = 1/(λn), donde está el número de observaciones.n

Ejemplo: 'BoxConstraint',100

Tipos de datos: single | double

Fuerza del término de regularización, especificada como el par separado por comas que consta de un escalar no negativo.'Lambda''auto'

Para, el valor de es 1/, donde está el número de observaciones.'auto''Lambda'nn

Puede especificar o porque la restricción de cuadro () y la intensidad del término de regularización () están relacionadas por'BoxConstraint''Lambda'Cλ C = 1/(λn).

Ejemplo: 'Lambda',0.01

Tipos de datos: char | string | single | double

Controles de convergencia

contraer todo

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

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

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

Ejemplo: 'BetaTolerance',1e–6

Tipos de datos: single | double

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

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

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

Ejemplo: 'GradientTolerance',1e–5

Tipos de datos: single | double

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

El valor predeterminado es 1000 si los datos transformados se ajustan a la memoria, según lo especificado por el argumento de par nombre-valor.BlockSize De lo contrario, el valor predeterminado es 100.

Ejemplo: 'IterationLimit',500

Tipos de datos: single | double

Otras opciones de clasificación del kernel

contraer todo

Cantidad máxima de memoria asignada (en megabytes), especificada como el par separado por comas que consta de un escalar positivo.'BlockSize'

Si templateKernel requiere más memoria que el valor de contener los datos de predictor transformados, el software utiliza una estrategia de bloque.'BlockSize' Para obtener más información sobre la estrategia en bloque, consulte.Algoritmos

Ejemplo: 'BlockSize',1e4

Tipos de datos: single | double

Secuencia numérica aleatoria para la reproducibilidad de la transformación de datos, especificada como el par separado por comas que consta de un objeto de secuencia aleatorio.'RandomStream' Para obtener más información, consulte.Expansión de características aleatorias

Se utiliza para reproducir las funciones de base aleatoria que'RandomStream' templateKernel utiliza para transformar los Datos predictores en un espacio de alta dimensionalidad. Para obtener más información, consulte y.La gestión de la transmisión global (MATLAB)Crear y controlar un flujo de números aleatorios (MATLAB)

Ejemplo: 'RandomStream',RandStream('mlfg6331_64')

Tamaño del búfer del historial para la aproximación de hessian, especificado como el par separado por comas que consta de un entero positivo.'HessianHistorySize' En cada iteración, templateKernel compone la aproximación de hessian utilizando las estadísticas de las iteraciones más recientes.HessianHistorySize

Ejemplo: 'HessianHistorySize',10

Tipos de datos: single | double

Nivel de verbosidad, especificado como el par separado por comas que consta de y cualquiera o. controla la visualización de la información de diagnóstico en la línea de comandos.'Verbose'01Verbose

ValorDescripción
0templateKernel no muestra información de diagnóstico.
1templateKernel muestra el valor de la función objetiva, la magnitud del degradado y otra información de diagnóstico.

Ejemplo: 'Verbose',1

Tipos de datos: single | double

Argumentos de salida

contraer todo

Plantilla de modelo de kernel, devuelta como un objeto de plantilla. Para entrenar un modelo de clasificación de kernel para problemas multiclase, pase a.tfitcecoc

Si se visualiza en la ventana de comandos, algunas propiedades aparecen vacías ().t[] El software reemplaza las propiedades vacías con sus valores predeterminados correspondientes durante el entrenamiento.

Más acerca de

contraer todo

Expansión de características aleatorias

La expansión de características aleatorias, como los sumideros de cocina aleatorios y Fastfood, es un esquema para aproximar los núcleos Gaussianos del algoritmo de clasificación del kernel para utilizarlos en grandes datos de forma eficiente en el cómputo.[1][2] La expansión de características aleatorias es más práctica para las aplicaciones de macrodatos que tienen grandes conjuntos de entrenamiento, pero también se pueden aplicar a conjuntos de datos más pequeños que caben en la memoria.

El algoritmo de clasificación del kernel busca un hiperplano óptimo que separe los datos en dos clases después de asignar entidades a un espacio de alta dimensionalidad. Las entidades no lineales que no son separables linealmente en un espacio de dimensiones reducidas pueden ser separables en el espacio ampliado de dimensiones elevadas. Todos los cálculos para la clasificación del hiperplano utilizan solamente los productos del punto. Puede obtener un modelo de clasificación no lineal reemplazando el producto de punto x1x2' con la función del kernel no lineal G(x1,x2)=φ(x1),φ(x2)Dónde Xi es la observación TH (vector de fila) yi φ(xi) es una transformación que asigna Xi a un espacio de alta dimensionalidad (llamado "truco del kernel"). Sin embargo, evaluar G(x1,x2) (Matriz de Gram) para cada par de observaciones es costoso computacionalmente para un conjunto de datos grande (grande).n

El esquema de expansión de entidades aleatorias encuentra una transformación aleatoria para que su producto de punto se aprobe al kernel gaussiano. Es decir

G(x1,x2)=φ(x1),φ(x2)T(x1)T(x2)',

Dónde T(x) mapas enx p a un espacio de alta dimensionalidad (m). El esquema de sumidero aleatorio de la cocina utiliza la transformación aleatoria

T(x)=m1/2exp(iZx')',

Dónde Zm×p es una muestra extraída de N(0,σ2) Y σ2 es una escala de kernel. Este esquema requiere O(mp) Computación y almacenamiento. El esquema Fastfood introduce otra base aleatoria en lugar de utilizar matrices Hadamard combinadas con matrices de escalado gaussiano.VZ Esta base aleatoria reduce el costo de cálculo para O(mlogp) y reduce el almacenamiento a O(m).

La función utiliza el esquema Fastfood para la expansión aleatoria de entidades y utiliza la clasificación lineal para entrenar un modelo de clasificación de kernel gaussiano.templateKernel A diferencia de los solucionadores de la función, que requieren el cálculo de la matriz de Gram, el solucionador sólo necesita formar una matriz de tamaño por-, con típicamente mucho menor que para Big Data.templateSVMnntemplateKernelnmmn

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 violan el margen y ayuda a prevenir el sobreajuste (regularización). El aumento de la restricción de caja puede conducir a tiempos de entrenamiento más largos.

La restricción de caja () y la fuerza de regularización () están relacionadas porCλ C = 1/(λn), donde está el número de observaciones.n

Algoritmos

templateKernel minimiza la función objetiva regularizada utilizando un Solver de memoria limitada Broyden-Fletcher-Goldfarb-Shanno (LBFGS) con cresta (L2regularización. Para encontrar el tipo de solucionador LBFGS utilizado para el entrenamiento, escriba en la ventana de comandos.FitInfo.Solver

  • — Solucionador de LBFGS.'LBFGS-fast'

  • — Solucionador LBFGS con una estrategia en bloque.'LBFGS-blockwise' Si templateKernel requiere más memoria que el valor de contener los datos de predictor transformados, a continuación, utiliza una estrategia de bloque.BlockSize

  • — Solucionador LBFGS con una estrategia en bloque para matrices altas.'LBFGS-tall'

Cuando templateKernel utiliza una estrategia en bloque, templateKernel implementa LBFGS distribuyendo el cálculo de la pérdida y el gradiente entre diferentes partes de los datos en cada iteración. Además templateKernel reajusta las estimaciones iniciales de los coeficientes lineales y el término de sesgo al ajustar el modelo localmente a partes de los datos y combinar los coeficientes promediando. Si especifica,'Verbose',1 templateKernel muestra información de diagnóstico para cada paso de datos y almacena la información en el campo de.HistoryFitInfo

Cuando templateKernel no utiliza una estrategia en bloque, las estimaciones iniciales son ceros. Si especifica,'Verbose',1 templateKernel muestra información de diagnóstico para cada iteración y almacena la información en el campo de.HistoryFitInfo

Referencias

[1] Rahimi, A., and B. Recht. “Random Features for Large-Scale Kernel Machines.” Advances in Neural Information Processing Systems. Vol. 20, 2008, pp. 1177–1184.

[2] Le, Q., T. Sarlós, and A. Smola. “Fastfood — Approximating Kernel Expansions in Loglinear Time.” Proceedings of the 30th International Conference on Machine Learning. Vol. 28, No. 3, 2013, pp. 244–252.

[3] Huang, P. S., H. Avron, T. N. Sainath, V. Sindhwani, and B. Ramabhadran. “Kernel methods match Deep Neural Networks on TIMIT.” 2014 IEEE International Conference on Acoustics, Speech and Signal Processing. 2014, pp. 205–209.

Capacidades ampliadas

Consulte también

|

Introducido en R2018b