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.

fsrnca

Selección de características mediante análisis de componentes de vecindad para regresión

Descripción

ejemplo

mdl = fsrnca(X,Y) realiza la selección de características para la regresión utilizando los predictores y las respuestas en.XY

Aprende los pesos de las entidades mediante una adaptación diagonal del análisis de componentes de vecindad (NCA) con regularización.fsrnca

ejemplo

mdl = fsrnca(X,Y,Name,Value) realiza la selección de características para la regresión con opciones adicionales especificadas por uno o más argumentos de par nombre-valor.

Ejemplos

contraer todo

Genere datos de juguete donde la variable de respuesta dependa de los predictores 3º, 9th y 15th.

rng(0,'twister'); % For reproducibility N = 100; X = rand(N,20); y = 1 + X(:,3)*5 + sin(X(:,9)./X(:,15) + 0.25*randn(N,1));

Ajuste el modelo de análisis de componentes de vecindad para la regresión.

mdl = fsrnca(X,y,'Verbose',1,'Lambda',0.5/N);
 o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |        0 |  1.636932e+00 |   3.688e-01 |   0.000e+00 |        |   1.627e+00 |   0.000e+00 |   YES  | |        1 |  8.304833e-01 |   1.083e-01 |   2.449e+00 |    OK  |   9.194e+00 |   4.000e+00 |   YES  | |        2 |  7.548105e-01 |   1.341e-02 |   1.164e+00 |    OK  |   1.095e+01 |   1.000e+00 |   YES  | |        3 |  7.346997e-01 |   9.752e-03 |   6.383e-01 |    OK  |   2.979e+01 |   1.000e+00 |   YES  | |        4 |  7.053407e-01 |   1.605e-02 |   1.712e+00 |    OK  |   5.809e+01 |   1.000e+00 |   YES  | |        5 |  6.970502e-01 |   9.106e-03 |   8.818e-01 |    OK  |   6.223e+01 |   1.000e+00 |   YES  | |        6 |  6.952347e-01 |   5.522e-03 |   6.382e-01 |    OK  |   3.280e+01 |   1.000e+00 |   YES  | |        7 |  6.946302e-01 |   9.102e-04 |   1.952e-01 |    OK  |   3.380e+01 |   1.000e+00 |   YES  | |        8 |  6.945037e-01 |   6.557e-04 |   9.942e-02 |    OK  |   8.490e+01 |   1.000e+00 |   YES  | |        9 |  6.943908e-01 |   1.997e-04 |   1.756e-01 |    OK  |   1.124e+02 |   1.000e+00 |   YES  | |       10 |  6.943785e-01 |   3.478e-04 |   7.755e-02 |    OK  |   7.621e+01 |   1.000e+00 |   YES  | |       11 |  6.943728e-01 |   1.428e-04 |   3.416e-02 |    OK  |   3.649e+01 |   1.000e+00 |   YES  | |       12 |  6.943711e-01 |   1.128e-04 |   1.231e-02 |    OK  |   6.092e+01 |   1.000e+00 |   YES  | |       13 |  6.943688e-01 |   1.066e-04 |   2.326e-02 |    OK  |   9.319e+01 |   1.000e+00 |   YES  | |       14 |  6.943655e-01 |   9.324e-05 |   4.399e-02 |    OK  |   1.810e+02 |   1.000e+00 |   YES  | |       15 |  6.943603e-01 |   1.206e-04 |   8.823e-02 |    OK  |   4.609e+02 |   1.000e+00 |   YES  | |       16 |  6.943582e-01 |   1.701e-04 |   6.669e-02 |    OK  |   8.425e+01 |   5.000e-01 |   YES  | |       17 |  6.943552e-01 |   5.160e-05 |   6.473e-02 |    OK  |   8.832e+01 |   1.000e+00 |   YES  | |       18 |  6.943546e-01 |   2.477e-05 |   1.215e-02 |    OK  |   7.925e+01 |   1.000e+00 |   YES  | |       19 |  6.943546e-01 |   1.077e-05 |   6.086e-03 |    OK  |   1.378e+02 |   1.000e+00 |   YES  |  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |       20 |  6.943545e-01 |   2.260e-05 |   4.071e-03 |    OK  |   5.856e+01 |   1.000e+00 |   YES  | |       21 |  6.943545e-01 |   4.250e-06 |   1.109e-03 |    OK  |   2.964e+01 |   1.000e+00 |   YES  | |       22 |  6.943545e-01 |   1.916e-06 |   8.356e-04 |    OK  |   8.649e+01 |   1.000e+00 |   YES  | |       23 |  6.943545e-01 |   1.083e-06 |   5.270e-04 |    OK  |   1.168e+02 |   1.000e+00 |   YES  | |       24 |  6.943545e-01 |   1.791e-06 |   2.673e-04 |    OK  |   4.016e+01 |   1.000e+00 |   YES  | |       25 |  6.943545e-01 |   2.596e-07 |   1.111e-04 |    OK  |   3.154e+01 |   1.000e+00 |   YES  |           Infinity norm of the final gradient = 2.596e-07               Two norm of the final step     = 1.111e-04, TolX   = 1.000e-06 Relative infinity norm of the final gradient = 2.596e-07, TolFun = 1.000e-06 EXIT: Local minimum found. 

