Прогнозирование ответов с использованием обобщенной аддитивной модели (GAM)
указывает, следует ли включать в вычисления элементы взаимодействия.yFit = predict(Mdl,X,'IncludeInteractions',includeInteractions)
Обучить обобщенную аддитивную модель с использованием обучающих образцов, а затем предсказать ответы тестового образца.
Загрузить 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')Mdl =
RegressionGAM
PredictorNames: {1x6 cell}
ResponseName: 'Systolic'
CategoricalPredictors: [3 5 6]
ResponseTransform: 'none'
Intercept: 122.7444
NumObservations: 90
Properties, Methods
Mdl является RegressionGAM объект модели.
Прогнозирование ответов для тестового набора.
yFit = predict(Mdl,tbl(testInds,:));
Создайте таблицу, содержащую наблюдаемые и прогнозируемые значения отклика.
table(tbl.Systolic(testInds),yFit, ... 'VariableNames',{'Observed Value','Predicted Value'})
ans=10×2 table
Observed Value Predicted Value
______________ _______________
124 126.58
121 123.95
130 116.72
115 117.35
121 117.45
116 118.5
123 126.16
132 124.14
125 127.36
124 115.99
Прогнозировать ответы для новых наблюдений с использованием обобщенной аддитивной модели, которая содержит как линейные, так и условия взаимодействия для предикторов. Используйте объект модели с эффективным использованием памяти и укажите, следует ли включать термины взаимодействия при прогнозировании ответов.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов.
load carbigОпределить Acceleration, Displacement, Horsepower, и Weight в качестве переменных предиктора (X) и MPG в качестве переменной ответа (Y).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Разбейте набор данных на два набора: один содержит обучающие данные, а другой - новые ненаблюдаемые тестовые данные. Зарезервируйте 10 наблюдений для нового набора тестовых данных.
rng('default')
n = size(X,1);
newInds = randsample(n,10);
inds = ~ismember(1:n,newInds);
XNew = X(newInds,:);
YNew = Y(newInds);Обучение GAM, который содержит все доступные линейные термины и термины взаимодействия в X.
Mdl = fitrgam(X(inds,:),Y(inds),'Interactions','all');
Mdl является RegressionGAM объект модели.
Экономьте память, уменьшая размер обучаемой модели.
CMdl = compact(Mdl); whos('Mdl','CMdl')
Name Size Bytes Class Attributes CMdl 1x1 1228122 classreg.learning.regr.CompactRegressionGAM Mdl 1x1 1262143 RegressionGAM
CMdl является CompactRegressionGAM объект модели.
Спрогнозировать отклики, используя как линейные, так и интерактивные члены, а затем используя только линейные члены. Чтобы исключить термины взаимодействия, укажите 'IncludeInteractions',false.
yFit = predict(CMdl,XNew);
yFit_nointeraction = predict(CMdl,XNew,'IncludeInteractions',false);Создайте таблицу, содержащую наблюдаемые и прогнозируемые значения отклика.
t = table(YNew,yFit,yFit_nointeraction, ... 'VariableNames',{'Observed Response', ... 'Predicted Response','Predicted Response Without Interactions'})
t=10×3 table
Observed Response Predicted Response Predicted Response Without Interactions
_________________ __________________ _______________________________________
27.9 23.04 23.649
NaN 37.163 35.779
NaN 25.876 21.978
13 12.786 14.141
36 28.889 27.281
19.9 22.199 18.451
24.2 23.995 24.885
12 14.247 13.982
38 33.797 33.528
13 12.225 11.127
Mdl - Обобщенная аддитивная модельRegressionGAM объект модели | CompactRegressionGAM объект моделиОбобщенная аддитивная модель, указанная как RegressionGAM или CompactRegressionGAM объект модели.
X - Данные предиктораДанные предиктора, указанные как числовая матрица или таблица.
Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Для числовой матрицы:
Переменные, составляющие столбцы X должен иметь тот же порядок, что и обучаемые переменные предиктора Mdl.
Если вы тренировались Mdl используя таблицу, затем X может быть числовой матрицей, если таблица содержит все числовые переменные предиктора.
Для таблицы:
Если вы тренировались Mdl использование таблицы (например, Tbl), затем все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и в Tbl. Однако порядок столбцов X не обязательно соответствовать порядку столбцов Tbl.
Если вы тренировались Mdl используя числовую матрицу, затем имена предикторов в Mdl.PredictorNames и соответствующие имена переменных предиктора в X должно быть то же самое. Чтобы указать имена предикторов во время обучения, используйте 'PredictorNames' аргумент «имя-значение». Все переменные предиктора в X должны быть числовыми векторами.
X может содержать дополнительные переменные (переменные ответа, веса наблюдения и т.д.), но predict игнорирует их.
predict не поддерживает многозначные переменные или массивы ячеек, отличные от массивов ячеек символьных векторов.
Типы данных: table | double | single
includeInteractions - Флаг для включения терминов взаимодействияtrue | falseФлаг для включения условий взаимодействия модели, указанный как true или false.
Дефолт includeInteractions значение равно true если Mdl содержит термины взаимодействия. Значение должно быть false если модель не содержит терминов взаимодействия.
Типы данных: logical
yFit - Прогнозируемые ответыПрогнозируемые ответы, возвращаемые в виде вектора длиной n, где n - количество наблюдений в данных предиктора X.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.