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.

fitckernel

Ajuste el modelo de clasificación de kernel gaussiano utilizando la expansión de características aleatorias

Descripción

entrena o realiza una validación cruzada de un modelo de clasificación de kernel gaussiano binario para la clasificación no lineal. es más práctico para 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.fitckernelfitckernel

asigna datos en un espacio de dimensiones reducidas a un espacio de alta dimensionalidad y, a continuación, se ajusta a un modelo lineal en el espacio de alta dimensión minimizando la función objetiva regularizada.fitckernel La obtención del modelo lineal en el espacio de alta dimensionalidad equivale a aplicar el kernel gaussiano al modelo en el espacio de dimensiones reducidas. Los modelos de clasificación lineal disponibles incluyen modelos de máquina vectorial de soporte regularizado (SVM) y de regresión logística.

Para entrenar un modelo SVM no lineal para la clasificación binaria de datos en memoria, consulte.fitcsvm

ejemplo

Mdl = fitckernel(X,Y) Devuelve un modelo de clasificación de kernel gaussiano binario entrenado utilizando los datos del predictor y las etiquetas de clase correspondientes.XY La función asigna los predictores en un espacio de dimensiones reducidas en un espacio de alta dimensionalidad y, a continuación, se ajusta a un modelo de SVM binario a los predictores y etiquetas de clase transformados.fitckernel Este modelo lineal equivale al modelo de clasificación de kernel gaussiano en el espacio de dimensiones reducidas.

ejemplo

Mdl = fitckernel(X,Y,Name,Value) Devuelve un modelo de clasificación de kernel con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, puede implementar la regresión logística, especificar el número de dimensiones del espacio expandido o especificar la validación cruzada.

ejemplo

[Mdl,FitInfo] = fitckernel(___) también devuelve la información de ajuste en la matriz de estructura utilizando cualquiera de los argumentos de entrada en las sintaxis anteriores.FitInfo No puede solicitar modelos con validación cruzada.FitInfo

ejemplo

[Mdl,FitInfo,HyperparameterOptimizationResults] = fitckernel(___) también devuelve los resultados de la optimización de hiperparámetros cuando se optimizan los hiperparámetros mediante el argumento de par nombre-valor.HyperparameterOptimizationResults'OptimizeHyperparameters'

Ejemplos

contraer todo

Entrenar un modelo de clasificación de kernel binario mediante SVM.

Cargue el conjunto de datos.ionosphere Este conjunto de datos tiene 34 predictores y 351 respuestas binarias para las devoluciones de radar, ya sea Bad () o Good ().'b''g'

load ionosphere [n,p] = size(X)
n = 351 
p = 34 
resp = unique(Y)
resp = 2x1 cell array
    {'b'}
    {'g'}

Entrenar un modelo de clasificación de kernel binario que identifique si el retorno del radar es malo () o bueno ().'b''g' Extraiga un resumen de ajuste para determinar qué tan bien se ajusta el algoritmo de optimización al modelo a los datos.

rng('default') % For reproducibility [Mdl,FitInfo] = fitckernel(X,Y)
Mdl =    ClassificationKernel               ResponseName: 'Y'                 ClassNames: {'b'  'g'}                    Learner: 'svm'     NumExpansionDimensions: 2048                KernelScale: 1                     Lambda: 0.0028              BoxConstraint: 1     Properties, Methods  
FitInfo = struct with fields:
                  Solver: 'LBFGS-fast'
            LossFunction: 'hinge'
                  Lambda: 0.0028
           BetaTolerance: 1.0000e-04
       GradientTolerance: 1.0000e-06
          ObjectiveValue: 0.2604
       GradientMagnitude: 0.0028
    RelativeChangeInBeta: 8.2512e-05
                 FitTime: 0.6323
                 History: []

es un modelo.MdlClassificationKernel Para inspeccionar el error de clasificación en la muestra, puede pasar y los datos de entrenamiento o nuevos datos a la función.Mdlloss O puede pasar y nuevos Datos predictores a la función para predecir las etiquetas de clase para nuevas observaciones.Mdlpredict También puede pasar y los datos de entrenamiento a la función para continuar el entrenamiento.Mdlresume

es una matriz de estructura que contiene información de optimización.FitInfo Utilícese para determinar si las mediciones de terminación de optimización son satisfactorias.FitInfo