Trace las operaciones seleccionadas. Los pesos de las entidades irrelevantes deben estar cerca de cero.

figure() plot(mdl.FeatureWeights,'ro') grid on xlabel('Feature index') ylabel('Feature weight')

detecta correctamente los predictores relevantes para esta respuesta.fsrnca

Cargue los datos de ejemplo.

load robotarm.mat 

El DataSet (pumadyn32nm) se crea usando un simulador de brazo robótico con 7168 observaciones de entrenamiento y 1024 observaciones de prueba con 32 características [1] [2].robotarm Se trata de una versión preprocesada del conjunto de datos original. Los datos se preprocesan restando un ajuste de regresión lineal, seguido de la normalización de todas las entidades a la varianza de la unidad.

Realice la selección de características de análisis de componentes de vecindad (NCA) para la regresión con el valor predeterminado (parámetro de regularización).

nca = fsrnca(Xtrain,ytrain,'FitMethod','exact', ...     'Solver','lbfgs'); 

Graficar los valores seleccionados.

figure plot(nca.FeatureWeights,'ro') xlabel('Feature index') ylabel('Feature weight') grid on 

Más de la mitad de los pesos de entidades son distintos de cero. Calcule la pérdida utilizando el conjunto de pruebas como medida del rendimiento utilizando las entidades seleccionadas.

L = loss(nca,Xtest,ytest) 
 L =      0.0837  

Intente mejorar el rendimiento. Ajuste el parámetro de regularización para la selección de características mediante la validación cruzada de cinco veces. Sintonización significa encontrar el valor que produce la pérdida de regresión mínima. Para sintonizar mediante la validación cruzada:

1. Particionar los datos en cinco pliegues. Para cada pliegue, asigna el 4/5º de los datos como un conjunto de entrenamiento, y 1/5º de los datos como un conjunto de prueba.cvpartition

rng(1) % For reproducibility n = length(ytrain); cvp = cvpartition(length(ytrain),'kfold',5); numvalidsets = cvp.NumTestSets; 

Asigne el valores para la búsqueda. Multiplicar los valores de respuesta por una constante aumenta el término de la función de pérdida por un factor de la constante. Por lo tanto, incluyendo el factor en elstd(ytrain) valores equilibra la función de pérdida predeterminada (, la desviación media absoluta) y el término de regularización en la función objetiva.'mad' En este ejemplo, el factor es uno porque los datos de ejemplo cargados son una versión preprocesada del conjunto de datos original.std(ytrain)

lambdavals = linspace(0,50,20)*std(ytrain)/n; 

Cree una matriz para almacenar los valores de pérdida.

lossvals = zeros(length(lambdavals),numvalidsets); 

2. Entrena el modelo NCA para cada valor, utilizando el conjunto de entrenamiento en cada pliegue.

3. Calcule la pérdida de regresión para el conjunto de pruebas correspondiente en el pliegue utilizando el modelo NCA. Registre el valor de pérdida.

4. Repita este procedimiento para cada valor y cada pliegue.

