Предскажите ответы с помощью обобщенной аддитивной модели (GAM)
задает опции с помощью одних или нескольких аргументов name-value. Например, yFit
= predict(Mdl
,X
,Name,Value
)'IncludeInteractions',true
задает, чтобы включать периоды взаимодействия в расчеты.
[
также возвращает стандартные отклонения и интервалы предсказания переменной отклика, оцененной при каждом наблюдении в данных о предикторе yFit
,ySD
,yInt
] = predict(___)X
, использование любой из комбинаций входных аргументов в предыдущих синтаксисах. Этот синтаксис допустим только, когда вы задаете 'FitStandardDeviation'
из fitrgam
как true
для учебного Mdl
и IsStandardDeviationFit
свойство Mdl
true
.
Обучите обобщенную аддитивную модель с помощью обучающих выборок, и затем предскажите тестовые демонстрационные ответы.
Загрузите 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 IsStandardDeviationFit: 0 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 1228131 classreg.learning.regr.CompactRegressionGAM Mdl 1x1 1262153 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
Обучите обобщенную аддитивную модель (GAM), и затем вычислите и постройте интервалы предсказания значений отклика.
Загрузите patients
набор данных.
load patients
Составьте таблицу, которая содержит переменные предикторы (Age
, Diastolic
, Smoker
, Weight
, Gender
, SelfAssessedHealthStatus
) и переменная отклика (Systolic
).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Обучите одномерный GAM, который содержит линейные члены для предикторов в tbl
. Задайте FitStandardDeviation
аргумент значения имени как true
так, чтобы можно было использовать обученную модель, чтобы вычислить интервалы предсказания. Методические рекомендации должны использовать оптимальные гиперпараметры, когда вы подбираете модель стандартного отклонения для точности оценок стандартного отклонения. Задайте 'OptimizeHyperparameters'
как 'all-univariate'
. Для воспроизводимости используйте 'expected-improvement-plus'
функция захвата. Задайте 'ShowPlots'
как false
и 'Verbose'
как 0, чтобы отключить график и индикаторы сообщения, соответственно.
rng('default') % For reproducibility Mdl = fitrgam(tbl,'Systolic','FitStandardDeviation',true, ... 'OptimizeHyperparameters','all-univariate', ... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus', ... 'ShowPlots',false,'Verbose',0))
Mdl = RegressionGAM PredictorNames: {1x6 cell} ResponseName: 'Systolic' CategoricalPredictors: [3 5 6] ResponseTransform: 'none' Intercept: 122.7800 IsStandardDeviationFit: 1 NumObservations: 100 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Properties, Methods
Mdl
RegressionGAM
объект модели, который использует лучшую предполагаемую допустимую точку. Лучшая предполагаемая допустимая точка указывает на набор гиперпараметров, который минимизирует верхнюю доверительную границу значения целевой функции на основе базовой модели целевой функции Байесового процесса оптимизации. Для получения дополнительной информации о процессе оптимизации смотрите, Оптимизируют GAM Используя OptimizeHyperparameters.
Предскажите ответы для обучающих данных в tbl
, и вычислите 99% интервалов предсказания переменной отклика. Задайте уровень значения ('Alpha'
) как 0,01, чтобы установить доверительный уровень интервалов предсказания к 99%.
[yFit,~,yInt] = predict(Mdl,tbl,'Alpha',0.01);
Постройте отсортированные истинные ответы вместе с предсказанными ответами и интервалами предсказания.
figure yTrue = tbl.Systolic; [sortedYTrue,I] = sort(yTrue); plot(sortedYTrue,'o') hold on plot(yFit(I)) plot(yInt(I,1),'k:') plot(yInt(I,2),'k:') legend('True responses','Predicted responses', ... 'Prediction interval limits','Location','best') hold off
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
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Alpha',0.01,'IncludeInteractions',false
задает доверительный уровень как 99% и исключает периоды взаимодействия из расчетов.Alpha
— Уровень значения[0,1]
Уровень значения для доверительного уровня интервалов предсказания yInt
В виде числового скаляра в области значений [0,1]
. Доверительный уровень yInt
равно 100(1 – Alpha)%
.
Этот аргумент допустим только когда IsStandardDeviationFit
свойство Mdl
true
. Задайте 'FitStandardDeviation'
аргумент значения имени fitrgam
как true
подбирать модель для стандартного отклонения.
Пример: 'Alpha',0.01
задает, чтобы возвратить 99% интервалов предсказания.
Типы данных: single
| double
IncludeInteractions
— Отметьте, чтобы включать периоды взаимодействияtrue
| false
Отметьте, чтобы включать периоды взаимодействия модели в виде true
или false
.
'IncludeInteractions'
по умолчанию значением является
true
если Mdl
содержит периоды взаимодействия. Значением должен быть false
если модель не содержит периоды взаимодействия.
Пример: 'IncludeInteractions',false
Типы данных: логический
yFit
— Предсказанные ответыПредсказанные ответы, возвращенные как вектор-столбец длины n, где n является количеством наблюдений в данных о предикторе X
.
ySD
— Стандартные отклонения переменной откликаСтандартные отклонения переменной отклика, оцененной при каждом наблюдении в данных о предикторе X
, возвращенный как вектор-столбец длины n, где n является количеством наблюдений в X
. i
элемент th ySD(i)
содержит стандартное отклонение i
ответ th для i
наблюдение th
, предполагаемое использование обученной модели стандартного отклонения в X
iMdl
.
Этот аргумент допустим только когда IsStandardDeviationFit
свойство Mdl
true
. Задайте 'FitStandardDeviation'
аргумент значения имени fitrgam
как true
подбирать модель для стандартного отклонения.
yInt
— Интервалы предсказания переменной откликаИнтервалы предсказания переменной отклика, оцененной при каждом наблюдении в данных о предикторе X
, возвращенный как n-by-2 матрица, где n является количеством наблюдений в X
. i
строка th yInt(i,:)
содержит 100 (1–
интервал предсказания Alpha
)%i
ответ th для i
наблюдение th
. X
iAlpha
значение является вероятностью, что интервал предсказания не содержит истинное значение отклика для
. Первый столбец X
iyInt
содержит нижние пределы интервалов предсказания, и второй столбец содержит верхние пределы.
Этот аргумент допустим только когда IsStandardDeviationFit
свойство Mdl
true
. Задайте 'FitStandardDeviation'
аргумент значения имени fitrgam
как true
подбирать модель для стандартного отклонения.
predict
возвращает предсказанные ответы (yFit
) и, опционально, стандартные отклонения (ySD
) и интервалы предсказания (yInt
) из переменной отклика, оцененной при каждом наблюдении в X
.
Обобщенная аддитивная модель (GAM) для Регрессии принимает, что переменная отклика y следует за нормальным распределением со средним μ и стандартным отклонением σ. Если вы задаете 'FitStandardDeviation'
из fitrgam
как false
(значение по умолчанию), затем fitrgam
обучает модель μ. Если вы задаете 'FitStandardDeviation'
как true
то fitrgam
обучает дополнительную модель σ и устанавливает IsStandardDeviationFit
свойство объекта GAM к true
. Выходные параметры yFit
и ySD
соответствуйте предполагаемому среднему μ и стандартному отклонению σ, соответственно.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.