Перекрестная подтвержденная обобщенная аддитивная модель (GAM) для регрессии
RegressionPartitionedGAM
набор обобщенных аддитивных моделей, обученных на перекрестных подтвержденных сгибах. Оцените качество перекрестной подтвержденной регрессии при помощи одной или нескольких функций kfold: kfoldPredict
, kfoldLoss
, и kfoldfun
.
Каждые модели использования функции объекта kfold, обученные на учебном сгибе, (окутывают) наблюдения, чтобы предсказать ответ для сгиба валидации наблюдения (из сгиба). Например, предположите, что вы перекрестный подтверждаете использование пяти сгибов. Программное обеспечение случайным образом присваивает каждое наблюдение в пять групп равного размера (примерно). training fold содержит четыре из групп (примерно 4/5 данных), и validation fold содержит другую группу (примерно 1/5 данных). В этом случае перекрестная проверка продолжает можно следующим образом:
Программное обеспечение обучает первую модель (сохраненный в CVMdl.Trained{1}
) при помощи наблюдений в последних четырех группах и резервов наблюдения в первой группе для валидации.
Программное обеспечение обучает вторую модель (сохраненный в CVMdl.Trained{2}
) при помощи наблюдений в первой группе и последних трех группах. Программное обеспечение резервирует наблюдения во второй группе для валидации.
Программное обеспечение продолжает подобным образом для третьих, четвертых, и пятых моделей.
Если вы подтверждаете при помощи kfoldPredict
, программное обеспечение вычисляет предсказания для наблюдений в группе i при помощи i th модель. Короче говоря, программное обеспечение оценивает ответ для каждого наблюдения при помощи модели, обученной без того наблюдения.
Можно создать RegressionPartitionedGAM
модель двумя способами:
Создайте перекрестную подтвержденную модель из объекта GAM RegressionGAM
при помощи crossval
объектная функция.
Создайте перекрестную подтвержденную модель при помощи fitrgam
функция и определение одних из аргументов name-value 'CrossVal'
, 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
IsStandardDeviationFit
— Отметьте указание, является ли модель стандартного отклонения подходящейfalse
| true
Отметьте указание, является ли модель для стандартного отклонения переменной отклика подходящей в виде false
или true
. Задайте 'FitStandardDeviation'
аргумент значения имени fitrgam
как true
подбирать модель для стандартного отклонения.
Если IsStandardDeviationFit
true
, затем можно оценить стандартное отклонение в данных о предикторе X
при помощи kfoldPredict
. Эта функция также возвращает интервалы предсказания переменной отклика, оцененной в X
.
Типы данных: логический
CrossValidatedModel
— Перекрестное подтвержденное имя модели'GAM'
Это свойство доступно только для чтения.
Перекрестное подтвержденное имя модели в виде 'GAM'
.
KFold
— Количество перекрестных подтвержденных сгибовЭто свойство доступно только для чтения.
Количество перекрестных подтвержденных сгибов в виде положительного целого числа.
Типы данных: double
ModelParameters
— Значения параметров перекрестной проверкиЭто свойство доступно только для чтения.
Значения параметров перекрестной проверки в виде объекта. Значения параметров соответствуют значениям аргументов name-value, используемых, чтобы перекрестный подтвердить обобщенную аддитивную модель. ModelParameters
не содержит оцененные параметры.
Можно получить доступ к свойствам ModelParameters
использование записи через точку.
Partition
— Раздел данныхcvpartition
модельЭто свойство доступно только для чтения.
Раздел данных, указывающий, как программное обеспечение разделяет данные в сгибы перекрестной проверки в виде cvpartition
модель.
Trained
— Компактные модели обучены на сгибах перекрестной проверкиCompactRegressionGAM
моделиЭто свойство доступно только для чтения.
Компактные модели, обученные на перекрестной проверке, сворачиваются в виде массива ячеек CompactRegressionGAM
объекты модели. Trained
имеет ячейки k, где k является количеством сгибов.
Типы данных: cell
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, указывающие, что соответствующие предикторы являются категориальными. Значения индекса между 1 и p
, где p
количество предикторов, используемых, чтобы обучить модель. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: double
NumObservations
— Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений в обучающих данных сохранено в X
и Y
В виде числового скаляра.
Типы данных: double
PredictorNames
— Имена переменного предиктораЭто свойство доступно только для чтения.
Переменный предиктор называет в виде массива ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных.
Типы данных: cell
ResponseName
— Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика в виде вектора символов.
Типы данных: char
ResponseTransform
— Функция преобразования ответа'none'
| указатель на функциюПреобразование ответа функционирует в виде 'none'
или указатель на функцию. ResponseTransform
описывает, как программное обеспечение преобразовывает необработанные значения отклика.
Для MATLAB® функционируйте или функция, что вы задаете, вводите ее указатель на функцию. Например, можно ввести Mdl.ResponseTransform = @function
, где function
принимает числовой вектор из исходных ответов и возвращает числовой вектор, одного размера содержащий преобразованные ответы.
Типы данных: char |
function_handle
W
— Веса наблюденияЭто свойство доступно только для чтения.
Веса наблюдения раньше обучали модель в виде n-by-1 числовой вектор. n является количеством наблюдений (NumObservations
).
Программное обеспечение нормирует веса наблюдения, заданные в 'Weights'
аргумент значения имени так, чтобы элементы W
суммируйте до 1.
Типы данных: double
X
— ПредикторыЭто свойство доступно только для чтения.
Предикторы раньше перекрестный подтверждали модель в виде числовой матрицы или таблицу.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Типы данных: single
| double
| table
Y
— ОтветЭто свойство доступно только для чтения.
Ответ раньше перекрестный подтверждал модель в виде числового вектора.
Каждая строка Y
представляет наблюдаемый ответ соответствующей строки X
.
Типы данных: single
| double
kfoldPredict | Предскажите ответы для наблюдений в перекрестной подтвержденной модели регрессии |
kfoldLoss | Потеря для перекрестной подтвержденной разделенной модели регрессии |
kfoldfun | Перекрестный подтвердите функцию для регрессии |
fitrgam
Обучите перекрестный подтвержденный GAM с 10 сгибами, который является опцией перекрестной проверки по умолчанию, при помощи fitrgam
. Затем используйте kfoldPredict
предсказать ответы для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба.
Загрузите carbig
набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х.
load carbig
Составьте таблицу, которая содержит переменные предикторы (Acceleration
, Displacement
, Horsepower
, и Weight
) и переменная отклика (MPG
).
tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);
Создайте перекрестный подтвержденный GAM при помощи опции перекрестной проверки по умолчанию. Задайте 'CrossVal'
аргумент значения имени как 'on'
.
rng('default') % For reproducibility CVMdl = fitrgam(tbl,'MPG','CrossVal','on')
CVMdl = RegressionPartitionedGAM CrossValidatedModel: 'GAM' PredictorNames: {1x4 cell} ResponseName: 'MPG' NumObservations: 398 KFold: 10 Partition: [1x1 cvpartition] NumTrainedPerFold: [1x1 struct] ResponseTransform: 'none' IsStandardDeviationFit: 0 Properties, Methods
fitrgam
функция создает RegressionPartitionedGAM
объект модели CVMdl
с 10 сгибами. Во время перекрестной проверки программное обеспечение завершает эти шаги:
Случайным образом разделите данные в 10 наборов.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью других 9 наборов.
Сохраните 10 компактных, обученных моделей a в векторе ячейки 10 на 1 в Trained
свойство перекрестного подтвержденного объекта модели RegressionPartitionedGAM
.
Можно заменить установку перекрестной проверки по умолчанию при помощи 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
аргумент значения имени.
Предскажите ответы для наблюдений в tbl
при помощи kfoldPredict
. Функция предсказывает ответы для каждого наблюдения с помощью модели, обученной без того наблюдения.
yHat = kfoldPredict(CVMdl);
yHat
числовой вектор. Отобразите первые пять предсказанных ответов.
yHat(1:5)
ans = 5×1
19.4848
15.7203
15.5742
15.3185
17.8223
Вычислите потерю регрессии (среднеквадратическая ошибка).
L = kfoldLoss(CVMdl)
L = 17.7248
kfoldLoss
возвращает среднюю среднеквадратическую ошибку более чем 10 сгибов.
crossval
Обучите обобщенную аддитивную модель (GAM) регрессии при помощи fitrgam
, и создайте перекрестный подтвержденный GAM при помощи crossval
и опция затяжки. Затем используйте kfoldPredict
предсказать ответы для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба.
Загрузите patients
набор данных.
load patients
Составьте таблицу, которая содержит переменные предикторы (Age
, Diastolic
, Smoker
, Weight
, Gender
, SelfAssessedHealthStatus
) и переменная отклика (Systolic
).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Обучите GAM, который содержит линейные члены для предикторов.
Mdl = fitrgam(tbl,'Systolic');
Mdl
RegressionGAM
объект модели.
Перекрестный подтвердите модель путем определения 30%-й выборки затяжки.
rng('default') % For reproducibility CVMdl = crossval(Mdl,'Holdout',0.3)
CVMdl = RegressionPartitionedGAM CrossValidatedModel: 'GAM' PredictorNames: {1x6 cell} CategoricalPredictors: [3 5 6] ResponseName: 'Systolic' NumObservations: 100 KFold: 1 Partition: [1x1 cvpartition] NumTrainedPerFold: [1x1 struct] ResponseTransform: 'none' IsStandardDeviationFit: 0 Properties, Methods
crossval
функция создает RegressionPartitionedGAM
объект модели CVMdl
с опцией затяжки. Во время перекрестной проверки программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте 30% данных как данные о валидации и обучите модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестного подтвержденного объекта модели RegressionPartitionedGAM
.
Можно выбрать различную установку перекрестной проверки при помощи 'CrossVal'
, 'CVPartition'
, 'KFold'
, или 'Leaveout'
аргумент значения имени.
Предскажите ответы для наблюдений сгиба валидации при помощи kfoldPredict
. Функция предсказывает ответы для наблюдений сгиба валидации при помощи модели, обученной на наблюдениях учебного сгиба. Функция присваивает NaN
к наблюдениям учебного сгиба.
yFit = kfoldPredict(CVMdl);
Найдите индексы наблюдения сгиба валидации и составьте таблицу, содержащую индекс наблюдения, наблюдаемые значения отклика и предсказанные значения отклика. Отобразите первые восемь строк таблицы.
idx = find(~isnan(yFit)); t = table(idx,tbl.Systolic(idx),yFit(idx), ... 'VariableNames',{'Obseraction Index','Observed Value','Predicted Value'}); head(t)
ans=8×3 table
Obseraction Index Observed Value Predicted Value
_________________ ______________ _______________
1 124 130.22
6 121 124.38
7 130 125.26
12 115 117.05
20 125 121.82
22 123 116.99
23 114 107
24 128 122.52
Вычислите ошибку регрессии (среднеквадратическая ошибка) для наблюдений сгиба валидации.
L = kfoldLoss(CVMdl)
L = 43.8715
kfoldLoss
Обучите перекрестную подтвержденную обобщенную аддитивную модель (GAM) с 10 сгибами. Затем используйте kfoldLoss
вычислить совокупную потерю регрессии перекрестной проверки (среднеквадратические ошибки). Используйте ошибки определить оптимальное количество деревьев на предиктор (линейный член для предиктора) и оптимальное количество деревьев в период взаимодействия.
В качестве альтернативы можно найти оптимальные значения fitrgam
аргументы name-value при помощи аргумента значения имени OptimizeHyperparameters. Для примера смотрите, Оптимизируют GAM Используя OptimizeHyperparameters.
Загрузите patients
набор данных.
load patients
Составьте таблицу, которая содержит переменные предикторы (Age
, Diastolic
, Smoker
, Weight
, Gender
, и SelfAssessedHealthStatus
) и переменная отклика (Systolic
).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Создайте перекрестный подтвержденный GAM при помощи опции перекрестной проверки по умолчанию. Задайте 'CrossVal'
аргумент значения имени как 'on'
. Кроме того, задайте, чтобы включать 5 периодов взаимодействия.
rng('default') % For reproducibility CVMdl = fitrgam(tbl,'Systolic','CrossVal','on','Interactions',5);
Если вы задаете 'Mode'
как 'cumulative'
для kfoldLoss
, затем функция возвращает совокупные ошибки, которые являются средними погрешностями через все сгибы, полученные с помощью того же количества деревьев для каждого сгиба. Отобразите количество деревьев для каждого сгиба.
CVMdl.NumTrainedPerFold
ans = struct with fields:
PredictorTrees: [300 300 300 300 300 300 300 300 300 300]
InteractionTrees: [76 100 100 100 100 42 100 100 59 100]
kfoldLoss
может вычислить совокупные ошибки до 300 деревьев предиктора и 42 дерева взаимодействия.
Постройте совокупное, перекрестное подтвержденное 10-кратное, среднеквадратические ошибки. Задайте 'IncludeInteractions'
как false
исключить периоды взаимодействия из расчета.
L_noInteractions = kfoldLoss(CVMdl,'Mode','cumulative','IncludeInteractions',false); figure plot(0:min(CVMdl.NumTrainedPerFold.PredictorTrees),L_noInteractions)
Первый элемент L_noInteractions
средняя погрешность по всем сгибам, полученным с помощью только точку пересечения (постоянный) термин. (J+1
) элемент th L_noInteractions
полученное использование средней погрешности термина точки пересечения и первого J
деревья предиктора на линейный член. Графический вывод совокупной потери позволяет вам контролировать, как ошибка изменяется как количество деревьев предиктора в увеличениях GAM.
Найдите минимальную ошибку, и количество деревьев предиктора раньше достигало минимальной ошибки.
[M,I] = min(L_noInteractions)
M = 28.0506
I = 6
GAM достигает минимальной ошибки, когда это включает 5 деревьев предиктора.
Вычислите совокупную среднеквадратическую ошибку, использующую и линейные термины и периоды взаимодействия.
L = kfoldLoss(CVMdl,'Mode','cumulative'); figure plot(0:min(CVMdl.NumTrainedPerFold.InteractionTrees),L)
Первый элемент L
средняя погрешность по всем сгибам, полученным с помощью точки пересечения (постоянный) термин и все деревья предиктора на линейный член. (J+1
) элемент th L
полученное использование средней погрешности термина точки пересечения, всех деревьев предиктора на линейный член и первого J
деревья взаимодействия в период взаимодействия. График показывает, что ошибка увеличивается, когда периоды взаимодействия добавляются.
Если вы удовлетворены ошибкой, когда количество деревьев предиктора равняется 5, можно создать прогнозную модель по образованию одномерный GAM снова и определение 'NumTreesPerPredictor',5
без перекрестной проверки.
Обобщенная аддитивная модель (GAM) является поддающейся толкованию моделью, которая объясняет переменную отклика с помощью суммы одномерных и двумерных функций формы предикторов.
fitrgam
использует повышенное дерево в качестве функции формы для каждого предиктора и, опционально, каждой пары предикторов; поэтому, функция может получить нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы к предсказанию (значение отклика) хорошо разделяются, модель легко интерпретировать.
Стандартный GAM использует одномерную функцию формы для каждого предиктора.
где y является переменной отклика, которая следует за нормальным распределением со средним μ и стандартным отклонением σ. g (μ) является единичной функцией ссылки, и c является точкой пересечения (постоянный) термин. fi (xi) является одномерной функцией формы для i th предиктор, который является повышенным деревом для линейного члена для предиктора (дерево предиктора).
Можно включать взаимодействия между предикторами в модели путем добавления двумерных функций формы важных периодов взаимодействия к модели.
где fij (xi xj) является двумерной функцией формы для i th и j th предикторы, который является повышенным деревом в течение периода взаимодействия для предикторов (дерево взаимодействия).
fitrgam
находит важные периоды взаимодействия на основе p - значения F - тесты. Для получения дополнительной информации смотрите Обнаружение Периода взаимодействия.
Если вы задаете 'FitStandardDeviation'
из fitrgam
как false
(значение по умолчанию), затем fitrgam
обучает модель среднему μ. Если вы задаете 'FitStandardDeviation'
как true
то fitrgam
обучает дополнительную модель стандартному отклонению σ и устанавливает IsStandardDeviationFit
свойство объекта GAM к true
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.