Регрессионные потери для обобщенной аддитивной модели (GAM)
возвращает регрессионные потери (L = loss(Mdl,Tbl,ResponseVarName)L), скаляр, представляющий как хорошо обобщенная аддитивная модель Mdl предсказывает данные предиктора в Tbl по сравнению с истинными значениями отклика в Tbl.ResponseVarName.
Толкование L зависит от функции потерь ('LossFun') и схемы взвешивания ('Weights'). В целом лучшие модели дают меньшие значения потерь. Значение по умолчанию 'LossFun' значение 'mse' (средняя квадратичная невязка).
задает опции, использующие один или несколько аргументов имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно задать функцию потерь и веса наблюдений.L = loss(___,Name,Value)
Определите регрессионные потери тестовой выборки (средняя квадратичная невязка) обобщенной аддитивной модели. Когда вы сравниваете один и тот же тип потерь среди многих моделей, более низкая потеря указывает на лучшую прогнозирующую модель.
Загрузите patients набор данных.
load patientsСоздайте таблицу, которая содержит переменные предиктора (Age, Diastolic, Smoker, Weight, Gender, SelfAssessedHealthStatus) и переменной отклика (Systolic).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор. Укажите 10% -ная выборка удержания для проверки.
rng('default') % For reproducibility cv = cvpartition(size(tbl,1),'HoldOut',0.10);
Извлеките индексы обучения и тестирования.
trainInds = training(cv); testInds = test(cv);
Обучите одномерную GAM, которая содержит линейные условия для предикторов в tbl.
Mdl = fitrgam(tbl(trainInds,:),"Systolic");Определите, насколько хорошо алгоритм обобщается, оценив регрессионые потери тестовой выборки. По умолчанию в loss функция RegressionGAM оценивает среднюю квадратичную невязку.
L = loss(Mdl,tbl(testInds,:))
L = 35.7540
Обучите обобщенную аддитивную модель (GAM), которая содержит как линейные, так и условия взаимодействия для предикторов, и оцените регрессионные потери (средняя квадратичная невязка, MSE) с терминами взаимодействия и без для обучающих данных и тестовых данных. Укажите, включать ли условия взаимодействия при оценке регрессионных потерь.
Загрузите carbig набор данных, содержащий измерения автомобилей 1970-х и начала 1980-х годов.
load carbigЗадайте Acceleration, Displacement, Horsepower, и Weight как переменные предиктора (X) и MPG как переменная отклика (Y).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Разделите набор данных на два набора: один, содержащий обучающие данные, и другой, содержащий новые, незащищенные тестовые данные. Резервируйте 10 наблюдений для нового набора тестовых данных.
rng('default') % For reproducibility n = size(X,1); newInds = randsample(n,10); inds = ~ismember(1:n,newInds); XNew = X(newInds,:); YNew = Y(newInds);
Обучите обобщенную аддитивную модель, которая содержит все доступные линейные условия и условия взаимодействия в X.
Mdl = fitrgam(X(inds,:),Y(inds),'Interactions','all');
Mdl является RegressionGAM объект модели.
Вычислите MSE реституции (то есть MSE в выборке) как с терминами взаимодействия, так и без Mdl. Чтобы исключить условия взаимодействия, задайте 'IncludeInteractions',false.
resubl = resubLoss(Mdl)
resubl = 0.0292
resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)resubl_nointeraction = 4.7330
Вычислите MSE регрессии как с терминами взаимодействия, так и без для набора тестовых данных. Используйте объект модели, эффективный для памяти, для расчетов.
CMdl = compact(Mdl);
CMdl является CompactRegressionGAM объект модели.
l = loss(CMdl,XNew,YNew)
l = 12.8604
l_nointeraction = loss(CMdl,XNew,YNew,'IncludeInteractions',false)l_nointeraction = 15.6741
Включение членов взаимодействия достигает меньшей ошибки для обучающих данных набора и тестовых данных набора.
Mdl - Обобщенная аддитивная модельRegressionGAM объект модели | CompactRegressionGAM объект моделиОбобщенная аддитивная модель, заданная как RegressionGAM или CompactRegressionGAM объект модели.
Tbl - Выборочные данныеВыборочные данные, заданный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Tbl должны содержать все предикторы, используемые для обучения Mdl. Опционально Tbl может содержать столбец для переменной отклика и столбец для весов наблюдений.
Переменная отклика должна быть числовым вектором. Если переменная отклика в Tbl имеет то же имя что и переменная отклика, используемая для обучения Mdl, тогда вам не нужно указывать ResponseVarName.
Значения веса должны быть числовым вектором. Необходимо задать веса наблюдений в Tbl при помощи 'Weights'.
Если вы тренировались Mdl используя выборочные данные, содержащуюся в таблице, затем входные данные для loss также должно быть в таблице.
Типы данных: table
ResponseVarName - Имя переменной откликаTblИмя переменной отклика, заданное как вектор символов или строковый скаляр, содержащий имя переменной отклика в Tbl. Для примера, если переменная отклика Y хранится в Tbl.Y, затем укажите его следующим 'Y'.
Типы данных: char | string
X - Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора.
Если вы тренировались Mdl использование выборочных данных, содержащихся в матрице, затем входных данных для loss должно быть также в матрице.
Типы данных: single | double
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'IncludeInteractions',false,'Weights',w задает, чтобы исключить условия взаимодействия из модели и использовать веса наблюдений w.'IncludeInteractions' - Флаг для включения условий взаимодействияtrue | falseФлаг для включения условий взаимодействия модели, заданный как true или false.
Значение по умолчанию 'IncludeInteractions' значение true если Mdl содержит условия взаимодействия. Значение должно быть false если модель не содержит членов взаимодействия.
Пример: 'IncludeInteractions',false
Типы данных: logical
'LossFun' - Функция потерь'mse' (по умолчанию) | указатель на функциюФункция потерь, заданная как 'mse' или указатель на функцию.
'mse' - Средневзвешенная квадратичная невязка.
Указатель на функцию - Чтобы задать пользовательскую функцию потерь, используйте указатель на функцию. Функция должна иметь следующую форму:
lossval = lossfun(Y,YFit,W)
Выходной аргумент lossval является скаляром с плавающей точкой.
Вы задаете имя функции ().lossfun
Y - это линейный n численный вектор наблюдаемых откликов, где n - количество наблюдений в Tbl или X.
YFit является длинным n числовым вектором соответствующих предсказанных откликов.
W является n -by-1 числовым вектором весов наблюдений.
Пример: 'LossFun', @ lossfun
Типы данных: char | string | function_handle
'Weights' - Веса наблюденийones(size(X,1),1) (по умолчанию) | вектор скалярных значений | имя переменной в TblВеса наблюдений, заданные как вектор скалярных значений или имя переменной в Tbl. Программа взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк в X или Tbl.
Если вы задаете входные данные как таблицу Tbl, затем Weights может быть именем переменной в Tbl который содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или строковый скаляр. Для примера, если вектор весов W хранится как Tbl.W, затем укажите его следующим 'W'.
loss нормализует значения Weights в сумму до 1.
Типы данных: single | double | char | string
Средневзвешенная квадратичная невязка измеряет прогнозирующую неточность регрессионых моделей. Когда вы сравниваете один и тот же тип потерь среди многих моделей, более низкая ошибка указывает на лучшую прогнозирующую модель.
Средневзвешенная квадратичная невязка вычисляется следующим образом:
где:
n - количество строк данных.
xj - j строка данных.
yj - это истинная реакция на xj.
f (xj) является предсказанием отклика модели Mdl к xj.
w - вектор весов наблюдений.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.