for i = 1:length(lambdavals)     for k = 1:numvalidsets         X = Xtrain(cvp.training(k),:);         y = ytrain(cvp.training(k),:);         Xvalid = Xtrain(cvp.test(k),:);         yvalid = ytrain(cvp.test(k),:);          nca = fsrnca(X,y,'FitMethod','exact', ...              'Solver','minibatch-lbfgs','Lambda',lambdavals(i), ...              'GradientTolerance',1e-4,'IterationLimit',30);          lossvals(i,k) = loss(nca,Xvalid,yvalid,'LossFunction','mse');     end end 

Calcule la pérdida media obtenida de los pliegues para cada Valor.

meanloss = mean(lossvals,2); 

Trace la pérdida media frente a la Valores.

figure plot(lambdavals,meanloss,'ro-') xlabel('Lambda') ylabel('Loss (MSE)') grid on 

Encuentra la valor que da el valor de pérdida mínima.

[~,idx] = min(meanloss)  bestlambda = lambdavals(idx) bestloss = meanloss(idx) 
 idx =      17   bestlambda =      0.0059   bestloss =      0.0590  

Ajuste el modelo de selección de características de NCA para la regresión utilizando el mejor Valor.

nca = fsrnca(Xtrain,ytrain,'FitMethod','exact', ...     'Solver','lbfgs','Lambda',bestlambda); 

Trace las operaciones seleccionadas.

figure plot(nca.FeatureWeights,'ro') xlabel('Feature Index') ylabel('Feature Weight') grid on 

La mayoría de los pesos de entidades son cero. identifica las cuatro características más relevantes.fsrnca

Calcule la pérdida del conjunto de pruebas.

L = loss(nca,Xtest,ytest) 
 L =      0.0571  

Ajustando el parámetro de regularización, , eliminó más características irrelevantes y mejoró el rendimiento.

En este ejemplo se utilizan los datos de abalone del repositorio de aprendizaje automático de UCI.[3][4][5] Descargue los datos y guárdela en su carpeta actual con el nombre.'abalone.data'

Almacene los datos en una tabla. Visualice las primeras siete filas.

tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false); tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height', ...     'WWeight','SWeight','VWeight','ShWeight','NoShellRings'}; tbl(1:7,:) 
 ans =    7×9 table      Sex    Length    Diameter    Height    WWeight    SWeight    VWeight    ShWeight    NoShellRings     ___    ______    ________    ______    _______    _______    _______    ________    ____________      'M'    0.455     0.365       0.095      0.514     0.2245      0.101      0.15       15               'M'     0.35     0.265        0.09     0.2255     0.0995     0.0485      0.07        7               'F'     0.53      0.42       0.135      0.677     0.2565     0.1415      0.21        9               'M'     0.44     0.365       0.125      0.516     0.2155      0.114     0.155       10               'I'     0.33     0.255        0.08      0.205     0.0895     0.0395     0.055        7               'I'    0.425       0.3       0.095     0.3515      0.141     0.0775      0.12        8               'F'     0.53     0.415        0.15     0.7775      0.237     0.1415      0.33       20            

El conjunto de datos tiene 4177 observaciones. El objetivo es predecir la edad de abulón de ocho mediciones físicas. La última variable, el número de anillos de vaciado, muestra la edad del abulón. El primer predictor es una variable categórica. La última variable de la tabla es la variable de respuesta.

Prepare las variables de predictor y respuesta para.fsrnca La última columna de contiene el número de anillos de vaciado, que es la variable de respuesta.tbl La primera variable predictora, el sexo, es categórica. Debe crear variables ficticias.

y = table2array(tbl(:,end)); X(:,1:3) = dummyvar(categorical(tbl.Sex)); X = [X,table2array(tbl(:,2:end-1))]; 

Utilice la validación cruzada de cuatro veces para ajustar el parámetro de regularización en el modelo NCA. Primero particionar los datos en cuatro pliegues.

rng('default') % For reproducibility n = length(y); cvp = cvpartition(n,'kfold',4); numtestsets = cvp.NumTestSets; 

divide los datos en cuatro particiones (pliegues).cvpartition En cada pliegue, alrededor de tres cuartas partes de los datos se asignan como un conjunto de entrenamiento y un cuarto se asigna como un conjunto de prueba.

