exponenta event banner

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. The axes contains an object of type line.

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

Загрузите образцы данных.

load robotarm.mat

robotarm (pumadyn32nm) создается с помощью имитатора руки робота с 7168 учебными наблюдениями и 1024 тестовыми наблюдениями с 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. The axes 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. The axes 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. The axes contains an object of type line.

Большинство весов признаков равны нулю. fsrnca определяет четыре наиболее релевантных элемента.

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

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

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

В этом примере используется [3][4] данных Abalone из репозитария машинного обучения 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     

В наборе данных 4177 наблюдений. Цель - предсказать возраст абалона из восьми физических измерений. Последняя переменная, число оболочечных колец, показывает возраст абалона. Первый предиктор - категориальная переменная. Последней переменной в таблице является переменная ответа.

Подготовить предиктор и переменные ответа для 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 не выбраны.

Подгонка модели регрессии гауссова процесса (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-на-1 действительных положительных скаляров, где p - количество предикторов в обучающих данных.

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

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

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

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

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

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

Типы данных: logical

Индикатор уровня детализации для отображения сводки сходимости, указанный как разделенная запятыми пара, состоящая из '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) = | yi − yj |.

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

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

  • 'epsiloninsensitive' - start-нечувствительная функция потерь

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

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

  • @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 (yi, yj) следующим образом:

f (w) =1n∑i=1n∑j=1,j≠inpijl (yi, yj) +λ∑r=1pwr2,

где w - вектор веса признака, n - число наблюдений, а p - число переменных предиктора. pij - это вероятность того, что xj является точкой отсчета для xi. Подробнее см. в разделе Выбор элемента NCA для регрессии.

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

Значение Epsilon для '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' - Слабый поиск линии Wolfe

  • 'strongwolfe' - Сильный поиск линии Wolfe

  • '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] Расмуссен, К. Э., Р. М. Нил, Г. Э. Хинтон, Д. ван Кампанд, М. Ревоу, З. Гахрамани, Р. Кюста, Р. Тибширани. Руководство DELVE, 1996, http://mlg.eng.cam.ac.uk/pub/pdf/RasNeaHinetal96.pdf.

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

[3] Нэш, У. Джей, Т. Л. Селлерс, С. Р. Толбот, А. Дж. Коуторн и У. Б. Форд. "Популяционная биология Абалоне (вид Haliotis) в Тасмании. И. Блэклип Абалоне (Х. рубра) с Северного побережья и островов Бассова пролива ". Отдел морского рыболовства, Технический доклад № 48, 1994 год.

[4] Во, С. «Расширение и сравнительный анализ каскадной корреляции: расширение каскадно-корреляционной архитектуры и сравнительный анализ искусственных нейронных сетей, находящихся под контролем Feed-Forward». Факультет компьютерных наук Тасманийского университета, 1995 год.

[5] Лихман, M. UCI Machine Learning Repository. Ирвин, Калифорния, Калифорнийский университет, Школа информации и компьютерных наук, 2013 год. http://archive.ics.uci.edu/ml.

Представлен в R2016b