Выбор элемента с использованием анализа компонента окрестности для регрессии
выполняет выбор элемента для регрессии с дополнительными опциями, заданными одним или несколькими аргументами пары имя-значение.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) создается с помощью имитатора руки робота с 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

Более половины весов признаков ненулевые. Вычислите потери с помощью тестового набора как меру производительности с помощью выбранных функций.
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] данных 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.
X - Значения предикторных переменныхЗначения предикторных переменных, определенные как матрица n-by-p, где n - количество наблюдений, а p - число предикторных переменных.
Типы данных: single | double
Y - Значения ответаЗначения ответа, заданные как числовой действительный вектор длиной 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' | 'average'Метод подгонки модели, указанный как разделенная запятыми пара, состоящая из 'FitMethod' и одно из следующих:
'exact' - Выполняет подгонку с использованием всех данных.
'none' - Без подгонки. Эта опция используется для оценки ошибки обобщения модели NCA с использованием начальных весов функций, предоставленных в вызове fsrnca.
'average' - Делит данные на разделы (подмножества), подгоняет каждый раздел с помощью exact и возвращает среднее значение весов элемента. Можно указать количество разделов с помощью NumPartitions аргумент пары имя-значение.
Пример: 'FitMethod','none'
'NumPartitions' - Количество разделовmax(2,min(10,n)) (по умолчанию) | целое число от 2 до nКоличество разделов для разделения данных для использования с 'FitMethod','average' опция, заданная как пара, разделенная запятыми, состоящая из 'NumPartitions' и целое число от 2 до n, где n - число наблюдений.
Пример: 'NumPartitions',15
Типы данных: double | single
'Lambda' - Параметр регуляризацииПараметр регуляризации для предотвращения переполнения, указанный как пара, разделенная запятыми, состоящая из 'Lambda' и неотрицательный скаляр.
По мере увеличения числа наблюдений n вероятность переоснащения также уменьшается и требуемая величина регуляризации. См. раздел Настройка параметра регуляризации в NCA для регрессии, чтобы узнать, как настроить параметр регуляризации.
Пример: 'Lambda',0.002
Типы данных: double | single
'LengthScale' - Ширина ядра1 (по умолчанию) | положительный вещественный скалярШирина ядра, указанная как разделенная запятыми пара, состоящая из 'LengthScale' и положительный действительный скаляр.
Значение шкалы длины 1 является разумным, когда все предикторы находятся в одной шкале. Если предикторы в X имеют очень разные величины, затем рассмотрите возможность стандартизации значений предиктора с помощью 'Standardize',true и настройка 'LengthScale',1.
Пример: 'LengthScale',1.5
Типы данных: double | single
'InitialFeatureWeights' - Начальные веса элементовones(p,1) (по умолчанию) | вектор p-by-1 действительных положительных скаляровНачальные веса элементов, указанные как разделенная запятыми пара, состоящая из 'InitialFeatureWeights' и вектор p-на-1 действительных положительных скаляров, где p - количество предикторов в обучающих данных.
Регуляризованная целевая функция для оптимизации весов признаков является неконвексной. В результате использование различных начальных весов признаков может дать разные результаты. Установка всех начальных весов элементов на 1 обычно работает хорошо, но в некоторых случаях случайная инициализация с использованием rand(p,1) может дать более качественные решения.
Типы данных: double | single
'Weights' - Наблюдательные весаВеса наблюдения, указанные как разделенная запятыми пара, состоящая из 'ObservationWeights' и вектор n-на-1 действительных положительных скаляров. Используйте веса наблюдений, чтобы указать более высокую важность некоторых наблюдений по сравнению с другими. Веса по умолчанию придают одинаковое значение всем наблюдениям.
Типы данных: double | single
'Standardize' - Индикатор для стандартизации данных предиктораfalse (по умолчанию) | trueИндикатор для стандартизации данных предиктора, указанный как пара, разделенная запятыми, состоящая из 'Standardize' и либо false или true. Дополнительные сведения см. в разделе Влияние стандартизации.
Пример: 'Standardize',true
Типы данных: logical
'Verbose' - Индикатор уровня детализацииИндикатор уровня детализации для отображения сводки сходимости, указанный как разделенная запятыми пара, состоящая из 'Verbose' и одно из следующих:
0 - Сводка сходимости отсутствует
1 - Сводка сходимости, включая норму значений градиента и целевой функции
> 1 - Дополнительная информация о сходимости в зависимости от алгоритма подгонки
При использовании 'minibatch-lbfgs' решатель и уровень детализации > 1, информация сходимости включает итерацию журнала из промежуточных мини-пакетов LBFGS.
Пример: 'Verbose',1
Типы данных: double | single
'Solver' - Тип решателя'lbfgs' | 'sgd' | 'minibatch-lbfgs'Тип решателя для оценки весов элементов, указанный как разделенная запятыми пара, состоящая из 'Solver' и одно из следующих:
'lbfgs' - Алгоритм Бройдена-Флетчера-Гольдфарба-Шанно (LBFGS) с ограниченной памятью
'sgd' - Алгоритм стохастического градиентного спуска (SGD)
'minibatch-lbfgs' - Стохастический градиентный спуск с алгоритмом LBFGS, применяемым к мини-партиям
По умолчанию: 'lbfgs' для n ≤ 1000 и 'sgd' для n > 1000.
Пример: 'solver','minibatch-lbfgs'
'LossFunction' - Функция потерь'mad' (по умолчанию) | 'mse' | 'epsiloninsensitive' | дескриптор функцииФункция потерь, заданная как разделенная запятыми пара, состоящая из 'LossFunction' и одно из следующих:
'mad' - Среднее абсолютное отклонение
− yj |.
'mse' - Среднеквадратичная ошибка
yj) 2.
'epsiloninsensitive' - start-нечувствительная функция потерь
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) следующим образом:
+λ∑r=1pwr2,
где w - вектор веса признака, n - число наблюдений, а p - число переменных предиктора. pij - это вероятность того, что xj является точкой отсчета для xi. Подробнее см. в разделе Выбор элемента NCA для регрессии.
Пример: 'LossFunction',@lossfun
'Epsilon' - Эпсилоновое значениеiqr(Y)/13.49 (по умолчанию) | неотрицательный вещественный скалярЗначение Epsilon для 'LossFunction','epsiloninsensitive' опция, заданная как пара, разделенная запятыми, состоящая из 'LossFunction' и неотрицательный действительный скаляр. Значением по умолчанию является оценка стандартного отклонения выборки с использованием межквартильного диапазона переменной отклика.
Пример: 'Epsilon',0.1
Типы данных: double | single
'CacheSize' - Размер памяти1000MB (по умолчанию) | целое числоРазмер памяти, в МБ, используемый для вычисления целевой функции и градиента, определяемый как разделенная запятыми пара, состоящая из 'CacheSize' и целое число.
Пример: 'CacheSize',1500MB
Типы данных: double | single
'HessianHistorySize' - Размер буфера истории для гессенского приближения15 (по умолчанию) | положительное целое числоРазмер буфера истории для гессенского приближения для 'lbfgs' решатель, указанный как пара, разделенная запятыми, состоящая из 'HessianHistorySize' и положительное целое число. В каждой итерации функция использует самую последнюю HessianHistorySize итерации для построения аппроксимации к обратному гессенскому.
Пример: 'HessianHistorySize',20
Типы данных: double | single
'InitialStepSize' - Начальный размер шага'auto' (по умолчанию) | положительный вещественный скалярНачальный размер шага для 'lbfgs' решатель, указанный как пара, разделенная запятыми, состоящая из 'InitialStepSize' и положительный действительный скаляр. По умолчанию функция автоматически определяет начальный размер шага.
Типы данных: double | single
'LineSearchMethod' - Метод поиска строк'weakwolfe' (по умолчанию) | 'strongwolfe' | 'backtracking'Метод поиска строк, указанный как разделенная запятыми пара, состоящая из 'LineSearchMethod' и одно из следующих:
'weakwolfe' - Слабый поиск линии Wolfe
'strongwolfe' - Сильный поиск линии Wolfe
'backtracking' - Поиск по обратной линии
Пример: 'LineSearchMethod','backtracking'
'MaxLineSearchIterations' - Максимальное число итераций поиска строк20 (по умолчанию) | положительное целое числоМаксимальное количество итераций поиска строк, указанное как пара, разделенная запятыми, состоящая из 'MaxLineSearchIterations' и положительное целое число.
Пример: 'MaxLineSearchIterations',25
Типы данных: double | single
'GradientTolerance' - Относительный допуск сходимости1e-6 (по умолчанию) | положительный вещественный скалярОтносительный допуск сходимости для градиентной нормы для решателя lbfgs, указанная как пара, разделенная запятыми, состоящая из 'GradientTolerance' и положительный действительный скаляр.
Пример: 'GradientTolerance',0.000002
Типы данных: double | single
'InitialLearningRate' - Коэффициент начального обучения для 'sgd' решающее устройство'auto' (по умолчанию) | положительный вещественный скалярНачальный уровень обучения для 'sgd' решатель, указанный как пара, разделенная запятыми, состоящая из 'InitialLearningRate' и положительный действительный скаляр.
При использовании типа решателя 'sgd'скорость обучения замедляется по итерациям, начиная со значения, указанного для 'InitialLearningRate'.
Дефолт 'auto' означает, что начальная скорость обучения определяется с помощью экспериментов над небольшими подмножествами данных. Используйте NumTuningIterations аргумент пары имя-значение для указания количества итераций для автоматической настройки начальной скорости обучения. Используйте TuningSubsetSize аргумент пары «имя-значение» для указания количества наблюдений, используемых для автоматической настройки начальной скорости обучения.
Для типа решателя 'minibatch-lbfgs', можно установить 'InitialLearningRate' к очень высокому значению. В этом случае функция применяет LBFGS к каждой мини-партии отдельно с начальными весами признаков из предыдущей мини-партии.
Чтобы убедиться, что выбранная начальная скорость обучения уменьшает целевое значение с каждой итерацией, постройте график Iteration по сравнению с Objective значения, сохраненные в mdl.FitInfo собственность.
Вы можете использовать refit метод с 'InitialFeatureWeights' равно mdl.FeatureWeights для запуска из текущего решения и выполнения дополнительных итераций
Пример: 'InitialLearningRate',0.9
Типы данных: double | single
'MiniBatchSize' - Количество наблюдений, используемых в каждой партии для 'sgd' решающее устройствоКоличество наблюдений, используемых в каждой партии для 'sgd' решатель, указанный как пара, разделенная запятыми, состоящая из 'MiniBatchSize' и положительное целое число от 1 до n.
Пример: 'MiniBatchSize',25
Типы данных: double | single
'PassLimit' - Максимальное количество проходов для решателя 'sgd'5 (по умолчанию) | положительное целое число Максимальное количество проходов через все n наблюдений для решателя 'sgd', указанная как пара, разделенная запятыми, состоящая из 'PassLimit' и положительное целое число. Каждый проход через все данные называется эпохой.
Пример: 'PassLimit',10
Типы данных: double | single
'NumPrint' - Частота пакетов для отображения сводки сходимостиЧастота пакетов для отображения сводки сходимости для 'sgd' решатель, указанный как пара, разделенная запятыми, состоящая из 'NumPrint' и положительное целое число. Этот аргумент применяется, когда 'Verbose' значение больше 0. NumPrint мини-пакеты обрабатываются для каждой строки сводки сходимости, которая отображается в командной строке.
Пример: 'NumPrint',5
Типы данных: double | single
'NumTuningIterations' - количество итераций настройки;Количество итераций настройки для 'sgd' решатель, указанный как пара, разделенная запятыми, состоящая из 'NumTuningIterations' и положительное целое число. Этот параметр действителен только для 'InitialLearningRate','auto'.
Пример: 'NumTuningIterations',15
Типы данных: double | single
'TuningSubsetSize' - Количество наблюдений, используемых для настройки начальной успеваемостиКоличество наблюдений, используемых для настройки начальной скорости обучения, указанной как разделенная запятыми пара, состоящая из 'TuningSubsetSize' и положительное целое значение от 1 до n. Этот параметр допустим только для 'InitialLearningRate','auto'.
Пример: 'TuningSubsetSize',25
Типы данных: double | single
'IterationLimit' - Максимальное число итерацийМаксимальное количество итераций, указанное как пара, разделенная запятыми, состоящая из 'IterationLimit' и положительное целое число. Значение по умолчанию - 10000 для SGD и 1000 для LBFGS и мини-партии LBFGS.
Каждый проход через партию является итерацией. Каждый проход через все данные является эпохой. Если данные разделены на k мини-пакетов, то каждая эпоха эквивалентна k итерациям.
Пример: 'IterationLimit',250
Типы данных: double | single
'StepTolerance' - Допуск сходимости для размера шагаДопуск сходимости для размера шага, указанный как пара, разделенная запятыми, состоящая из 'StepTolerance' и положительный действительный скаляр. 'lbfgs' решатель использует абсолютный допуск шага, и 'sgd' решатель использует относительный допуск шага.
Пример: 'StepTolerance',0.000005
Типы данных: double | single
'MiniBatchLBFGSIterations' - Максимальное количество итераций на шаг LBFGS мини-партииМаксимальное количество итераций на шаг LBFGS мини-партии, указанное как пара, разделенная запятыми, состоящая из 'MiniBatchLBFGSIterations' и положительное целое число.
Пример: 'MiniBatchLBFGSIterations',15
Мини-пакетный алгоритм LBFGS представляет собой комбинацию методов SGD и LBFGS. Поэтому все аргументы пары имя-значение, которые применяются к решателям SGD и LBFGS, также применяются к алгоритму LBFGS мини-партии.
Типы данных: double | single
mdl - модель анализа компонентов окрестности для регрессии;FeatureSelectionNCARegression объектМодель анализа компонентов окрестности для регрессии, возвращенная как 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.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.