Genere una variedad de (parámetro de regularización) para ajustar el modelo para determinar la mejor Valor. Cree un vector para recoger los valores de pérdida de cada ajuste.

lambdavals = linspace(0,25,20)*std(y)/n; lossvals = zeros(length(lambdavals),numtestsets); 

Las filas de corresponde a lalossvals valores y las columnas corresponden a los pliegues.

Ajuste el modelo de NCA para la regresión utilizando los datos de cada pliegue utilizando cadafsrnca Valor. Calcule la pérdida de cada modelo utilizando los datos de prueba de cada pliegue.

for i = 1:length(lambdavals)    for k = 1:numtestsets        Xtrain = X(cvp.training(k),:);        ytrain = y(cvp.training(k),:);        Xtest = X(cvp.test(k),:);        ytest = y(cvp.test(k),:);         nca = fsrnca(Xtrain,ytrain,'FitMethod','exact', ...      'Solver','lbfgs','Lambda',lambdavals(i),'Standardize',true);         lossvals(i,k) = loss(nca,Xtest,ytest,'LossFunction','mse');     end end 

Calcule la pérdida media de los pliegues, es decir, calcule la media en la segunda dimensión de.lossvals

meanloss = mean(lossvals,2); 

Trace el valores frente a la pérdida media de los cuatro pliegues.

figure plot(lambdavals,meanloss,'ro-') xlabel('Lambda') ylabel('Loss (MSE)') grid on 

Encuentra la valor que minimiza la pérdida media.

[~,idx] = min(meanloss); bestlambda = lambdavals(idx) 
 bestlambda =      0.0071  

Calcule el mejor valor de pérdida.

bestloss = meanloss(idx) 
 bestloss =      4.7799  

Ajuste el modelo NCA en todos los datos utilizando la mejor Valor.

nca = fsrnca(X,y,'FitMethod','exact','Solver','lbfgs', ...     'Verbose',1,'Lambda',bestlambda,'Standardize',true); 
  o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |        0 |  2.469168e+00 |   1.266e-01 |   0.000e+00 |        |   4.741e+00 |   0.000e+00 |   YES  | |        1 |  2.375166e+00 |   8.265e-02 |   7.268e-01 |    OK  |   1.054e+01 |   1.000e+00 |   YES  | |        2 |  2.293528e+00 |   2.067e-02 |   2.034e+00 |    OK  |   1.569e+01 |   1.000e+00 |   YES  | |        3 |  2.286703e+00 |   1.031e-02 |   3.158e-01 |    OK  |   2.213e+01 |   1.000e+00 |   YES  | |        4 |  2.279928e+00 |   2.023e-02 |   9.374e-01 |    OK  |   1.953e+01 |   1.000e+00 |   YES  | |        5 |  2.276258e+00 |   6.884e-03 |   2.497e-01 |    OK  |   1.439e+01 |   1.000e+00 |   YES  | |        6 |  2.274358e+00 |   1.792e-03 |   4.010e-01 |    OK  |   3.109e+01 |   1.000e+00 |   YES  | |        7 |  2.274105e+00 |   2.412e-03 |   2.399e-01 |    OK  |   3.557e+01 |   1.000e+00 |   YES  | |        8 |  2.274073e+00 |   1.459e-03 |   7.684e-02 |    OK  |   1.356e+01 |   1.000e+00 |   YES  | |        9 |  2.274050e+00 |   3.733e-04 |   3.797e-02 |    OK  |   1.725e+01 |   1.000e+00 |   YES  | |       10 |  2.274043e+00 |   2.750e-04 |   1.379e-02 |    OK  |   2.445e+01 |   1.000e+00 |   YES  | |       11 |  2.274027e+00 |   2.682e-04 |   5.701e-02 |    OK  |   7.386e+01 |   1.000e+00 |   YES  | |       12 |  2.274020e+00 |   1.712e-04 |   4.107e-02 |    OK  |   9.461e+01 |   1.000e+00 |   YES  | |       13 |  2.274014e+00 |   2.633e-04 |   6.720e-02 |    OK  |   7.469e+01 |   1.000e+00 |   YES  | |       14 |  2.274012e+00 |   9.818e-05 |   2.263e-02 |    OK  |   3.275e+01 |   1.000e+00 |   YES  | |       15 |  2.274012e+00 |   4.220e-05 |   6.188e-03 |    OK  |   2.799e+01 |   1.000e+00 |   YES  | |       16 |  2.274012e+00 |   2.859e-05 |   4.979e-03 |    OK  |   6.628e+01 |   1.000e+00 |   YES  | |       17 |  2.274011e+00 |   1.582e-05 |   6.767e-03 |    OK  |   1.439e+02 |   1.000e+00 |   YES  | |       18 |  2.274011e+00 |   7.623e-06 |   4.311e-03 |    OK  |   1.211e+02 |   1.000e+00 |   YES  | |       19 |  2.274011e+00 |   3.038e-06 |   2.528e-04 |    OK  |   1.798e+01 |   5.000e-01 |   YES  |  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |       20 |  2.274011e+00 |   6.710e-07 |   2.325e-04 |    OK  |   2.721e+01 |   1.000e+00 |   YES  |           Infinity norm of the final gradient = 6.710e-07               Two norm of the final step     = 2.325e-04, TolX   = 1.000e-06 Relative infinity norm of the final gradient = 6.710e-07, TolFun = 1.000e-06 EXIT: Local minimum found. 