Para una mayor precisión, puede aumentar el número máximo de iteraciones de optimización () y reducir los valores de tolerancia (y) mediante el uso de los argumentos de par nombre-valor.'IterationLimit''BetaTolerance''GradientTolerance' Hacerlo puede mejorar las medidas como y en.ObjectiveValueRelativeChangeInBetaFitInfo También puede optimizar los parámetros del modelo mediante el argumento de par nombre-valor.'OptimizeHyperparameters'

Cargue el conjunto de datos.ionosphere Este conjunto de datos tiene 34 predictores y 351 respuestas binarias para las devoluciones de radar, ya sea Bad () o Good ().'b''g'

load ionosphere rng('default') % For reproducibility

Valide de forma cruzada un modelo de clasificación de kernel binario. De forma predeterminada, el software utiliza la validación cruzada de 10 veces.

CVMdl = fitckernel(X,Y,'CrossVal','on')
CVMdl =    classreg.learning.partition.ClassificationPartitionedKernel     CrossValidatedModel: 'Kernel'            ResponseName: 'Y'         NumObservations: 351                   KFold: 10               Partition: [1x1 cvpartition]              ClassNames: {'b'  'g'}          ScoreTransform: 'none'     Properties, Methods  
numel(CVMdl.Trained)
ans = 10 

es un modelo.CVMdlClassificationPartitionedKernel Debido a que implementa la validación cruzada de 10 veces, contiene 10 modelos que el software entrena en observaciones de pliegue de formación (en pliegue).fitckernelCVMdlClassificationKernel

Estime el error de clasificación de validación cruzada.

kfoldLoss(CVMdl)
ans = 0.0940 

La tasa de error de clasificación es de aproximadamente 9%.

Optimice los hiperparámetros automáticamente mediante el argumento de par nombre-valor.'OptimizeHyperparameters'

Cargue el conjunto de datos.ionosphere Este conjunto de datos tiene 34 predictores y 351 respuestas binarias para las devoluciones de radar, ya sea Bad () o Good ().'b''g'

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. Especifique de modo que encuentre los valores óptimos de los argumentos de par nombre-valor.'OptimizeHyperparameters''auto'fitckernel'KernelScale''Lambda' Para reproducibilidad, establezca la semilla aleatoria y utilice la función de adquisición.'expected-improvement-plus'

