Регрессионная потеря для обобщенной аддитивной модели (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-на-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
Средневзвешенная квадратичная ошибка измеряет прогностическую неточность регрессионных моделей. При сравнении одного и того же типа потерь между многими моделями более низкая ошибка указывает на лучшую прогностическую модель.
Средневзвешенная квадратичная ошибка рассчитывается следующим образом:
2∑j=1nwj,
где:
n - количество строк данных.
xj - это j-я строка данных.
yj - истинный ответ на xj.
f (xj) - прогноз ответа моделиMdl в xj.
w - вектор весов наблюдения.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.