Trace las operaciones seleccionadas.

figure plot(nca.FeatureWeights,'ro') xlabel('Feature Index') ylabel('Feature Weight') grid on 

Las entidades irrelevantes tienen pesos cero. De acuerdo con esta figura, las características 1, 3 y 9 no están seleccionadas.

Ajuste un modelo de regresión de proceso Gaussiano (GPR) utilizando el subconjunto del método regresivo para la estimación de parámetros y el método condicional totalmente independiente para la predicción. Utilice la función de kernel exponencial cuadrado de ARD, que asigna un peso individual a cada predictor. Estandarizar los predictores.

gprMdl = fitrgp(tbl,'NoShellRings','KernelFunction','ardsquaredexponential', ...       'FitMethod','sr','PredictMethod','fic','Standardize',true) 
 gprMdl =     RegressionGP            PredictorNames: {1×8 cell}              ResponseName: 'NoShellRings'     CategoricalPredictors: 1         ResponseTransform: 'none'           NumObservations: 4177            KernelFunction: 'ARDSquaredExponential'         KernelInformation: [1×1 struct]             BasisFunction: 'Constant'                      Beta: 11.4959                     Sigma: 2.0282         PredictorLocation: [10×1 double]            PredictorScale: [10×1 double]                     Alpha: [1000×1 double]          ActiveSetVectors: [1000×10 double]             PredictMethod: 'FIC'             ActiveSetSize: 1000                 FitMethod: 'SR'           ActiveSetMethod: 'Random'         IsActiveSetVector: [4177×1 logical]             LogLikelihood: -9.0019e+03          ActiveSetHistory: [1×1 struct]            BCDInformation: []   

Calcule la pérdida de regresión en los datos de entrenamiento (pérdida de reenvío) para el modelo entrenado.

L = resubLoss(gprMdl) 
 L =      4.0306  

La pérdida de validación cruzada más pequeña que se utiliza es comparable a la pérdida obtenida mediante un modelo GPR con un kernel ARD.fsrnca

Argumentos de entrada

contraer todo

Valores de la variable predictora, especificados como un-por-matriz, donde es el número de observaciones y es el número de variables predictoras.npnp

Tipos de datos: single | double

Valores de respuesta, especificados como un vector real numérico de longitud, donde está el número de observaciones.nn

Tipos de datos: single | double

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 el solucionador como el descenso de degradado estocástico, los pesos de observación como los valores en el vector y establece el parámetro de regularización en 0,0003.'Solver','sgd','Weights',W,'Lambda',0.0003W

Opciones de ajuste

contraer todo

Método para ajustar el modelo, especificado como el par separado por comas que consta de uno de los siguientes:'FitMethod'

  • : Realiza el ajuste utilizando todos los datos.'exact'

  • — Sin ajuste.'none' Utilice esta opción para evaluar el error de generalización del modelo NCA utilizando los pesos de entidades iniciales suministrados en la llamada a.fsrnca

  • : Divide los datos en particiones (subconjuntos), se ajusta a cada partición mediante el método y devuelve el promedio de los pesos de las entidades.'average'exact Puede especificar el número de particiones mediante el argumento de par nombre-valor.NumPartitions