rng('default') [Mdl,FitInfo,HyperparameterOptimizationResults] = fitckernel(X,Y,'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))

|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |    1 | Best   |     0.35897 |      2.0542 |     0.35897 |     0.35897 |       64.836 |   4.4811e-06 | |    2 | Accept |     0.35897 |       2.115 |     0.35897 |     0.35897 |     0.036335 |     0.015885 | |    3 | Accept |     0.39601 |      2.5168 |     0.35897 |     0.36053 |    0.0022147 |   6.8254e-06 | |    4 | Accept |     0.35897 |      2.9386 |     0.35897 |     0.35898 |       5.1259 |      0.28097 | |    5 | Accept |     0.35897 |      4.0456 |     0.35897 |     0.35897 |      0.24853 |      0.10828 | |    6 | Accept |     0.35897 |     0.86962 |     0.35897 |     0.35897 |       885.09 |   0.00057316 | |    7 | Best   |     0.10826 |      2.3925 |     0.10826 |     0.10833 |       8.0346 |    0.0048286 | |    8 | Best   |    0.076923 |      1.5884 |    0.076923 |    0.076999 |       7.0902 |    0.0034068 | |    9 | Accept |    0.091168 |      1.8387 |    0.076923 |    0.077059 |       9.1504 |    0.0020604 | |   10 | Best   |    0.062678 |      2.9574 |    0.062678 |    0.062723 |       3.5487 |    0.0025912 | |   11 | Accept |    0.062678 |      3.8799 |    0.062678 |    0.062741 |       2.3869 |     0.003321 | |   12 | Accept |     0.41026 |      5.0595 |    0.062678 |    0.062536 |      0.14075 |    0.0022499 | |   13 | Accept |    0.062678 |      4.0805 |    0.062678 |    0.062532 |       3.4215 |    0.0036803 | |   14 | Accept |    0.062678 |      2.3222 |    0.062678 |    0.061956 |       3.2928 |    0.0030533 | |   15 | Best   |     0.05698 |      1.5467 |     0.05698 |    0.057204 |       5.0598 |    0.0025499 | |   16 | Accept |    0.062678 |      1.4714 |     0.05698 |    0.057186 |       5.3401 |    0.0015096 | |   17 | Accept |     0.05698 |      1.3429 |     0.05698 |    0.057118 |        1.813 |    0.0069209 | |   18 | Accept |    0.059829 |      1.6375 |     0.05698 |    0.057092 |       1.5122 |    0.0046637 | |   19 | Accept |    0.059829 |      1.4914 |     0.05698 |     0.05718 |       1.9277 |    0.0056364 | |   20 | Accept |    0.065527 |      1.1227 |     0.05698 |    0.057189 |       1.4064 |    0.0094306 | |=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |   21 | Accept |     0.05698 |      1.3637 |     0.05698 |    0.057033 |       5.1719 |    0.0023614 | |   22 | Best   |    0.054131 |      21.847 |    0.054131 |    0.054176 |       1.9618 |   6.5704e-05 | |   23 | Best   |    0.042735 |      6.1944 |    0.042735 |    0.042763 |       1.9463 |   1.0169e-05 | |   24 | Accept |    0.082621 |      2.5507 |    0.042735 |    0.042775 |       1.0661 |   1.3245e-05 | |   25 | Accept |    0.054131 |      3.5626 |    0.042735 |    0.042789 |        3.288 |   2.0035e-05 | |   26 | Accept |    0.062678 |      1.7499 |    0.042735 |    0.042769 |        2.657 |   3.0334e-06 | |   27 | Accept |    0.059829 |      2.2649 |    0.042735 |    0.043054 |       2.0381 |   1.9791e-05 | |   28 | Accept |    0.042735 |      3.0566 |    0.042735 |    0.042764 |       3.5043 |    0.0001237 | |   29 | Accept |    0.054131 |      1.3056 |    0.042735 |    0.042764 |       1.3897 |   3.2288e-06 | |   30 | Accept |    0.062678 |      1.8689 |    0.042735 |    0.042792 |       2.2414 |    0.0002259 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 150.3231 seconds. Total objective function evaluation time: 93.0359  Best observed feasible point:     KernelScale      Lambda       ___________    __________        1.9463       1.0169e-05  Observed objective function value = 0.042735 Estimated objective function value = 0.042792 Function evaluation time = 6.1944  Best estimated feasible point (according to models):     KernelScale     Lambda       ___________    _________        3.5043       0.0001237  Estimated objective function value = 0.042792 Estimated function evaluation time = 3.1579 
Mdl =    ClassificationKernel               ResponseName: 'Y'                 ClassNames: {'b'  'g'}                    Learner: 'svm'     NumExpansionDimensions: 2048                KernelScale: 3.5043                     Lambda: 1.2370e-04              BoxConstraint: 23.0320     Properties, Methods  
FitInfo = struct with fields:
                  Solver: 'LBFGS-fast'
            LossFunction: 'hinge'
                  Lambda: 1.2370e-04
           BetaTolerance: 1.0000e-04
       GradientTolerance: 1.0000e-06
          ObjectiveValue: 0.0426
       GradientMagnitude: 0.0028
    RelativeChangeInBeta: 8.9154e-05
                 FitTime: 0.4079
                 History: []

HyperparameterOptimizationResults =    BayesianOptimization with properties:                        ObjectiveFcn: @createObjFcn/inMemoryObjFcn               VariableDescriptions: [4x1 optimizableVariable]                            Options: [1x1 struct]                       MinObjective: 0.0427                    XAtMinObjective: [1x2 table]              MinEstimatedObjective: 0.0428           XAtMinEstimatedObjective: [1x2 table]            NumObjectiveEvaluations: 30                   TotalElapsedTime: 150.3231                          NextPoint: [1x2 table]                             XTrace: [30x2 table]                     ObjectiveTrace: [30x1 double]                   ConstraintsTrace: []                      UserDataTrace: {30x1 cell}       ObjectiveEvaluationTimeTrace: [30x1 double]                 IterationTimeTrace: [30x1 double]                         ErrorTrace: [30x1 double]                   FeasibilityTrace: [30x1 logical]        FeasibilityProbabilityTrace: [30x1 double]                IndexOfMinimumTrace: [30x1 double]              ObjectiveMinimumTrace: [30x1 double]     EstimatedObjectiveMinimumTrace: [30x1 double]  

Para Big Data, el procedimiento de optimización puede tardar mucho tiempo. Si el conjunto de datos es demasiado grande para ejecutar el procedimiento de optimización, puede intentar optimizar los parámetros utilizando solo datos parciales. Utilice la función y especifique los datos de muestra sin reemplazo.datasample'Replace','false'

Argumentos de entrada

contraer todo

Datos de predictor, especificados como una matriz numérica, donde es el número de observaciones y es el número de predictores.npnp

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

Tipos de datos: single | double

Etiquetas de clase, 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.

  • fitckernel solo admite la clasificación binaria. O bien debe contener exactamente dos clases distintas, o debe especificar dos clases para el entrenamiento mediante el argumento de par nombre-valor.YClassNames

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

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

  • Una buena práctica es especificar el orden de la clase mediante el argumento de par nombre-valor.ClassNames

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

Nota

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

  • , Vector de carácter vacío (), cadena vacía () y elementos en la respuesta ()NaN''""<missing><undefined>Y

  • Al menos un valor en una observación predictora (fila en)NaNX

  • valor o peso ()NaN0'Weights'

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: implementa 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.Mdl = fitckernel(X,Y,'Learner','logistic','NumExpansionDimensions',2^15,'KernelScale','auto')2^15

Nota

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

Opciones de clasificación 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' fitckernel 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

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.

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 es el número de observaciones excluyendo las observaciones faltantes), el software completa estos pasos:'Leaveout','on'nn

  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'

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 fitckernel 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' fitckernel 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, fitckernel 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
0fitckernel no muestra información de diagnóstico.
1fitckernel muestra y almacena el valor de la función objetiva, la magnitud del degradado y otra información de diagnóstico. contiene la información de diagnóstico.FitInfo.History

