fsrnca

Выбор признаков с помощью анализа компонента окружения для регрессии

Описание

пример

mdl = fsrnca(X,Y) выполняет выбор признаков для регрессии с помощью предикторов в X и ответы в Y.

fsrnca изучает веса функции диагональной адаптацией анализа компонента окружения (NCA) с регуляризацией.

пример

mdl = fsrnca(X,Y,Name,Value) выполняет выбор признаков для регрессии с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".

Примеры

свернуть все

Сгенерируйте игрушечные данные, где переменная отклика зависит от 3-х, 9-х, и 15-х предикторов.

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

Подбирайте аналитическую модель компонента окружения для регрессии.

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.

Постройте выбранные функции. Веса несоответствующих функций должны быть близко к нулю.

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

Figure contains an axes object. The axes object contains an object of type line.

fsrnca правильно обнаруживает соответствующие предикторы для этого ответа.

Загрузите выборочные данные.

load robotarm.mat

robotarm (pumadyn32nm) набор данных создается с помощью средства моделирования манипулятора с 7 168 учебными наблюдениями и 1 024 тестовыми наблюдениями с 32 функциями [1] [2]. Это - предварительно обработанная версия исходного набора данных. Данные предварительно обрабатываются путем вычитания от подгонки линейной регрессии, сопровождаемой нормализацией всех функций к модульному отклонению.

Выполните выбор признаков анализа компонента окружения (NCA) для регрессии со значением по умолчанию λ (параметр регуляризации) значение.

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

Постройте выбранные значения.

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

Figure contains an axes object. The axes object contains an object of type line.

Больше чем половина весов функции является ненулевой. Вычислите потерю с помощью набора тестов в качестве меры эффективности при помощи выбранных функций.

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

Попытайтесь улучшать производительность. Настройте параметр регуляризации λ для выбора признаков с помощью пятикратной перекрестной проверки. Настройка λ средние значения, находящие λ значение, которое производит минимальную потерю регрессии. Настроиться λ использование перекрестной проверки:

1. Разделите данные в пять сгибов. Для каждого сгиба, cvpartition присвоения, 4/5-е из данных как набор обучающих данных и 1/5-е из данных как набор тестов.

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

Присвойте λ значения для поиска. Умножение значений отклика константой увеличения термин функции потерь на коэффициент константы. Поэтому включая std(ytrain) включите λ значения балансируют функцию потерь по умолчанию ('mad', означайте абсолютное отклонение), термин и термин регуляризации в целевой функции. В этом примере, std(ytrain) фактором является тот, потому что загруженные выборочные данные являются предварительно обработанной версией исходного набора данных.

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

Создайте массив, чтобы сохранить значения потерь.

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

2. Обучите модель NCA каждому λ значение, с помощью набора обучающих данных в каждом сгибе.

3. Вычислите потерю регрессии для соответствующего набора тестов в сгибе с помощью модели NCA. Запишите значение потерь.

4. Повторите это для каждого λ значение и каждый сгиб.

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

Вычислите среднюю потерю, полученную из сгибов для каждого λ значение.

meanloss = mean(lossvals,2);

Постройте среднюю потерю по сравнению с λ значения.

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

Figure contains an axes object. The axes object contains an object of type line.

Найдите λ значение, которое дает значение с минимальными потерями.

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

Подбирайте модель выбора признаков NCA для регрессии с помощью лучшего λ значение.

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

Постройте выбранные функции.

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

Figure contains an axes object. The axes object contains an object of type line.

Большинство весов функции является нулем. fsrnca идентифицирует четыре самых соответствующих функции.

Вычислите потерю для набора тестов.

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

Настройка параметра регуляризации, λ, устраненный больше несоответствующих функций и улучшал производительность.

Этот пример использует данные о Морском ушке [3][4] от Репозитория Машинного обучения UCI [5].

Загрузите данные и сохраните их в вашей текущей папке с именем 'abalone.csv'.

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data';
websave('abalone.csv',url);

Считайте данные в таблицу. Отобразите первые семь строк.