Ejemplo: 'FitMethod','none'

Número de particiones para dividir los datos para usar con la opción, especificado como el par separado por comas que consta de y un valor entero entre 2 y, donde es el número de observaciones.'FitMethod','average''NumPartitions'nn

Ejemplo: 'NumPartitions',15

Tipos de datos: double | single

Parámetro de regularización para evitar el sobreajuste, especificado como el par separado por comas que consta de un escalar no negativo.'Lambda'

A medida que aumenta el número de observaciones, la probabilidad de sobreajuste disminuye y la cantidad necesaria de regularización también disminuye.n Consulte para obtener información sobre cómo ajustar el parámetro de regularización.Ajustar el parámetro de regularización en NCA para regresión

Ejemplo: 'Lambda',0.002

Tipos de datos: double | single

Ancho del kernel, especificado como el par separado por comas que consta de un escalar real positivo.'LengthScale'

Un valor de escala de longitud de 1 es sensible cuando todos los predictores están en la misma escala. Si los predictores en son de muy diferentes magnitudes, a continuación, considere la estandarización de los valores predictores utilizando y estableciendo.X'Standardize',true'LengthScale',1

Ejemplo: 'LengthScale',1.5

Tipos de datos: double | single

Pesos de entidades iniciales, especificados como el par separado por comas que consta de un vector a-by-1 de escalares positivos reales, donde es el número de predictores en los datos de entrenamiento.'InitialFeatureWeights'pp

La función objetiva regularizada para optimizar los pesos de las entidades es no convexa. Como resultado, el uso de diferentes pesos de entidades iniciales puede dar resultados diferentes. Establecer todos los pesos de las entidades iniciales en 1 generalmente funciona bien, pero en algunos casos, la inicialización aleatoria puede ofrecer soluciones de mejor calidad.rand(p,1)

Tipos de datos: double | single

Pesos de observación, especificados como el par separado por comas que consiste en y un vector de-por-1 de escalares positivos reales.'ObservationWeights'n Utilice pesas de observación para especificar una mayor importancia de algunas observaciones en comparación con otras. Las ponderaciones predeterminadas asignan la misma importancia a todas las observaciones.

Tipos de datos: double | single

Indicador para estandarizar los Datos predictores, especificados como el par separado por comas que consta de y cualquiera o.'Standardize'falsetrue Para obtener más información, consulte.Impacto de la estandarización

Ejemplo: 'Standardize',true

Tipos de datos: logical

Indicador de nivel de verbosidad para la visualización de Resumen de convergencia, especificado como el par separado por comas que consta de uno de los siguientes:'Verbose'

  • 0 — ningún Resumen de convergencia

  • 1 — Resumen de convergencia, incluida la norma de los valores de función de gradiente y objetivo

  • > 1 — más información de convergencia, dependiendo del algoritmo de ajuste

    Cuando se utiliza el solucionador y el nivel de detalle > 1, la información de convergencia incluye la iteración del registro desde el mini-batch intermedio LBFGS encaja.'minibatch-lbfgs'

Ejemplo: 'Verbose',1

Tipos de datos: double | single

Tipo de solucionador para estimar ponderaciones de entidades, especificado como el par separado por comas que consta de uno de los siguientes:'Solver'

  • — Algoritmo de memoria limitada de Broyden-Fletcher-Goldfarb-Shanno (LBFGS)'lbfgs'

  • — Algoritmo de descenso de degradado estocástico (SGD)'sgd'

  • — Descenso del gradiente estocástico con el algoritmo LBFGS aplicado a los mini-lotes'minibatch-lbfgs'

El valor predeterminado es para ≤ 1000, y para > 1000.'lbfgs'n'sgd'n

Ejemplo: 'solver','minibatch-lbfgs'

