Выбор признаков с помощью анализа компонента окружения в регрессии
выполняет выбор признаков для регрессии с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".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) bestlambda = lambdavals(idx) bestloss = meanloss(idx)
idx = 17 bestlambda = 0.0059 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: {1×8 cell} ResponseName: 'NoShellRings' CategoricalPredictors: 1 ResponseTransform: 'none' NumObservations: 4177 KernelFunction: 'ARDSquaredExponential' KernelInformation: [1×1 struct] BasisFunction: 'Constant' Beta: 11.4959 Sigma: 2.0282 PredictorLocation: [10×1 double] PredictorScale: [10×1 double] Alpha: [1000×1 double] ActiveSetVectors: [1000×10 double] PredictMethod: 'FIC' ActiveSetSize: 1000 FitMethod: 'SR' ActiveSetMethod: 'Random' IsActiveSetVector: [4177×1 logical] LogLikelihood: -9.0019e+03 ActiveSetHistory: [1×1 struct] BCDInformation: []
Вычислите потерю регрессии на обучающих данных (потеря перезамены) для обученной модели.
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'
— Ширина ядра
(значение по умолчанию) | положительный действительный скалярШирина ядра, заданного как разделенная запятой пара, состоящая из 'LengthScale'
и положительный действительный скаляр.
Значение шкалы расстояний 1 разумно, когда все предикторы находятся по той же шкале. Если предикторы в X
имеют совсем другие величины, затем рассматривают стандартизацию значений предиктора с помощью 'Standardize',true
и установка 'LengthScale',1
.
Пример: 'LengthScale',1.5
Типы данных: double |
single
'InitialFeatureWeights'
— Начальные веса функцииones(p,1)
(значение по умолчанию) | p-by-1 вектор действительных положительных скалярных величинНачальные веса функции, заданные как разделенная запятой пара, состоящая из 'InitialFeatureWeights'
и p-by-1 вектор действительных положительных скалярных величин, где p является количеством предикторов в обучающих данных.
Упорядоченная целевая функция для оптимизации весов функции невыпукла. В результате использование различных начальных весов функции может дать различные результаты. Установка всех начальных весов функции к 1 обычно работает хорошо, но в некоторых случаях, случайная инициализация с помощью rand(p,1)
может дать лучшие качественные решения.
Типы данных: double |
single
'Weights'
— Веса наблюденияВеса наблюдения, заданные как разделенная запятой пара, состоящая из 'ObservationWeights'
и n-by-1 вектор действительных положительных скалярных величин. Используйте веса наблюдения, чтобы задать более высокую важность некоторых наблюдений по сравнению с другими. Веса по умолчанию присваивают равную важность для всех наблюдений.
Типы данных: double |
single
'Standardize'
— Индикатор для стандартизации данных о предиктореfalse
(значение по умолчанию) | true
Индикатор для стандартизации данных о предикторе, заданных как разделенная запятой пара, состоящая из 'Standardize'
и любой false
или true
. Для получения дополнительной информации смотрите Удар Стандартизации.
Пример: 'Standardize',true
Типы данных: логический
'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'
— Следует иметь в виду абсолютное отклонение
'mse'
— Среднеквадратическая ошибка
'epsiloninsensitive'
— Функция потерь ε-insensitive
Эта функция потерь более устойчива к выбросам, чем среднеквадратическая ошибка, или имейте в виду абсолютное отклонение.
@
— Пользовательский указатель функции потерь. Функция потерь имеет эту форму.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) можно следующим образом:
где w является вектором веса функции, n является количеством наблюдений, и p является количеством переменных предикторов. ij p является вероятностью, что x j является контрольной точкой для x i. Для получения дополнительной информации см. Выбор признаков NCA для Регрессии.
Пример: 'LossFunction',@lossfun
'Epsilon'
— Значение эпсилонаiqr(Y)/13.49
(значение по умолчанию) | неотрицательный действительный скалярЗначение эпсилона для 'LossFunction','epsiloninsensitive'
опция, заданная как разделенная запятой пара, состоящая из 'LossFunction'
и неотрицательный действительный скаляр. Значением по умолчанию является оценка демонстрационного стандартного отклонения с помощью межквартильного размаха переменной отклика.
Пример: 'Epsilon',0.1
Типы данных: double |
single
'CacheSize'
— Емкость памяти1000MB
(значение по умолчанию) | целое числоЕмкость памяти, в Мбайте, чтобы использовать в целевой функции и расчете градиента, заданном как разделенная запятой пара, состоящая из 'CacheSize'
и целое число.
Пример: 'CacheSize',1500MB
Типы данных: double |
single
'HessianHistorySize'
— Размер буфера истории для приближения Гессиана
(значение по умолчанию) | положительное целое числоРазмер буфера истории для приближения Гессиана для 'lbfgs'
решатель, заданный как разделенная запятой пара, состоящая из 'HessianHistorySize'
и положительное целое число. В каждой итерации функция использует новый HessianHistorySize
итерации, чтобы создать приближение к обратному Гессиану.
Пример: 'HessianHistorySize',20
Типы данных: double |
single
'InitialStepSize'
— Начальный размер шага'auto'
(значение по умолчанию) | положительный действительный скалярНачальный размер шага для 'lbfgs'
решатель, заданный как разделенная запятой пара, состоящая из 'InitialStepSize'
и положительный действительный скаляр. По умолчанию функция определяет начальный размер шага автоматически.
Типы данных: double |
single
'LineSearchMethod'
— Метод поиска линии'weakwolfe'
(значение по умолчанию) | 'strongwolfe'
| 'backtracking'
Метод поиска линии, заданный как разделенная запятой пара, состоящая из 'LineSearchMethod'
и одно из следующего:
'weakwolfe'
— Слабый поиск линии Вольфа
'strongwolfe'
— Сильный поиск линии Вольфа
'backtracking'
— Отслеживание в обратном порядке поиска линии
Пример: 'LineSearchMethod','backtracking'
'MaxLineSearchIterations'
— Максимальное количество линии ищет итерации
(значение по умолчанию) | положительное целое числоМаксимальное количество линии ищет итерации, заданные как разделенная запятой пара, состоящая из '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'
(значение по умолчанию) | положительное целое число Максимальное количество проходит через все наблюдения 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] Расмуссен, 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.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.