Ejemplo: 'Verbose',1

Tipos de datos: single | double

Otras opciones de clasificación

contraer todo

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

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

Utilizar para:ClassNames

  • Ordene las clases durante el entrenamiento.

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

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

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

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

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

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

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

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

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

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

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

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

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

Tipos de datos: single | double | struct

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

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

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

Una estructura con dos campos:S

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

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

fitckernel Normaliza las probabilidades previas en sumar a 1.Prior

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

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

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

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

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

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

Ejemplo: 'ScoreTransform','logit'

Tipos de datos: char | string | function_handle

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico positivo de longitud'Weights' nDónde n es el número de observaciones en.X el fitckernel función pesa las observaciones con los valores correspondientes.XWeights

El valor predeterminado es ones(n,1).

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

Ejemplo: 'Weights',w

Tipos de datos: single | double

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'{'KernelScale','Lambda'}

  • : Optimice todos los parámetros elegibles.'all'

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

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

  • — busca entre valores positivos, por defecto escalado logaritmo en el rango, donde es el número de observaciones.Lambdafitckernel[1e-3,1e3]/nn

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

  • : busca entre enteros positivos, de forma predeterminada, con escala de registro en el intervalo.NumExpansionDimensionsfitckernel[100,10000]

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

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

Pase como el valor de.params'OptimizeHyperparameters'

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 kernel

Ejemplo: 'OptimizeHyperparameters','auto'

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

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

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

  • — Búsqueda aleatoria entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en orden aleatorio, utilizando muestreo uniforme sin sustitución de la rejilla.'gridsearch' Después de la optimización, puede obtener una tabla en orden de cuadrícula mediante el comando.sortrows(Mdl.HyperparameterOptimizationResults)

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Las funciones de adquisición cuyos nombres incluyen no producen resultados reproducibles porque la optimización depende del tiempo de ejecución de la función objetiva.per-second Las funciones de adquisición cuyos nombres incluyen modificar su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte.Tipos de función de adquisición

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

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

Inf
NumGridDivisionsPara el número de valores de cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que da el número de valores para cada dimensión, o un escalar que se aplica a todas las dimensiones. Este campo se omite para las variables categóricas.10
ShowPlotsValor lógico que indica si se mostrarán los trazados. Si, este campo traza el mejor valor de la función objetiva con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es así, también traza un modelo de la función objetiva contra los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se guardan los resultados cuando es.Optimizer'bayesopt' Si, este campo sobrescribe una variable de espacio de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Mostrar en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Visualización iterativa con información adicional2

Para obtener información detallada, vea el argumento de par nombre-valor.bayesoptVerbose