Función de pérdida, especificada como el par separado por comas que consta de uno de los siguientes:'LossFunction'

  • — Desviación media absoluta'mad'

    l(yi,yj)=|yiyj|.

  • — Error cuadrado medio'mse'

    l(yi,yj)=(yiyj)2.

  • — función de pérdida ε-insensible'epsiloninsensitive'

    l(yi,yj)=max(0,|yiyj|ϵ).

    Esta función de pérdida es más robusta que los valores atípicos que el error cuadrado medio o la desviación absoluta media.

  • @lossfun — Manija de la función de pérdida personalizada. Una función de pérdida tiene este formulario. es un vector de-por-1 y es un vector de-por-1. es un-por-matriz de valores de pérdida tales que es el valor de pérdida para y.

    function L = lossfun(Yu,Yv) % calculation of loss ...
    YuuYvvLuvL(i,j)Yu(i)Yv(j)

La función objetivo para la minimización incluye la función de pérdida l(yi,yj) como sigue:

f(w)=1ni=1nj=1,jinpijl(yi,yj)+λr=1pwr2,

donde está el vector de peso de la característica, es el número de observaciones, y es el número de variables predictoras.wnp pij es la probabilidad de que xj es el punto de referencia para xi. Para obtener más información, consulte.Selección de características de NCA para regresión

Ejemplo: 'LossFunction',@lossfun

Valor de épsilon para la opción, especificado como el par separado por comas que consta de un escalar real no negativo.'LossFunction','epsiloninsensitive''LossFunction' El valor predeterminado es una estimación de la desviación estándar de la muestra utilizando el rango intercuartil de la variable de respuesta.

Ejemplo: 'Epsilon',0.1

Tipos de datos: double | single

Tamaño de memoria, en MB, para usar para la función objetiva y el cálculo de degradado, especificado como el par separado por comas que consta de y un entero.'CacheSize'

Ejemplo: 'CacheSize',1500MB

Tipos de datos: double | single

LBFGS Options

contraer todo

Tamaño del búfer de historial para la aproximación de hessian para el solucionador, especificado como el par separado por comas que consta de un entero positivo.'lbfgs''HessianHistorySize' En cada iteración, la función utiliza las iteraciones más recientes para construir una aproximación al hessian inverso.HessianHistorySize

Ejemplo: 'HessianHistorySize',20

Tipos de datos: double | single

Tamaño de paso inicial para el solucionador, especificado como el par separado por comas que consta de un escalar real positivo.'lbfgs''InitialStepSize' De forma predeterminada, la función determina el tamaño del paso inicial automáticamente.

Tipos de datos: double | single

Método de búsqueda de línea, especificado como el par separado por comas que consta de uno de los siguientes:'LineSearchMethod'

  • — La búsqueda débil de la línea Wolfe'weakwolfe'

  • — Fuerte búsqueda de la línea Wolfe'strongwolfe'

  • — Búsqueda de la línea de backtracking'backtracking'

Ejemplo: 'LineSearchMethod','backtracking'

Número máximo de iteraciones de búsqueda de líneas, especificadas como el par separado por comas y que consta de un entero positivo.'MaxLineSearchIterations'

Ejemplo: 'MaxLineSearchIterations',25

Tipos de datos: double | single

Tolerancia de convergencia relativa en la norma de degradado para el solucionador, especificada como el par separado por comas que consta de y un escalar real positivo.lbfgs'GradientTolerance'

Ejemplo: 'GradientTolerance',0.000002

Tipos de datos: double | single

Opciones de SGD

contraer todo

Tasa de aprendizaje inicial para el solucionador, especificada como el par separado por comas que consta de un escalar real positivo.'sgd''InitialLearningRate'

Cuando se utiliza el tipo de solucionador, la velocidad de aprendizaje se descompone en iteraciones a partir del valor especificado para.'sgd''InitialLearningRate'

El valor predeterminado significa que la tasa de aprendizaje inicial se determina mediante experimentos en pequeños subconjuntos de datos.'auto' Utilice el argumento de par nombre-valor para especificar el número de iteraciones para ajustar automáticamente la tasa de aprendizaje inicial.NumTuningIterations Utilice el argumento de par nombre-valor para especificar el número de observaciones que se utilizarán para ajustar automáticamente la tasa de aprendizaje inicial.TuningSubsetSize

Para el tipo de solucionador, puede establecer un valor muy alto.'minibatch-lbfgs''InitialLearningRate' En este caso, la función aplica LBFGS a cada mini lote por separado con pesos de entidades iniciales del mini lote anterior.