tbl = readtable('abalone.csv','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     

Набор данных имеет 4 177 наблюдений. Цель состоит в том, чтобы предсказать возраст морского ушка от восьми физических измерений. Последняя переменная, количество звонков интерпретатора, показывает возраст морского ушка. Первый предиктор является категориальной переменной. Последняя переменная в таблице является переменной отклика.

Подготовьте переменные прогноза и переменные отклика к fsrnca. Последний столбец tbl содержит количество звонков интерпретатора, которое является переменной отклика. Первый переменный предиктор, пол, является категориальным. Необходимо создать фиктивные переменные.

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

Используйте четырехкратную перекрестную проверку, чтобы настроить параметр регуляризации в модели NCA. Первый раздел данные в четыре сгиба.

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

cvpartition делит данные на четыре раздела (сгибы). В каждом сгибе, о трех четвертях данных присвоен как набор обучающих данных, и одна четверть присвоена как набор тестов.

Сгенерируйте разнообразие λ (параметр регуляризации) значения для того, чтобы подбирать модель, чтобы определить лучшее λ значение. Создайте вектор, чтобы собрать значения потерь из каждой подгонки.

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

Строки lossvals соответствует λ значения и столбцы соответствуют сгибам.

Подбирайте модель NCA для регрессии с помощью fsrnca к данным из каждого сгиба с помощью каждого λ значение. Вычислите потерю для каждой модели с помощью тестовых данных от каждого сгиба.

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

Вычислите среднюю потерю для сгибов, то есть, вычислите среднее значение во втором измерении lossvals.

meanloss = mean(lossvals,2);

Постройте λ значения по сравнению со средней потерей от четырех сгибов.

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

Найдите λ значение, которое минимизирует среднюю потерю.

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

Вычислите лучшее значение потерь.

bestloss = meanloss(idx)
bestloss = 4.7799

Подбирайте модель NCA на всех данных с помощью лучшего λ значение.

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.

Постройте выбранные функции.

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

Несоответствующие функции имеют нулевые веса. Согласно этому рисунку, не выбраны функции 1, 3, и 9.

Подбирайте модель Gaussian process regression (GPR) с помощью подмножества метода регрессоров для оценки параметра и полностью независимого условного метода для предсказания. Используйте экспоненциальную функцию ядра ARD в квадрате, которая присваивает отдельный вес каждому предиктору. Стандартизируйте предикторы.

gprMdl = fitrgp(tbl,'NoShellRings','KernelFunction','ardsquaredexponential', ...
      'FitMethod','sr','PredictMethod','fic','Standardize',true)
gprMdl = 
  RegressionGP
           PredictorNames: {'Sex'  'Length'  'Diameter'  'Height'  'WWeight'  'SWeight'  'VWeight'  'ShWeight'}
             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: []


  Properties, Methods

Вычислите потерю регрессии на обучающих данных (потеря перезамены) для обученной модели.

L = resubLoss(gprMdl)
L = 4.0306

Самая маленькая перекрестная подтвержденная потеря с помощью fsrnca сопоставимо с потерей, полученной с помощью модели GPR с ядром ARD.

Входные параметры

свернуть все

Значения переменного предиктора в виде n-by-p матрица, где n является количеством наблюдений и p, являются количеством переменных предикторов.

Типы данных: single | double

Значения отклика в виде числового вектора действительных чисел длины n, где n является количеством наблюдений.

Типы данных: single | double

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Solver','sgd','Weights',W,'Lambda',0.0003 задает решатель как стохастический градиентный спуск, веса наблюдения как значения в векторном W, и устанавливает параметр регуляризации в 0,0003.
Подбор кривой опциям

свернуть все

Метод для того, чтобы подбирать модель в виде разделенной запятой пары, состоящей из 'FitMethod' и одно из следующего:

  • 'exact' — Выполняет подбор кривой с помощью всех данных.

  • 'none' — Никакой подбор кривой. Используйте эту опцию, чтобы оценить ошибку обобщения модели NCA с помощью начальных весов функции, предоставленных в вызове fsrnca.

  • 'average' — Делит данные на разделы (подмножества), соответствует каждому разделу с помощью exact метод, и возвращает среднее значение весов функции. Можно задать количество разделов с помощью NumPartitions аргумент пары "имя-значение".

Пример: 'FitMethod','none'

Количество разделов, чтобы разделить данные для использования с 'FitMethod','average' опция в виде разделенной запятой пары, состоящей из 'NumPartitions' и целочисленное значение между 2 и n, где n является количеством наблюдений.

Пример: 'NumPartitions',15

Типы данных: double | single

Параметр регуляризации, чтобы предотвратить сверхподбор кривой в виде разделенной запятой пары, состоящей из 'Lambda' и неотрицательный скаляр.

Как количество наблюдений увеличения n, также уменьшается шанс сверхподбора кривой уменьшениям и необходимому количеству регуляризации. Смотрите Параметр Регуляризации Мелодии в NCA для Регрессии, чтобы изучить, как настроить параметр регуляризации.

Пример: 'Lambda',0.002

Типы данных: double | single

Ширина ядра в виде разделенной запятой пары, состоящей из 'LengthScale' и положительный действительный скаляр.

Значение шкалы расстояний 1 разумно, когда все предикторы находятся по той же шкале. Если предикторы в X имеют совсем другие величины, затем рассматривают стандартизацию значений предиктора с помощью 'Standardize',true и установка 'LengthScale',1.

Пример: 'LengthScale',1.5

Типы данных: double | single

Начальные веса функции в виде разделенной запятой пары, состоящей из 'InitialFeatureWeights' и p-by-1 вектор из действительных положительных скалярных величин, где p является количеством предикторов в обучающих данных.

Упорядоченная целевая функция для оптимизации весов функции невыпукла. В результате использование различных начальных весов функции может дать различные результаты. Установка всех начальных весов функции к 1 обычно работает хорошо, но в некоторых случаях, случайная инициализация с помощью rand(p,1) может дать лучшие качественные решения.

Типы данных: double | single

Веса наблюдения в виде разделенной запятой пары, состоящей из 'ObservationWeights' и n-by-1 вектор из действительных положительных скалярных величин. Используйте веса наблюдения, чтобы задать более высокую важность некоторых наблюдений по сравнению с другими. Веса по умолчанию присваивают равную важность для всех наблюдений.

Типы данных: double | single

Индикатор для стандартизации данных о предикторе в виде разделенной запятой пары, состоящей из 'Standardize' и любой false или true. Для получения дополнительной информации смотрите Удар Стандартизации.

Пример: 'Standardize',true

Типы данных: логический

Индикатор уровня многословия для отображения сводных данных сходимости в виде разделенной запятой пары, состоящей из 'Verbose' и одно из следующего:

  • 0 — Никакие сводные данные сходимости

  • 1 — сводные данные Сходимости, включая норму градиента и значений целевой функции

  • > 1 — Больше информации о сходимости, в зависимости от алгоритма подбора

    При использовании 'minibatch-lbfgs' решатель и уровень многословия> 1, информация о сходимости включает итерацию журнал от промежуточных мини-пакетных подгонок LBFGS.

Пример: 'Verbose',1

Типы данных: double | single

Тип решателя для оценки весов функции в виде разделенной запятой пары, состоящей из 'Solver' и одно из следующего:

  • 'lbfgs' — Ограниченная память Бройден Флетчер Голдфарб Шэнно (LBFGS) алгоритм

  • 'sgd' — Алгоритм стохастического градиентного спуска (SGD)

  • 'minibatch-lbfgs' — Стохастический градиентный спуск с алгоритмом LBFGS применился к мини-пакетам

Значением по умолчанию является 'lbfgs' для n ≤ 1000, и 'sgd' для n> 1000.

Пример: 'solver','minibatch-lbfgs'

Функция потерь в виде разделенной запятой пары, состоящей из 'LossFunction' и одно из следующего:

  • 'mad' — Означайте абсолютное отклонение

    l(yi,yj)=|yiyj|.

  • 'mse' — Среднеквадратическая ошибка

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

  • 'epsiloninsensitive' — Функция потерь ε-insensitive

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

    Эта функция потерь более устойчива к выбросам, чем среднеквадратическая ошибка, или означайте абсолютное отклонение.

  • @lossfun — Пользовательский указатель функции потерь. Функция потерь имеет эту форму.

    function L = lossfun(Yu,Yv)
    % calculation of loss
    ...
    Yu u-by-1 вектор и Yv v-by-1 вектор. L u-by-v, матрица потери оценивает таким образом что L(i,j) значение потерь для Yu(i) и Yv(j).

Целевая функция для минимизации включает функцию потерь l (y i, y j) можно следующим образом:

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

где w является вектором веса функции, n является количеством наблюдений, и p является количеством переменных предикторов. ij p является вероятностью, что x j является контрольной точкой для x i. Для получения дополнительной информации см. Выбор признаков NCA для Регрессии.

Пример: 'LossFunction',@lossfun

Значение эпсилона для 'LossFunction','epsiloninsensitive' опция в виде разделенной запятой пары, состоящей из 'LossFunction' и неотрицательный действительный скаляр. Значением по умолчанию является оценка демонстрационного стандартного отклонения с помощью межквартильного размаха переменной отклика.

Пример: 'Epsilon',0.1

Типы данных: double | single

Емкость памяти, в Мбайте, чтобы использовать для целевой функции и расчета градиента в виде разделенной запятой пары, состоящей из 'CacheSize' и целое число.

Пример: 'CacheSize',1500MB

Типы данных: double | single

Опции LBFGS

свернуть все

Размер буфера истории для приближения Гессиана для 'lbfgs' решатель в виде разделенной запятой пары, состоящей из 'HessianHistorySize' и положительное целое число. В каждой итерации функция использует новый HessianHistorySize итерации, чтобы создать приближение к обратному Гессиану.

Пример: 'HessianHistorySize',20

Типы данных: double | single

Начальный размер шага для 'lbfgs' решатель в виде разделенной запятой пары, состоящей из 'InitialStepSize' и положительный действительный скаляр. По умолчанию функция определяет начальный размер шага автоматически.

Типы данных: double | single

Метод поиска линии в виде разделенной запятой пары, состоящей из 'LineSearchMethod' и одно из следующего:

  • 'weakwolfe' — Слабый поиск линии Вольфа

  • 'strongwolfe' — Сильный поиск линии Вольфа

  • 'backtracking' — Отслеживание в обратном порядке поиска линии

Пример: 'LineSearchMethod','backtracking'

Максимальное количество линии ищет итерации в виде разделенной запятой пары, состоящей из 'MaxLineSearchIterations' и положительное целое число.

Пример: 'MaxLineSearchIterations',25

Типы данных: double | single

Относительный допуск сходимости на норме градиента для решателя lbfgsВ виде разделенной запятой пары, состоящей из 'GradientTolerance' и положительный действительный скаляр.

Пример: 'GradientTolerance',0.000002

Типы данных: double | single

Опции SGD

свернуть все

Начальная скорость обучения для 'sgd' решатель в виде разделенной запятой пары, состоящей из 'InitialLearningRate' и положительный действительный скаляр.

При использовании решателя вводят 'sgd', скорость обучения затухает по итерациям начиная со значения, заданного для 'InitialLearningRate'.

'auto' по умолчанию средние значения, что начальная скорость обучения определяется с помощью экспериментов на небольших подмножествах данных. Используйте NumTuningIterations аргумент пары "имя-значение", чтобы задать количество итераций для того, чтобы автоматически настроить начальную скорость обучения. Используйте TuningSubsetSize аргумент пары "имя-значение", чтобы задать количество наблюдений, чтобы использовать для того, чтобы автоматически настроить начальную скорость обучения.

Поскольку решатель вводит 'minibatch-lbfgs', можно установить 'InitialLearningRate' к очень высокому значению. В этом случае функция применяет LBFGS к каждому мини-пакету отдельно с начальными весами функции от предыдущего мини-пакета.

Чтобы убедиться выбранная начальная скорость обучения уменьшает объективное значение с каждой итерацией, постройте Iteration по сравнению с Objective значения, сохраненные в mdl.FitInfo свойство.

Можно использовать refit метод с 'InitialFeatureWeights' равняйтесь mdl.FeatureWeights начинать с текущего решения и запускать дополнительные итерации

Пример: 'InitialLearningRate',0.9

Типы данных: double | single

Количество наблюдений, чтобы использовать в каждом пакете для 'sgd' решатель в виде разделенной запятой пары, состоящей из 'MiniBatchSize' и положительное целое число от 1 до n.

Пример: 'MiniBatchSize',25

Типы данных: double | single

Максимальное количество проходит через все наблюдения n для решателя 'sgd'В виде разделенной запятой пары, состоящей из 'PassLimit' и положительное целое число. Каждый проходит через все данные, называется эпохой.

Пример: 'PassLimit',10

Типы данных: double | single

Частота пакетов для отображения сводных данных сходимости для 'sgd' решатель в виде разделенной запятой пары, состоящей из 'NumPrint' и положительное целое число. Этот аргумент применяется когда 'Verbose' значение больше 0. NumPrint мини-пакеты обрабатываются для каждой линии сводных данных сходимости, которые отображены на командной строке.

Пример: 'NumPrint',5

Типы данных: double | single

Количество настраивающихся итераций для 'sgd' решатель в виде разделенной запятой пары, состоящей из 'NumTuningIterations' и положительное целое число. Эта опция допустима только для 'InitialLearningRate','auto'.

Пример: 'NumTuningIterations',15

Типы данных: double | single

Количество наблюдений, чтобы использовать для настройки начальной скорости обучения в виде разделенной запятой пары, состоящей из 'TuningSubsetSize' и положительное целочисленное значение от 1 до n. Эта опция допустима только для 'InitialLearningRate','auto'.

Пример: 'TuningSubsetSize',25

Типы данных: double | single

SGD или опции LBFGS

свернуть все

Максимальное количество итераций в виде разделенной запятой пары, состоящей из 'IterationLimit' и положительное целое число. Значение по умолчанию 10000 для SGD и 1000 для LBFGS и мини-пакетного LBFGS.

Каждый проходит через пакет, итерация. Каждый проходит через все данные, эпоха. Если данные разделены на мини-пакеты k, то каждая эпоха эквивалентна итерациям k.

Пример: 'IterationLimit',250

Типы данных: double | single

Допуск сходимости на размере шага в виде разделенной запятой пары, состоящей из 'StepTolerance' и положительный действительный скаляр. 'lbfgs' решатель использует абсолютный допуск шага и 'sgd' решатель использует относительный допуск шага.

Пример: 'StepTolerance',0.000005

Типы данных: double | single

Мини-обработайте опции LBFGS в пакетном режиме

свернуть все

Максимальное количество итераций на мини-пакетный LBFGS продвигается в виде разделенной запятой пары, состоящей из 'MiniBatchLBFGSIterations' и положительное целое число.

Пример: 'MiniBatchLBFGSIterations',15

Мини-пакетный алгоритм LBFGS является комбинацией SGD и методов LBFGS. Поэтому все аргументы пары "имя-значение", которые применяются к SGD и решателям LBFGS также, применяются к мини-пакетному алгоритму LBFGS.

Типы данных: double | single

Выходные аргументы

свернуть все

Аналитическая модель компонента окружения для регрессии, возвращенной как FeatureSelectionNCARegression объект.

Ссылки

[1] Расмуссен, C. E. Р. М. Нил, Г. Э. Хинтон, Д. ван Кэмп, M. Повторно поклянитесь, З. Гэхрэмани, Р. Кастра и Р. Тибширэни. Руководство DELVE, 1996, http://mlg.eng.cam.ac.uk/pub/pdf/RasNeaHinetal96.pdf.

[2] Университет Торонто, Кафедра информатики. Пашите Наборы данных. http://www.cs.toronto.edu / ~ delve/data/datasets.html.

[3] Нэш, W.J., Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. "Биология Населения Морского ушка (разновидности Haliotis) на Тасмании. I. Морское ушко Blacklip (H. rubra) от Северного Побережья и Островов Пролива Басса". Морское Деление Рыболовства, Технический отчет № 48, 1994.

[4] Во, S. "Расширяя и Тестируя Каскадной Корреляции в сравнении с эталоном: Расширения Архитектуры Каскадной Корреляции и Сравнительное тестирование Feedforward Контролируемые Искусственные Нейронные сети". Университет тезиса Факультета информатики Тасмании, 1995.

[5] Личмен, M. Репозиторий Машинного обучения UCI. Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники, 2013. http://archive.ics.uci.edu/ml.

Введенный в R2017b