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