1
UseParallelValor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere.Parallel Computing Toolbox™ Para obtener más información, consulte.Optimización bayesiana paralelafalse
Repartition

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

normalmente proporciona los resultados más sólidos, ya que esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, requiere al menos el doble de evaluaciones de función.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, creado por.cvpartitioncvpartitionSi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de exclusión.(0,1)
KfoldUn entero mayor que 1.

Ejemplo: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Tipos de datos: struct

Argumentos de salida

contraer todo

Modelo de clasificación de kernel entrenado, devuelto como objeto de modelo o objeto de modelo validado de forma cruzada.ClassificationKernelClassificationPartitionedKernel

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

Para hacer referencia a las propiedades de, utilice notación de puntos.Mdl Por ejemplo, escriba en la ventana de comandos para mostrar el número de cotas del espacio expandido.Mdl.NumExpansionDimensions

Nota

A diferencia de otros modelos de clasificación, y para el uso de memoria económica, un objeto de modelo no almacena los datos de entrenamiento o los detalles del proceso de entrenamiento (por ejemplo, historial de convergencia).ClassificationKernel

Detalles de optimización, devueltos como una matriz de estructura, incluidos los campos descritos en esta tabla. Los campos contienen valores finales o las especificaciones del argumento de par nombre-valor.

CampoDescripción
Solver

Técnica de minimización de funciones objetivas:,, o.'LBFGS-fast''LBFGS-blockwise''LBFGS-tall' Para obtener más información, consulte.Algoritmos

LossFunctionFunción de pérdida. Ya sea o según el tipo de modelo de clasificación lineal.'hinge''logit' Ver.Learner
LambdaFuerza del término de regularización. Ver.Lambda
BetaToleranceTolerancia relativa en los coeficientes lineales y el término de sesgo. Ver.BetaTolerance
GradientToleranceTolerancia de degradado absoluta. Ver.GradientTolerance
ObjectiveValueValor de la función objetiva cuando finaliza la optimización. La pérdida de clasificación más el término de regularización componen la función objetiva.
GradientMagnitudeNorma infinita del vector de degradado de la función objetiva cuando finaliza la optimización. Ver.GradientTolerance
RelativeChangeInBetaCambios relativos en los coeficientes lineales y el término de sesgo cuando finaliza la optimización. Ver.BetaTolerance
FitTimeTiempo transcurrido, reloj de pared (en segundos) necesario para ajustar el modelo a los datos.
HistoryHistorial de la información de optimización. Este campo está vacío () si se especifica.[]'Verbose',0 Para obtener más información, consulte y.VerboseAlgoritmos

Para acceder a los campos, utilice notación de puntos. Por ejemplo, para acceder al vector de los valores de función objetiva para cada iteración, escriba en la ventana de comandos.FitInfo.ObjectiveValue

Una buena práctica es examinar para evaluar si la convergencia es satisfactoria.FitInfo

Optimización de validación cruzada de hiperparámetros, devueltos como un objeto o una tabla de hiperparámetros y valores asociados.BayesianOptimization La salida no está vacía cuando el valor de no es.'OptimizeHyperparameters''none' El valor de salida depende del valor de campo del argumento de par nombre-valor:Optimizer'HyperparameterOptimizationOptions'

Valor de campoOptimizerValor deHyperparameterOptimizationResults
predeterminado'bayesopt'Objeto de claseBayesianOptimization
O'gridsearch''randomsearch'Tabla de hiperparámetros utilizados, valores de función objetiva observados (pérdida de validación cruzada) y rango de observaciones de menor (mejor) a mayor (peor)

Limitaciones

  • no acepta las condiciones iniciales para el vector de coeficientes beta () y el término de sesgo () utilizado para determinar la función de decisión,fitckernelβb f(x)=T(x)β+b.

  • no admite opciones de estandarización y validación cruzada.fitckernel

  • no acepta entradas de tabla.fitckernel

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.fitckernel 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.fitcsvmnnfitckernelnmmn

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

fitckernel 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 fitckernel 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 fitckernel utiliza una estrategia en bloque, fitckernel 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 fitckernel 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 fitckernel muestra información de diagnóstico para cada paso de datos y almacena la información en el campo de.HistoryFitInfo

Cuando fitckernel no utiliza una estrategia en bloque, las estimaciones iniciales son ceros. Si especifica,'Verbose',1 fitckernel 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

Introducido en R2017b