Регрессионная потеря для модели регрессии ядра Гаусса
возвращает MSE для модели L = loss(Mdl,Tbl,ResponseVarName)Mdl использование данных предиктора в Tbl и истинные ответы в Tbl.ResponseVarName.
указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно указать функцию регрессионных потерь и веса наблюдений. Затем, L = loss(___,Name,Value)loss возвращает взвешенную регрессионную потерю с использованием указанной функции потерь.
Обучить модель регрессии ядра Гаусса для массива высокого уровня, затем вычислить среднеквадратичную ошибку и ошибку, не чувствительную к эпсилону.
При выполнении вычислений в массивах TALL MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс MATLAB. Для выполнения примера с использованием локального сеанса MATLAB при наличии панели инструментов Parallel Computing Toolbox измените глобальную среду выполнения с помощью mapreducer функция.
mapreducer(0)
Создайте хранилище данных, которое ссылается на расположение папки с данными. Данные могут содержаться в одном файле, коллекции файлов или во всей папке. Удовольствие 'NA' значения как отсутствующие данные, так что datastore заменяет их на NaN значения. Выберите подмножество переменных для использования. Создайте высокую таблицу поверх хранилища данных.
varnames = {'ArrTime','DepTime','ActualElapsedTime'};
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
'SelectedVariableNames',varnames);
t = tall(ds);Определить DepTime и ArrTime в качестве переменных предиктора (X) и ActualElapsedTime в качестве переменной ответа (Y). Выберите наблюдения, для которых ArrTime позднее, чем DepTime.
daytime = t.ArrTime>t.DepTime; Y = t.ActualElapsedTime(daytime); % Response data X = t{daytime,{'DepTime' 'ArrTime'}}; % Predictor data
Стандартизация переменных предиктора.
Z = zscore(X); % Standardize the dataОбучение модели регрессии гауссова ядра по умолчанию со стандартизированными предикторами. Набор 'Verbose',0 для подавления диагностических сообщений.
[Mdl,FitInfo] = fitrkernel(Z,Y,'Verbose',0)Mdl =
RegressionKernel
PredictorNames: {'x1' 'x2'}
ResponseName: 'Y'
Learner: 'svm'
NumExpansionDimensions: 64
KernelScale: 1
Lambda: 8.5385e-06
BoxConstraint: 1
Epsilon: 5.9303
Properties, Methods
FitInfo = struct with fields:
Solver: 'LBFGS-tall'
LossFunction: 'epsiloninsensitive'
Lambda: 8.5385e-06
BetaTolerance: 1.0000e-03
GradientTolerance: 1.0000e-05
ObjectiveValue: 30.7814
GradientMagnitude: 0.0191
RelativeChangeInBeta: 0.0228
FitTime: 42.6229
History: []
Mdl является обученным RegressionKernel модель и массив структуры FitInfo содержит сведения об оптимизации.
Определите, насколько хорошо обученная модель обобщается на новые предикторные значения, оценивая среднеквадратическую ошибку повторного замещения и эпсилон-нечувствительную ошибку.
lossMSE = loss(Mdl,Z,Y) % Resubstitution mean squared errorlossMSE =
MxNx... tall array
? ? ? ...
? ? ? ...
? ? ? ...
: : :
: : :
lossEI = loss(Mdl,Z,Y,'LossFun','epsiloninsensitive') % Resubstitution epsilon-insensitive error
lossEI =
MxNx... tall array
? ? ? ...
? ? ? ...
? ? ? ...
: : :
: : :
Оцените массивы tall и внесите результаты в память с помощью gather.
[lossMSE,lossEI] = gather(lossMSE,lossEI)
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.96 sec Evaluation completed in 1.2 sec
lossMSE = 2.8851e+03
lossEI = 28.0050
Укажите пользовательские потери регрессии (потери Huber) для модели регрессии ядра Гаусса.
Загрузить carbig набор данных.
load carbigУкажите переменные предиктора (X) и переменной ответа (Y).
X = [Weight,Cylinders,Horsepower,Model_Year]; Y = MPG;
Удалить строки X и Y где любой массив имеет NaN значения. Удаление строк с NaN значения перед передачей данных fitrkernel может ускорить обучение и сократить использование памяти.
R = rmmissing([X Y]); X = R(:,1:4); Y = R(:,end);
Зарезервировать 10% наблюдений как выборку с удержанием. Извлеките учебные и тестовые индексы из определения раздела.
rng(10) % For reproducibility N = length(Y); cvp = cvpartition(N,'Holdout',0.1); idxTrn = training(cvp); % Training set indices idxTest = test(cvp); % Test set indices
Стандартизация обучающих данных и обучение модели ядра регрессии.
Xtrain = X(idxTrn,:);
Ytrain = Y(idxTrn);
[Ztrain,tr_mu,tr_sigma] = zscore(Xtrain); % Standardize the training data
tr_sigma(tr_sigma==0) = 1;
Mdl = fitrkernel(Ztrain,Ytrain)Mdl =
RegressionKernel
ResponseName: 'Y'
Learner: 'svm'
NumExpansionDimensions: 128
KernelScale: 1
Lambda: 0.0028
BoxConstraint: 1
Epsilon: 0.8617
Properties, Methods
Mdl является RegressionKernel модель.
Создайте анонимную функцию, измеряющую потери Хубера 1), то есть
где
- остаток для наблюдения j. Пользовательские функции потери должны быть написаны в определенной форме. Правила записи пользовательской функции потери см. в разделе 'LossFun' аргумент пары имя-значение.
huberloss = @(Y,Yhat,W)sum(W.*((0.5*(abs(Y-Yhat)<=1).*(Y-Yhat).^2) + ...
((abs(Y-Yhat)>1).*abs(Y-Yhat)-0.5)))/sum(W);Оцените потери регрессии обучающего набора с помощью функции потерь Huber.
eTrain = loss(Mdl,Ztrain,Ytrain,'LossFun',huberloss)eTrain = 1.7210
Стандартизация данных теста с использованием одного и того же среднего и стандартного отклонения столбцов учебных данных. Оцените потери регрессии тестового набора с помощью функции потерь Huber.
Xtest = X(idxTest,:); Ztest = (Xtest-tr_mu)./tr_sigma; % Standardize the test data Ytest = Y(idxTest); eTest = loss(Mdl,Ztest,Ytest,'LossFun',huberloss)
eTest = 1.3062
Mdl - Регрессионная модель ядраRegressionKernel объект моделиРегрессионная модель ядра, заданная как RegressionKernel объект модели. Можно создать RegressionKernel объект модели с использованием fitrkernel.
X - Данные предиктораДанные предиктора, определенные как n-за-p числовая матрица, где n - количество наблюдений, а p - количество предикторов. p должно быть равно числу предикторов, используемых для обучения Mdl.
Типы данных: single | double
Tbl - Образцы данныхОбразец данных, используемых для обучения модели, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, Tbl может содержать дополнительные столбцы для переменной ответа и весов наблюдения. Tbl должен содержать все предикторы, используемые для обучения Mdl. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName или Y.
Если вы тренируетесь Mdl используя образцы данных, содержащиеся в таблице, затем входные данные для loss также должен находиться в таблице.
ResponseVarName - Имя переменной ответаTblИмя переменной ответа, указанное как имя переменной в Tbl. Переменная ответа должна быть числовым вектором. Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName.
При указании ResponseVarName, то необходимо указать его как вектор символа или скаляр строки. Например, если переменная ответа сохранена как Tbl.Y, затем укажите ResponseVarName как 'Y'. В противном случае программа обрабатывает все столбцы Tbl, в том числе Tbl.Y, как предикторы.
Типы данных: char | string
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
L = loss(Mdl,X,Y,'LossFun','epsiloninsensitive','Weights',weights) возвращает взвешенную регрессионную потерю с помощью функции эпсилон-нечувствительных потерь.'LossFun' - Функция потерь'mse' (по умолчанию) | 'epsiloninsensitive' | дескриптор функцииФункция потерь, заданная как разделенная запятыми пара, состоящая из 'LossFun' и встроенное имя функции потери или дескриптор функции.
В следующей таблице перечислены доступные функции потерь. Укажите его с помощью соответствующего вектора символа или скаляра строки. Также в таблице β + b.
x - наблюдение (вектор строки) из p переменных предиктора.
(·) - преобразование наблюдения (вектор строки) для расширения признаков. T (x) отображает x ℝp в высокомерное пространство ℝm).
β - вектор из m коэффициентов.
b - скалярное смещение.
| Стоимость | Описание |
|---|---|
'epsiloninsensitive' | Эпсилон-нечувствительные потери: f (x) | − |
'mse' | MSE: (x)] 2 |
'epsiloninsensitive' подходит только для учащихся SVM.
Укажите собственную функцию с помощью нотации дескриптора функции.
Давайте n быть числом наблюдений в X. Ваша функция должна иметь следующую подпись:
lossvalue = lossfun(Y,Yhat,W)Выходной аргумент lossvalue является скаляром.
Выберите имя функции (lossfun).
Y представляет собой n-мерный вектор наблюдаемых ответов. loss передает входной аргумент Y в для Y.
Yhat - n-мерный вектор предсказанных откликов, аналогичный выходному сигналу predict.
W является n-по-1 числовой вектор весов наблюдения.
Укажите свою функцию с помощью 'LossFun',@.lossfun
Типы данных: char | string | function_handle
'Weights' - Наблюдательные весаones(size(X,1),1) (по умолчанию) | числовой вектор | имя переменной в TblВеса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и числовой вектор или имя переменной в Tbl.
Если Weights является числовым вектором, то размер Weights должно быть равно количеству строк в X или Tbl.
Если Weights - имя переменной в Tbl, необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если веса сохранены как Tbl.W, затем укажите Weights как 'W'. В противном случае программа обрабатывает все столбцы Tbl, в том числе Tbl.W, как предикторы.
При вводе весов наблюдения loss вычисляет взвешенную регрессионную потерю, то есть взвешенную среднеквадратичную ошибку или эпсилон-нечувствительную функцию потерь.
loss нормализует Weights для суммирования в 1.
Типы данных: double | single | char | string
L - Регрессионная потеряСредневзвешенная квадратичная ошибка рассчитывается следующим образом:
2∑j=1nwj,
где:
n - число наблюдений.
xj - j-е наблюдение (строка данных предиктора).
yj - наблюдаемый ответ на xj.
f (xj) - прогноз ответа модели регрессии ядра ГауссаMdl в xj.
w - вектор весов наблюдения.
Каждый наблюдаемый вес в w равен ones(n,1)/n по умолчанию. Можно указать различные значения для весов наблюдения с помощью 'Weights' аргумент пары имя-значение. loss нормализует Weights для суммирования в 1.
Функция потери, не чувствительная к эпсилону, игнорирует ошибки, которые находятся в пределах расстояния эпсилона ( Функция формально описывается как:
в противном случае.
Средняя эпсилон-нечувствительная потеря рассчитывается следующим образом:
∑j=1nwj,
где:
n - число наблюдений.
xj - j-е наблюдение (строка данных предиктора).
yj - наблюдаемый ответ на xj.
f (xj) - прогноз ответа модели регрессии ядра ГауссаMdl в xj.
w - вектор весов наблюдения.
Каждый наблюдаемый вес в w равен ones(n,1)/n по умолчанию. Можно указать различные значения для весов наблюдения с помощью 'Weights' аргумент пары имя-значение. loss нормализует Weights для суммирования в 1.
Примечания и ограничения по использованию:
loss не поддерживает высокий table данные.
Дополнительные сведения см. в разделе Массивы Tall.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.