Подгонка обобщенной аддитивной модели (GAM) для регрессии
возвращает обобщенную аддитивную модель
MdlMdl
= fitrgam(Tbl
,ResponseVarName
) обучен с использованием выборочных данных, содержащихся в таблице
Tbl
. Входной параметр ResponseVarName
- имя переменной в Tbl
который содержит значения отклика для регрессии.
задает опции, использующие один или несколько аргументов имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера, Mdl
= fitrgam(___,Name,Value
)'Interactions',5
указывает, что включает пять членов в модели взаимодействия. Вы также можете задать список терминов взаимодействия, используя 'Interactions'
аргумент имя-значение.
Обучите одномерную GAM, которая содержит линейные условия для предикторов. Затем интерпретируйте предсказание для заданного образца данных с помощью plotLocalEffects
функция.
Загрузите набор данных NYCHousing2015
.
load NYCHousing2015
Набор данных включает 10 переменных с информацией о продажах недвижимости в Нью-Йорке в 2015 году. Этот пример использует эти переменные для анализа продажных цен (SALEPRICE
).
Предварительно обработайте набор данных. Удалите выбросы, преобразуйте datetime
массив (SALEDATE
) на номера месяцев и переместите переменную отклика (SALEPRICE
) до последнего столбца.
idx = isoutlier(NYCHousing2015.SALEPRICE); NYCHousing2015(idx,:) = []; NYCHousing2015.SALEDATE = month(NYCHousing2015.SALEDATE); NYCHousing2015 = movevars(NYCHousing2015,'SALEPRICE','After','SALEDATE');
Отобразите первые три строки таблицы.
head(NYCHousing2015,3)
ans=3×10 table
BOROUGH NEIGHBORHOOD BUILDINGCLASSCATEGORY RESIDENTIALUNITS COMMERCIALUNITS LANDSQUAREFEET GROSSSQUAREFEET YEARBUILT SALEDATE SALEPRICE
_______ ____________ ____________________________ ________________ _______________ ______________ _______________ _________ ________ _________
2 {'BATHGATE'} {'01 ONE FAMILY DWELLINGS'} 1 0 4750 2619 1899 8 0
2 {'BATHGATE'} {'01 ONE FAMILY DWELLINGS'} 1 0 4750 2619 1899 8 0
2 {'BATHGATE'} {'01 ONE FAMILY DWELLINGS'} 1 1 1287 2528 1899 12 0
Обучите одномерный GAM по продажным ценам. Задайте переменные для BOROUGH
, NEIGHBORHOOD
, BUILDINGCLASSCATEGORY
, и SALEDATE
как категориальные предикторы.
Mdl = fitrgam(NYCHousing2015,'SALEPRICE','CategoricalPredictors',[1 2 3 9])
Mdl = RegressionGAM PredictorNames: {1x9 cell} ResponseName: 'SALEPRICE' CategoricalPredictors: [1 2 3 9] ResponseTransform: 'none' Intercept: 3.7518e+05 NumObservations: 83517 Properties, Methods
Mdl
является RegressionGAM
объект модели. Отображение модели показывает частичный список свойств модели. Чтобы просмотреть полный список свойств, дважды кликните имя переменной Mdl
в Рабочей области. Откроется редактор Переменных для Mdl
. Также можно отобразить свойства в Командном окне с помощью записи через точку. Для примера отобразите предполагаемый точкой пересечения (постоянный) срок Mdl
.
Mdl.Intercept
ans = 3.7518e+05
Спрогнозируйте цену продажи для первого наблюдения обучающих данных и постройте график локальных эффектов терминов в Mdl
на предсказании.
yFit = predict(Mdl,NYCHousing2015(1,:))
yFit = 4.4421e+05
plotLocalEffects(Mdl,NYCHousing2015(1,:))
The predict
функция предсказывает цену продажи для первого наблюдения следующим 4.4421e5
. The plotLocalEffects
функция создает горизонтальный столбчатый график, которая показывает локальные эффекты членов в Mdl
на предсказании. Каждое значение локального эффекта показывает вклад каждого термина в прогнозируемую цену продажи.
Обучите обобщенную аддитивную модель, которая содержит линейные условия и условия взаимодействия для предикторов тремя различными способами:
Определите условия взаимодействия, используя formula
входной параметр.
Задайте 'Interactions'
аргумент имя-значение.
Сначала создайте модель с линейными терминами и добавьте условия взаимодействия к модели с помощью addInteractions
функция.
Загрузите carbig
набор данных, содержащий измерения автомобилей 1970-х и начала 1980-х годов.
load carbig
Создайте таблицу, которая содержит переменные предиктора (Acceleration
, Displacement
, Horsepower
, и Weight
) и переменной отклика (MPG
).
tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);
Задайте formula
Обучите GAM, который содержит четыре линейных условия (Acceleration
, Displacement
, Horsepower
, и Weight
) и двумя терминами взаимодействия (Acceleration*Displacement
и Displacement*Horsepower
). Определите условия используя формулу в форме 'Y ~ terms'
.
Mdl1 = fitrgam(tbl,'MPG ~ Acceleration + Displacement + Horsepower + Weight + Acceleration:Displacement + Displacement:Horsepower');
Функция добавляет условия взаимодействия к модели в порядке важности. Можно использовать Interactions
свойство для проверки членов в модели взаимодействия и порядка, в котором fitrgam
добавляет их в модель. Отобразите Interactions
свойство.
Mdl1.Interactions
ans = 2×2
2 3
1 2
Каждая строка Interactions
представляет один термин взаимодействия и содержит индексы столбцов переменных предиктора для термина взаимодействия.
Задайте 'Interactions'
Передайте обучающие данные (tbl
) и имя переменной отклика в tbl
на fitrgam
, так что функция включает линейные условия для всех других переменных в качестве предикторов. Задайте 'Interactions'
аргумент имя-значение с помощью логической матрицы для включения двух членов взаимодействия, x1*x2
и x2*x3
.
Mdl2 = fitrgam(tbl,'MPG','Interactions',logical([1 1 0 0; 0 1 1 0])); Mdl2.Interactions
ans = 2×2
2 3
1 2
Можно также задать 'Interactions'
как количество членов взаимодействия или как 'all'
включить все доступные условия взаимодействия. Среди заданных условий взаимодействия fitrgam
определяет те, чьи значения p не больше, чем 'MaxPValue'
и добавляет их в модель. Значение по умолчанию 'MaxPValue'
равен 1, так что функция добавляет все заданные условия взаимодействия в модель.
Задайте 'Interactions','all'
и установите 'MaxPValue'
аргумент имя-значение 0,05.
Mdl3 = fitrgam(tbl,'MPG','Interactions','all','MaxPValue',0.05);
Warning: Model does not include interaction terms because all interaction terms have p-values greater than the 'MaxPValue' value, or the software was unable to improve the model fit.
Mdl3.Interactions
ans = 0x2 empty double matrix
Mdl3
не включает условия взаимодействия, что подразумевает одно из следующего: все условия взаимодействия имеют значения p больше 0,05, или добавление условий взаимодействия не улучшает подгонку модели.
Использование addInteractions
Функция
Обучите одномерную GAM, которая содержит линейные условия для предикторов, и затем добавьте условия взаимодействия к обученной модели с помощью addInteractions
функция. Задайте второй входной параметр addInteractions
точно так же вы задаете 'Interactions'
аргумент имя-значение fitrgam
. Список членов взаимодействия можно задать с помощью логической матрицы, количества членов взаимодействия или 'all'
.
Укажите количество членов взаимодействия как 3, чтобы добавить три наиболее важных условия взаимодействия к обученной модели.
Mdl4 = fitrgam(tbl,'MPG');
UpdatedMdl4 = addInteractions(Mdl4,3);
UpdatedMdl4.Interactions
ans = 3×2
2 3
1 2
3 4
Mdl4
является одномерной GAM, и UpdatedMdl4
- обновленный GAM, содержащий все термины в Mdl4
и три дополнительных условия взаимодействия.
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' Properties, Methods
The 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 складок.
bayesopt
Оптимизируйте параметры GAM относительно перекрестной валидации с помощью bayesopt
функция.
Загрузите carbig
набор данных, содержащий измерения автомобилей 1970-х и начала 1980-х годов.
load carbig
Задайте Acceleration
, Displacement
, Horsepower
, и Weight
как переменные предиктора (X
) и MPG
как переменная отклика (Y
).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Подготовка optimizableVariable
объекты для аргументов имя-значение, которые необходимо оптимизировать с помощью байесовской оптимизации. Этот пример находит оптимальные значения для MaxNumSplitsPerPredictor
и NumTreesPerPredictor
аргументы fitrgam
.
maxNumSplits = optimizableVariable('maxNumSplits',[1,10],'Type','integer'); numTrees = optimizableVariable('numTrees',[1,500],'Type','integer');
Создайте целевую функцию, которая принимает вход z = [maxNumSplits,numTrees]
и возвращает перекрестно проверенное значение потерь z
.
minfun = @(z)kfoldLoss(fitrgam(X,Y,'CrossVal','on', ... 'MaxNumSplitsPerPredictor',z.maxNumSplits, ... 'NumTreesPerPredictor',z.numTrees));
Если вы задаете опцию перекрестной проверки ('CrossVal','on'
), затем fitrgam
функция возвращает перекрестно проверенный объект модели RegressionPartitionedGAM
. The kfoldLoss
функция возвращает регрессионные потери (средняя квадратичная невязка), полученные перекрестной проверенной моделью. Поэтому указатель на функцию minfun
вычисляет потери перекрестной валидации у параметров в z
.
Поиск оптимальных параметров [maxNumSplits,numTrees]
использование bayesopt
. Для повторяемости выберите 'expected-improvement-plus'
функция сбора. Функция сбора по умолчанию зависит от времени выполнения и, следовательно, может давать различные результаты.
rng('default') results = bayesopt(minfun,[maxNumSplits,numTrees],'Verbose',0, ... 'IsObjectiveDeterministic',true, ... 'AcquisitionFunctionName','expected-improvement-plus');
Получите лучшую точку от results
.
zbest = bestPoint(results)
zbest=1×2 table
maxNumSplits numTrees
____________ ________
1 215
Обучите оптимизированную GAM с помощью zbest
значения.
Mdl = fitrgam(X,Y, ... 'MaxNumSplitsPerPredictor',zbest.maxNumSplits, ... 'NumTreesPerPredictor',zbest.numTrees);
Tbl
- Выборочные данныеВыборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Опционально Tbl
может содержать столбец для переменной отклика и столбец для весов наблюдений. Переменная отклика и значения веса должны быть числовыми векторами.
Вы должны задать переменную отклика в Tbl
при помощи ResponseVarName
или formula
и задайте веса наблюдений в Tbl
при помощи 'Weights'
.
Задайте переменную отклика при помощи ResponseVarName
— fitrgam
использует оставшиеся переменные в качестве предикторов. Чтобы использовать подмножество остальных переменных в Tbl
в качестве предикторов задайте переменные предиктора при помощи 'PredictorNames'
.
Задайте спецификацию модели при помощи formula
— fitrgam
использует подмножество переменных в Tbl
как переменные предиктора и переменная отклика, как задано в formula
.
Если Tbl
не содержит переменную отклика, затем задает переменную отклика при помощи Y
. Длина переменной отклика Y
и количество строк в Tbl
должно быть равным. Чтобы использовать подмножество переменных в Tbl
в качестве предикторов задайте переменные предиктора при помощи 'PredictorNames'
.
fitrgam
рассматривает NaN
, ''
(пустой символьный вектор), ""
(пустая строка), <missing>
, и <undefined>
значения в Tbl
чтобы быть отсутствующими значениями.
fitrgam
не использует наблюдения со всеми отсутствующими значениями в подгонке.
fitrgam
не использует наблюдения с отсутствующими значениями отклика в подгонке.
fitrgam
использует наблюдения с некоторыми отсутствующими значениями для предикторов, чтобы найти расщепления переменных, для которых эти наблюдения имеют допустимые значения.
Типы данных: table
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как вектор символов или строковый скаляр, содержащий имя переменной отклика в Tbl
. Для примера, если переменная отклика Y
хранится в Tbl.Y
, затем укажите его следующим 'Y'
.
Типы данных: char
| string
formula
- Спецификация моделиСпецификация модели, заданная в виде вектора символов или строкового скаляра в форме 'Y ~ terms'
. The formula
аргумент задает переменную отклика и линейные условия и условия взаимодействия для переменных предиктора. Использование formula
для задания подмножества переменных в Tbl
как предикторы для настройки модели. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl
которые не появляются в formula
.
Для примера задайте 'Y~x1+x2+x3+x1:x2'
. В этой форме Y
представляет переменную отклика, и x1
, x2
, и x3
представляют линейные условия для переменных. x1:x2
представляет термин взаимодействия для x1
и x2
.
Имена переменных в формуле должны быть обоими именами переменных в Tbl
(Tbl.Properties.VariableNames
) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName
функция.
Кроме того, можно задать переменную отклика и линейные условия для предикторов, использующих formula
, и задайте условия взаимодействия для предикторов, использующих 'Interactions'
.
fitrgam
создает набор деревьев взаимодействия, используя только те условия, p которых значения не больше 'MaxPValue'
значение.
Пример: 'Y~x1+x2+x3+x1:x2'
Типы данных: char
| string
Y
- Данные откликаДанные отклика, заданные в виде числа вектора-столбца. Каждая запись в Y
- ответ на данные в соответствующей строке X
или Tbl
.
Программное обеспечение рассматривает NaN
значения в Y
чтобы быть отсутствующими значениями. fitrgam
не использует наблюдения с отсутствующими значениями отклика в подгонке.
Типы данных: single
| double
X
- Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора.
fitrgam
рассматривает NaN
значения в X
как отсутствующие значения. Функция не использует наблюдения со всеми отсутствующими значениями в подгонке. fitrgam
использует наблюдения с некоторыми отсутствующими значениями для X
чтобы найти разделения на переменные, для которых эти наблюдения имеют допустимые значения.
Типы данных: single
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Interactions','all','MaxPValue',0.05
задает, чтобы включать все доступные условия взаимодействия, значения p которых не более 0,05.'InitialLearnRateForInteractions'
- Начальная скорость обучения при ускорении градиента для условий взаимодействия1
(по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения ускорения градиента для членов взаимодействия, заданная как числовой скаляр в интервале (0,1].
Для каждой итерации увеличения для деревьев взаимодействия, fitrgam
начинает аппроксимацию с начальной скоростью обучения. Функция уменьшает скорость обучения вдвое, пока не найдет скорость, которая улучшает подгонку модели.
Настройка модели с использованием малой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.
Для получения дополнительной информации о ускорении градиента, см. Алгоритм ускорения градиента.
Пример: 'InitialLearnRateForInteractions',0.1
Типы данных: single
| double
'InitialLearnRateForPredictors'
- Начальная скорость обучения для ускорения градиента для линейных терминов1
(по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения для ускорения градиента для линейных членов, заданная как числовой скаляр в интервале (0,1].
Для каждой итерации увеличения для деревьев предикторов, fitrgam
начинает аппроксимацию с начальной скоростью обучения. Функция уменьшает скорость обучения вдвое, пока не найдет скорость, которая улучшает подгонку модели.
Настройка модели с использованием малой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.
Для получения дополнительной информации о ускорении градиента, см. Алгоритм ускорения градиента.
Пример: 'InitialLearnRateForPredictors',0.1
Типы данных: single
| double
'Interactions'
- Число или список условий взаимодействия0
(по умолчанию) | неотрицательный целочисленный скаляр | логическая матрица | 'all'
Количество или список членов взаимодействия для включения в S набора кандидатов, заданные как неотрицательный целочисленный скаляр, логическая матрица или 'all'
.
Количество членов взаимодействия, заданное как неотрицательное целое число - S включает указанное количество важных членов взаимодействия, выбранных исходя из p - значений членов.
Список условий взаимодействия, заданных как логическая матрица - S включает условия, заданные t
-by- p
логическая матрица, где t
количество членов взаимодействия и p
- количество предикторов, используемых для обучения модели. Для примера, logical([1 1 0; 0 1 1])
представляет две пары членов взаимодействия: пару первого и второго предикторов и пару второго и третьего предикторов.
Если fitrgam
использует подмножество входа переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. То есть индексы столбцов логической матрицы не подсчитывают переменные веса отклика и наблюдения. Индексы также не подсчитывают переменные, не используемые функцией.
'all'
- S включает все возможные пары членов взаимодействия, что p*(p – 1)/2
количество терминов в общей сложности.
Среди терминов взаимодействия в S, fitrgam
функция идентифицирует те, чьи p -значения не больше 'MaxPValue'
и использует их, чтобы создать набор деревьев взаимодействия. Используйте значение по умолчанию ('MaxPValue'
1) для построения деревьев взаимодействия с использованием всех терминов в S.
Пример: 'Interactions','all'
Типы данных: single
| double
| logical
| char
| string
'MaxNumSplitsPerInteraction'
- Максимальное количество разделений решений на дерево взаимодействияМаксимальное количество разделений решений (или узлов ветви) для каждого дерева взаимодействия (повышенное дерево для термина взаимодействия), заданное как положительный целочисленный скаляр.
Пример: 'MaxNumSplitsPerInteraction',5
Типы данных: single
| double
'MaxNumSplitsPerPredictor'
- Максимальное количество разделений решений на дерево предикторовМаксимальное количество разделений решений (или узлов ветви) для каждого дерева предикторов (усиленное дерево для линейного термина), заданное как положительный целочисленный скаляр. По умолчанию, fitrgam
использует пень дерева для дерева предиктора.
Пример: 'MaxNumSplitsPerPredictor',5
Типы данных: single
| double
'MaxPValue'
- Максимальное p -значение для обнаружения членов взаимодействияМаксимальное p-значение для обнаружения членов взаимодействия, заданное в виде числа в интервале [0,1].
fitrgam
сначала находит набор кандидатов, S членов взаимодействия formula
или 'Interactions'
. Затем функция идентифицирует условия взаимодействия, p которых - значения не больше 'MaxPValue'
и использует их, чтобы создать набор деревьев взаимодействия.
Значение по умолчанию ('MaxPValue',1
) строит деревья взаимодействия для всех членов взаимодействия в S набора кандидатов.
Для получения дополнительной информации об обнаружении терминов взаимодействия смотрите Обнаружение терминов взаимодействия.
Пример: 'MaxPValue',0.05
Типы данных: single
| double
'NumBins'
- Количество интервалов для числовых предикторов256
(по умолчанию) | положительный целочисленный скаляр | []
(пустой)Количество интервалов для числовых предикторов, заданное как положительный целочисленный скаляр или []
(пустой).
Если вы задаете 'NumBins'
значение как положительный целочисленный скаляр (numBins
), затем fitrgam
помещает каждый числовой предиктор в самое большее numBins
equiprobable bins, а затем выращивает деревья на индексах интервал вместо исходных данных.
Количество интервалов может быть меньше numBins
если предиктор имеет меньше numBins
уникальные значения.
fitrgam
не содержит категориальные предикторы.
Если на 'NumBins'
значение пусто ([]
), затем fitrgam
не содержит предикторов.
Когда вы используете большой набор обучающих данных, эта опция binning ускоряет обучение, но может привести к снижению точности. Сначала можно использовать значение по умолчанию 'NumBins'
, а затем измените значение в зависимости от точности и скорости обучения.
Обученная модель Mdl
сохраняет границы интервала в BinEdges
свойство.
Пример: 'NumBins',50
Типы данных: single
| double
'NumTreesPerInteraction'
- Количество деревьев на срок взаимодействияКоличество деревьев на один член взаимодействия, заданное как положительный целочисленный скаляр.
The 'NumTreesPerInteraction'
значение эквивалентно количеству итераций ускорения градиента для членов взаимодействия для предикторов. Для каждой итерации, fitrgam
добавляет к модели набор деревьев взаимодействия, по одному дереву для каждого термина взаимодействия. Чтобы узнать о алгоритме ускорения градиента, см. «Алгоритм ускорения градиента».
Можно определить, имеет ли подобранная модель заданное количество деревьев, просмотрев диагностическое сообщение, отображаемое при 'Verbose'
равен 1 или 2, или путем проверки ReasonForTermination
значение свойства модели Mdl
.
Пример: 'NumTreesPerInteraction',500
Типы данных: single
| double
'NumTreesPerPredictor'
- Количество деревьев на линейный терминКоличество деревьев на один линейный член, заданное как положительный целочисленный скаляр.
The 'NumTreesPerPredictor'
значение эквивалентно количеству итераций ускорения градиента для линейных членов для предикторов. Для каждой итерации, fitrgam
добавляет к модели набор деревьев предикторов, по одному дереву для каждого предиктора. Чтобы узнать о алгоритме ускорения градиента, см. «Алгоритм ускорения градиента».
Можно определить, имеет ли подобранная модель заданное количество деревьев, просмотрев диагностическое сообщение, отображаемое при 'Verbose'
равен 1 или 2, или путем проверки ReasonForTermination
значение свойства модели Mdl
.
Пример: 'NumTreesPerPredictor',500
Типы данных: single
| double
'CategoricalPredictors'
- Категориальный список предикторов'all'
Категориальный список предикторов, заданный как одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел |
Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и Если |
Логический вектор |
A |
Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames . Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames . |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl
), fitrgam
принимает, что переменная категориальна, если это логический вектор, неупорядоченный категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X
), fitrgam
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors'
аргумент имя-значение.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'NumPrint'
- Количество итераций между распечатками диагностических сообщений10
(по умолчанию) | неотрицательным целочисленным скаляромКоличество итераций между распечатками диагностических сообщений, заданное как неотрицательный целочисленный скаляр. Этот аргумент действителен только тогда, когда вы задаете 'Verbose'
как 1.
Если вы задаете 'Verbose',1
и 'NumPrint',numPrint
, затем программное обеспечение отображает диагностические сообщения каждый numPrint
итерации в Командном окне.
Пример: 'NumPrint',500
Типы данных: single
| double
'PredictorNames'
- Имена переменных предиктораИмена переменных предиктора, заданные как строковые массивы уникальных имен или массив ячеек из уникальных векторов символов. Функциональность PredictorNames
зависит от способа предоставления обучающих данных.
Если вы поставляете X
и Y
, тогда можно использовать PredictorNames
для назначения имен переменным предиктора в X
.
Порядок имен в PredictorNames
должен соответствовать порядку столбцов X
. То есть PredictorNames{1}
- имя X(:,1)
, PredictorNames{2}
- имя X(:,2)
и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию PredictorNames
является {'x1','x2',...}
.
Если вы поставляете Tbl
, тогда можно использовать PredictorNames
выбрать, какие переменные предиктора использовать в обучении. То есть, fitrgam
использует только переменные предиктора в PredictorNames
и переменной отклика во время обучения.
PredictorNames
должен быть подмножеством Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию PredictorNames
содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием любой из 'PredictorNames'
или formula
, но не то и другое.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'ResponseName'
- Имя переменной отклика'Y'
(по умолчанию) | символьный вектор | строковый скалярИмя переменной отклика, заданное как вектор символов или строковый скаляр.
Если вы поставляете Y
, тогда можно использовать 'ResponseName'
чтобы задать имя для переменной отклика.
Если вы поставляете ResponseVarName
или formula
, тогда вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char
| string
'ResponseTransform'
- Преобразование отклика'none'
(по умолчанию) | указатель на функциюПреобразование отклика, заданное как 'none'
или указатель на функцию. Значение по умолчанию является 'none'
, что означает @(y)y
, или без преобразования. Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования отклика. Указатель на функцию должен принять вектор (исходные значения отклика) и вернуть вектор того же размера (преобразованные значения отклика).
Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к вектору входа при помощи myfunction = @(y)exp(y)
. Затем можно задать преобразование отклика следующим 'ResponseTransform',myfunction
.
Типы данных: char
| string
| function_handle
'Verbose'
- Уровень подробностей0
(по умолчанию) | 1
| 2
Уровень подробностей, заданный как 0
, 1
, или 2
. The Verbose
значение управляет объемом информации, отображаемой программным обеспечением в Командном окне.
В этой таблице представлены доступные опции уровня подробностей.
Значение | Описание |
---|---|
0 | Программа не отображает никакой информации. |
1 | Программа отображает диагностические сообщения каждый numPrint итерации, где numPrint является 'NumPrint' значение. |
2 | Программа отображает диагностические сообщения при каждой итерации. |
Каждая линия диагностических сообщений показывает информацию о каждой усиливающей итерации и включает следующие столбцы:
Type
- Тип обученных деревьев, 1D
(деревья предикторов или усиленные деревья для линейных терминов для предикторов) или 2D
(деревья взаимодействия или усиленные деревья для условий взаимодействия для предикторов)
NumTrees
- Количество деревьев на линейный термин или термин взаимодействия, который fitrgam
добавлено к модели до сих пор
Deviance
- Отклонение модели
RelTol
- Относительное изменение предсказаний модели: , где является вектор-столбец предсказаний модели при итерации k
LearnRate
- Скорость обучения, используемый для текущей итерации
Пример: 'Verbose',1
Типы данных: single
| double
'Weights'
- Веса наблюденийones(size(X,1),1)
(по умолчанию) | вектор скалярных значений | имя переменной в Tbl
Веса наблюдений, заданные как вектор скалярных значений или имя переменной в Tbl
. Программа взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должно равняться количеству строк в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть именем переменной в Tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Для примера, если вектор весов W
хранится как Tbl.W
, затем укажите его следующим 'W'
.
fitrgam
нормализует значения Weights
в сумму до 1.
Типы данных: single
| double
| char
| string
'CrossVal'
- Флаг для обучения перекрестно проверенной модели'off'
(по умолчанию) | 'on'
Флаг для обучения перекрестно проверенной модели, заданный как 'on'
или 'off'
.
Если вы задаете 'on'
, затем программное обеспечение обучает перекрестно проверенную модель с 10 складками.
Вы можете переопределить этот параметр перекрестной проверки с помощью 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
аргумент имя-значение. Для создания модели с перекрестной проверкой можно использовать только один аргумент имя-значение перекрестной проверки за раз.
Кроме того, перекрестная проверка после создания модели путем передачи Mdl
кому crossval
.
Пример: 'Crossval','on'
'CVPartition'
- Раздел перекрестной проверки[]
(по умолчанию) | cvpartition
Объект разделаРаздел перекрестной проверки, заданный как cvpartition
объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной валидации и индексацию для наборов обучения и валидации.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный разбиение для 5-кратной перекрестной валидации при 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестно проверенную модель при помощи 'CVPartition',cvp
.
'Holdout'
- Доля данных для валидации отключенияДоля данных, используемых для валидации удержания, заданная в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает следующие шаги:
Случайный выбор и резервирование p*100
% данных в качестве данных валидации и train модели с использованием остальных данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double
| single
'KFold'
- Количество складок10
(по умолчанию) | положительное целое значение, больше 1Количество складок для использования в перекрестно проверенной модели, заданное как положительное целое значение, больше 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает следующие шаги:
Случайным образом разделите данные на k
наборы.
Для каждого набора зарезервируйте набор как данные валидации и обучите модель, используя другой k
- 1 комплект.
Сохраните k
компактные, обученные модели в k
-by-1 вектор камеры в Trained
свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'KFold',5
Типы данных: single
| double
'Leaveout'
- Оставьте один из флагов перекрестной проверки'off'
(по умолчанию) | 'on'
Выходной флаг перекрестной проверки, заданный как 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, затем для каждого из n наблюдений (где n - количество наблюдений, исключая недостающие наблюдения, заданное в NumObservations
свойство модели), программное обеспечение завершает следующие шаги:
Зарезервируйте одно наблюдение как данные валидации и обучите модель с помощью другого n - 1 наблюдений.
Сохраните n компактные обученные модели в векторе камеры n-на-1 в Trained
свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
Mdl
- Обученная обобщенная аддитивная модельRegressionGAM
объект модели | RegressionPartitionedGAM
перекрестно проверенный объект моделиОбученная обобщенная аддитивная модель, возвращенная как один из объектов модели в этой таблице.
Объект модели | Опции перекрестной валидации для обучения объекта модели | Способы предсказать ответы с помощью объекта модели |
---|---|---|
RegressionGAM | Ничего | Использовать predict для предсказания откликов на новые наблюдения и использования resubPredict для предсказания ответов на обучающие наблюдения. |
RegressionPartitionedGAM | Задайте аргумент имя-значение KFold , Holdout , Leaveout , CrossVal , или CVPartition | Использовать kfoldPredict чтобы предсказать ответы на наблюдения, которые fitrgam протягивается во время обучения. kfoldPredict предсказывает ответ для каждого наблюдения при помощи модели, обученной без этого наблюдения. |
Ссылка на свойства Mdl
, используйте запись через точку. Для примера введите Mdl.Interactions
в Командном окне, чтобы отобразить условия взаимодействия в Mdl
.
Обобщенная аддитивная модель (GAM) является интерпретируемой моделью, которая объясняет переменную отклика с использованием суммы одномерных и двухмерных функций формы предикторов.
fitrgam
использует усиленное дерево в качестве функции формы для каждого предиктора и, опционально, для каждой пары предикторов; поэтому функция может захватывать нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы в предсказание (значение отклика) хорошо разделены, модель легко интерпретировать.
Стандартная GAM использует одномерную функцию формы для каждого предиктора.
где y - переменная отклика, которая следует нормальному распределению со средним μ и стандартным σ отклонения. g (μ) является тождествами ссылки функцией, а c - точка пересечения (постоянным) термином. fi (xi) является одномерной функцией формы для i-го предиктора, который является усиленным деревом для линейного члена для предиктора (дерева предиктора).
Можно включать взаимодействия между предикторами в модель путем добавления двухмерных функций формы важных членов взаимодействия к модели.
где fij (xi xj) - двухмерная функция формы для i-го и j-го предикторов, которая является усиленным деревом для термина взаимодействия для предикторов (дерева взаимодействия).
fitrgam
находит важные условия взаимодействия на основе p -values F -tests. Для получения дополнительной информации смотрите Обнаружение терминов взаимодействия.
Отклонение - обобщение остаточной суммы квадратов. Он измеряет качество подгонки по сравнению с насыщенной моделью.
Отклонение подобранной модели в два раза больше разницы между логарифмической правдоподобностью модели и насыщенной моделью:
-2 (log L - log Ls),
где L и Ls являются вероятностями подобранной модели и насыщенной модели, соответственно. Насыщенная модель является моделью с максимальным количеством параметров, которые вы можете оценить.
fitrgam
использует отклонение для измерения качества модели и находит скорость обучения, которая уменьшает отклонение при каждой итерации. Задайте 'Verbose'
равным 1 или 2, чтобы отобразить отклонение и скорость обучения в Командном окне.
fitrgam
подходит для обобщенной аддитивной модели с помощью алгоритма ускорения градиента (Boosting методом наименьших квадратов).
fitrgam
сначала строит наборы деревьев предикторов (усиленные деревья для линейных членов для предикторов), а затем строит наборы деревьев взаимодействий (усиленные деревья для терминов взаимодействия для предикторов). Алгоритм бустинга итерирует самое большее 'NumTreesPerPredictor'
время для деревьев предикторов, а затем итерация для большинства 'NumTreesPerInteraction'
время для деревьев взаимодействия.
Для каждой итерации увеличения, fitrgam
создает набор деревьев предикторов с начальной скоростью обучения 'InitialLearnRateForPredictors'
, или создает набор деревьев взаимодействия с начальной скоростью обучения 'InitialLearnRateForInteractions'
.
При построении набора деревьев функция обучает по одному дереву за раз. Он подбирает дерево к невязке, которая является различием между откликом и агрегированным предсказанием от всех ранее выращенных деревьев. Чтобы контролировать ускоряющую скорость обучения, функция сжимает дерево по скорости обучения, а затем добавляет дерево к модели и обновляет невязку.
Обновленная модель = текущая модель + (темп обучения)· (новое дерево)
Обновлённая невязка = текущая невязка - (темп обучения)· (ответ объясняется новым деревом)
Если добавление набора деревьев улучшает подгонка модели (то есть уменьшает отклонение подгонки), то fitrgam
переходит к следующей итерации.
В противном случае, fitrgam
уменьшает вдвое скорость обучения и использует его, чтобы обновить модель и невязку. Функция продолжает уменьшать скорость обучения вдвое, пока не найдет скорость, которая улучшает подгонку модели.
Если функция не может найти такую скорость обучения для деревьев предикторов, то она останавливает увеличение итераций для линейных терминов и начинает усиливать итерации для членов взаимодействия.
Если функция не может найти такую скорость обучения для деревьев взаимодействия, то она прекращает подбор кривой модели.
Можно определить, почему обучение остановлено, проверив ReasonForTermination
свойство обученной модели.
Для каждого парного термина взаимодействия xi xj (задается formula
или 'Interactions'
), программное обеспечение выполняет F-тест, чтобы выяснить, является ли термин статистически значимым.
Чтобы ускорить процесс, fitrgam
заключает числовые предикторы в самое большее 8 уравнительных интервалов. Количество интервалов может быть меньше 8, если предиктор имеет меньше 8 уникальных значений. F-test исследует нулевую гипотезу о том, что интервалы, созданные xi и xj, имеют одинаковые отклики по сравнению с альтернативой, что, по крайней мере, одно интервал имеет отличное значение отклика от других. Небольшое p -значение указывает, что различия значительны, что подразумевает, что соответствующий термин взаимодействия значителен и, следовательно, включая термин может улучшить подгонку модели.
fitrgam
создает набор деревьев взаимодействия с помощью членов, значения p которых не больше 'MaxPValue'
значение. Можно использовать 'MaxPValue'
по умолчанию значение
1
для построения деревьев взаимодействия с использованием всех терминов, заданных formula
или 'Interactions'
.
fitrgam
добавляет к модели условия взаимодействия в порядке важности на основе p значений. Используйте Interactions
свойство возвращаемой модели для проверки порядка добавленных в модель членов взаимодействия.
[1] Лу, Инь, Рич Каруана и Йоханнес Герке. «Внятные модели для классификации и регрессии». Материалы 18-й Международной конференции ACM SIGKDD по открытию знаний и майнингу данных (KDD "12). Пекин, Китай: Пресса ACM, 2012, стр. 150-158.
[2] Лу, Инь, Рич Каруана, Йоханнес Герке и Джайлз Хукер. «Точные интеллектуальные модели с парными взаимодействиями». Материалы 19-й Международной конференции ACM SIGKDD по открытию знаний и майнингу данных (KDD "13) Чикаго, Иллинойс, США: ACM Press, 2013, стр. 623-631.
addInteractions
| predict
| RegressionGAM
| RegressionPartitionedGAM
| resume
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.