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

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

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

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

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

[~,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

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

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

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

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

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

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

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     

Набор данных имеет 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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] Уорик J. N. Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. "Биология Населения Морского ушка (разновидности Haliotis) на Тасмании. I. Морское ушко Blacklip (H. rubra) от Северного Побережья и Островов Пролива Басса". Морское Деление Рыболовства, Технический отчет № 48 (ISSN 1034-3288), 1994.

[4] С. Во. "Расширяя и тестируя Каскадной Корреляции в сравнении с эталоном", диссертация. Кафедра информатики, университет Тасмании, 1995.

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

Введенный в R2017b