Потеря регрессии для обобщенной аддитивной модели (GAM)
возвращает потерю регрессии (L = loss(Mdl,Tbl,ResponseVarName)L), скалярное представление, как хорошо обобщенная аддитивная модель Mdl предсказывает данные о предикторе в Tbl по сравнению с истинными значениями отклика в Tbl.ResponseVarName.
Интерпретация L зависит от функции потерь ('LossFun') и взвешивание схемы ('Weights'). В общем случае лучшие модели дают к меньшим значениям потерь. 'LossFun' по умолчанию значением является 'mse' (среднеквадратическая ошибка).
задает опции с помощью одних или нескольких аргументов name-value в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать функцию потерь и веса наблюдения.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 объект модели.
Вычислите перезамену MSEs (то есть, MSEs в выборке) и с и без периодов взаимодействия в Mdl. Чтобы исключить периоды взаимодействия, задайте 'IncludeInteractions',false.
resubl = resubLoss(Mdl)
resubl = 0.0292
resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)resubl_nointeraction = 4.7330
Вычислите регрессию MSEs и с и без периодов взаимодействия для набора тестовых данных. Используйте эффективный памятью объект модели для расчета.
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
Типы данных: логический
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 th строка данных.
yj является истинным ответом на xj.
f (xj) является предсказанием ответа модели Mdl к xj.
w является вектором из весов наблюдения.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.