Para asegurarse de que la tasa de aprendizaje inicial elegida disminuye el valor objetivo con cada iteración, trace los valores de versus los guardados en la propiedad.IterationObjectivemdl.FitInfo

Puede utilizar el método con el mismo para empezar desde la solución actual y ejecutar iteraciones adicionalesrefit'InitialFeatureWeights'mdl.FeatureWeights

Ejemplo: 'InitialLearningRate',0.9

Tipos de datos: double | single

Número de observaciones que se utilizarán en cada lote para el solucionador, especificado como el par separado por comas y que consta de un entero positivo de 1 a.'sgd''MiniBatchSize'n

Ejemplo: 'MiniBatchSize',25

Tipos de datos: double | single

Número máximo de pasadas a través de todas las observaciones para el solucionador, especificadas como el par separado por comas que consta de y un entero positivo.n'sgd''PassLimit' Cada paso a través de todos los datos se llama una época.

Ejemplo: 'PassLimit',10

Tipos de datos: double | single

Frecuencia de lotes para mostrar el Resumen de convergencia para el solucionador, especificado como el par separado por comas que consta de y un entero positivo.'sgd''NumPrint' Este argumento se aplica cuando el valor es mayor que 0. se procesan los minilotes para cada línea del Resumen de convergencia que se muestra en la línea de comandos.'Verbose'NumPrint

Ejemplo: 'NumPrint',5

Tipos de datos: double | single

Número de iteraciones de optimización para el solucionador, especificadas como el par separado por comas y que consta de un entero positivo.'sgd''NumTuningIterations' Esta opción solo es válida para.'InitialLearningRate','auto'

Ejemplo: 'NumTuningIterations',15

Tipos de datos: double | single

Número de observaciones que se utilizarán para ajustar la velocidad de aprendizaje inicial, especificada como el par separado por comas consistente en un valor entero positivo de 1 a.'TuningSubsetSize'n Esta opción solo es válida para.'InitialLearningRate','auto'

Ejemplo: 'TuningSubsetSize',25

Tipos de datos: double | single

Opciones de SGD o LBFGS

contraer todo

Número máximo de iteraciones, especificadas como el par separado por comas y que consta de un entero positivo.'IterationLimit' El valor predeterminado es 10000 para SGD y 1000 para LBFGS y mini-batch LBFGS.

Cada paso a través de un lote es una iteración. Cada paso a través de todos los datos es una época. Si los datos se dividen en minilotes, cada época equivale a iteraciones.kk

Ejemplo: 'IterationLimit',250

Tipos de datos: double | single

Tolerancia de convergencia en el tamaño del paso, especificado como el par separado por comas que consta de un escalar real positivo.'StepTolerance' El solucionador utiliza una tolerancia de paso absoluta y el solucionador utiliza una tolerancia de paso relativa.'lbfgs''sgd'

Ejemplo: 'StepTolerance',0.000005

Tipos de datos: double | single

Opciones de mini-batch LBFGS

contraer todo

Número máximo de iteraciones por paso mini-lote LBFGS, especificado como el par separado por comas que consta de un entero positivo.'MiniBatchLBFGSIterations'

Ejemplo: 'MiniBatchLBFGSIterations',15

Mini-batch LBFGS algorithm is a combination of SGD and LBFGS methods. Therefore, all of the name-value pair arguments that apply to SGD and LBFGS solvers also apply to the mini-batch LBFGS algorithm.

Tipos de datos: double | single

Argumentos de salida

contraer todo

Modelo de análisis de componentes de vecindad para regresión, devuelto como un objeto.FeatureSelectionNCARegression

Referencias

[1] Rasmussen, C. E., R. M. Neal, G. E. Hinton, D. van Campand, M. Revow, Z. Ghahramani, R. Kustra, R. Tibshirani. The DELVE Manual, 1996, http://mlg.eng.cam.ac.uk/pub/pdf/RasNeaHinetal96.pdf.

[2] University of Toronto, Computer Science Department. Delve Datasets. http://www.cs.toronto.edu/~delve/data/datasets.html.

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

[4] S. Waugh. "Extending and Benchmarking Cascade-Correlation", PhD Thesis. Computer Science Department, University of Tasmania, 1995.

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

Introducido en R2016b