Обобщенная аддитивная модель (GAM) для регрессии
RegressionGAM
объект является объектом обобщенной аддитивной модели (GAM) для регрессии. Это - поддающаяся толкованию модель, которая объясняет переменную отклика с помощью суммы одномерных и двумерных функций формы.
Можно предсказать ответы для новых наблюдений при помощи predict
функция и график эффект каждой функции формы на предсказании (значение отклика) для наблюдения при помощи plotLocalEffects
функция. Для полного списка объектных функций для RegressionGAM
, см. Функции объекта.
Создайте RegressionGAM
объект при помощи fitrgam
. Можно задать и линейные члены и периоды взаимодействия для предикторов, чтобы включать одномерные функции формы (деревья предиктора) и двумерные функции формы (деревья взаимодействия) в обученной модели, соответственно.
Можно обновить обученную модель при помощи resume
или addInteractions
.
resume
функционируйте возобновляет обучение существующим условиям в модели.
addInteractions
функция добавляет периоды взаимодействия в модель, которая содержит только линейные члены.
BinEdges
— Границы интервала для числовых предикторов[]
Это свойство доступно только для чтения.
Границы интервала для числовых предикторов в виде массива ячеек p числовые векторы, где p является количеством предикторов. Каждый вектор включает границы интервала для числового предиктора. Элемент в массиве ячеек для категориального предиктора пуст, потому что программное обеспечение не делает интервала категориальные предикторы.
Числовые предикторы интервалов программного обеспечения, только если вы задаете 'NumBins'
аргумент значения имени как положительный целочисленный скаляр, когда обучение модель с древовидными учениками. BinEdges
свойство пусто если 'NumBins'
значение пусто (значение по умолчанию).
Можно воспроизвести сгруппированные данные о предикторе Xbinned
при помощи BinEdges
свойство обученной модели mdl
.
X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
idxNumeric = idxNumeric';
end
for j = idxNumeric
x = X(:,j);
% Convert x to array if x is a table.
if istable(x)
x = table2array(x);
end
% Group x into bins by using the discretize
function.
xbinned = discretize(x,[-inf; edges{j}; inf]);
Xbinned(:,j) = xbinned;
end
Xbinned
содержит индексы интервала, в пределах от 1 к количеству интервалов, для числовых предикторов. Xbinned
значения 0 для категориальных предикторов. Если X
содержит NaN
s, затем соответствующий Xbinned
значениями является NaN
s.
Типы данных: cell
Interactions
— Индексы периода взаимодействия[]
Это свойство доступно только для чтения.
Индексы периода взаимодействия в виде t
- 2 матрицы положительных целых чисел, где t
номер периодов взаимодействия в модели. Каждая строка матрицы представляет один период взаимодействия и содержит индексы столбца данных о предикторе X
в течение периода взаимодействия. Если модель не включает период взаимодействия, то это свойство пусто ([]
).
Программное обеспечение добавляет периоды взаимодействия в модель в порядке важности на основе p - значения. Используйте это свойство проверять порядок периодов взаимодействия, добавленных к модели.
Типы данных: double
Intercept
— Прервите термин моделиЭто свойство доступно только для чтения.
Прервите (постоянный) термин модели, которая является суммой условий точки пересечения в деревьях предиктора и деревьях взаимодействия в виде числового скаляра.
Типы данных: single
| double
ModelParameters
— Параметры раньше обучали модельЭто свойство доступно только для чтения.
Параметры раньше обучали модель в виде объекта параметра модели. ModelParameters
содержит значения параметров, такие как те для аргументов значения имени, используемых, чтобы обучить модель. ModelParameters
не содержит оцененные параметры.
Доступ к полям ModelParameters
при помощи записи через точку. Например, получите доступ к максимальному количеству разделений решения на дерево взаимодействия при помощи Mdl.ModelParameters.MaxNumSplitsPerInteraction
.
PairDetectionBinEdges
— Границы интервала для обнаружения периода взаимодействияЭто свойство доступно только для чтения.
Границы интервала для обнаружения периода взаимодействия для числовых предикторов в виде массива ячеек p числовые векторы, где p является количеством предикторов. Каждый вектор включает границы интервала для числового предиктора. Элемент в массиве ячеек для категориального предиктора пуст, потому что программное обеспечение не делает интервала категориальные предикторы.
Ускорять процесс обнаружения периода взаимодействия, интервалы программного обеспечения числовые предикторы в самое большее 8 равновероятных интервалов. Количество интервалов может быть меньше 8, если предиктор имеет меньше чем 8 уникальных значений.
Типы данных: cell
ReasonForTermination
— Обоснуйте учебные остановкиЭто свойство доступно только для чтения.
Обоснуйте обучение остановки модели в виде структуры с двумя полями, PredictorTrees
и InteractionTrees
.
Используйте это свойство проверять, содержит ли модель конкретное количество деревьев для каждого линейного члена ('NumTreesPerPredictor'
) и в течение каждого периода взаимодействия ('NumTreesPerInteraction'
). Если fitrgam
функция отключает обучение прежде, чем добавить конкретное количество деревьев, это свойство содержит причину завершения.
Типы данных: struct
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: double
ExpandedPredictorNames
— Расширенные имена предиктораЭто свойство доступно только для чтения.
Расширенный предиктор называет в виде массива ячеек из символьных векторов.
ExpandedPredictorNames
совпадает с PredictorNames
для обобщенной аддитивной модели.
Типы данных: cell
NumObservations
— Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений в обучающих данных сохранено в X
и Y
В виде числового скаляра.
Типы данных: double
PredictorNames
— Имена переменного предиктораЭто свойство доступно только для чтения.
Переменный предиктор называет в виде массива ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных.
Типы данных: cell
ResponseName
— Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика в виде вектора символов.
Типы данных: char
ResponseTransform
— Функция преобразования ответа'none'
| указатель на функциюПреобразование ответа функционирует в виде 'none'
или указатель на функцию. ResponseTransform
описывает, как программное обеспечение преобразовывает необработанные значения отклика.
Для функции MATLAB® или функции, которую вы задаете, введите ее указатель на функцию. Например, можно ввести Mdl.ResponseTransform = @function
, где function
принимает числовой вектор из исходных ответов и возвращает числовой вектор, одного размера содержащий преобразованные ответы.
Типы данных: char |
function_handle
RowsUsed
— Строки используются в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных обучающих данных, используемых в подборе кривой RegressionGAM
модель в виде логического вектора. Это свойство пусто, если все строки используются.
Типы данных: логический
W
— Веса наблюденияЭто свойство доступно только для чтения.
Веса наблюдения раньше обучали модель в виде n-by-1 числовой вектор. n является количеством наблюдений (NumObservations
).
Программное обеспечение нормирует веса наблюдения, заданные в 'Weights'
аргумент значения имени так, чтобы элементы W
суммируйте до 1.
Типы данных: double
X
— ПредикторыЭто свойство доступно только для чтения.
Предикторы раньше обучали модель в виде числовой матрицы или таблицу.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Типы данных: single
| double
| table
Y
— ОтветЭто свойство доступно только для чтения.
Ответ в виде числового вектора.
Каждая строка Y
представляет наблюдаемый ответ соответствующей строки X
.
Типы данных: single
| double
CompactRegressionGAM
compact | Уменьшайте размер модели машинного обучения |
RegressionPartitionedGAM
crossval | Перекрестный подтвердите модель машинного обучения |
addInteractions | Добавьте периоды взаимодействия в одномерную обобщенную аддитивную модель (GAM) |
resume | Возобновите обучение обобщенной аддитивной модели (GAM) |
lime | Локальные поддающиеся толкованию объяснения модели агностические (LIME) |
partialDependence | Вычислите частичную зависимость |
plotLocalEffects | Постройте локальные эффекты условий в обобщенной аддитивной модели (GAM) |
plotPartialDependence | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
shapley | Шепли оценивает |
resubPredict | Предскажите ответы для обучающих данных с помощью обученной модели регрессии |
resubLoss | Потеря регрессии перезамены |
Обучите одномерный GAM, который содержит линейные члены для предикторов. Затем интерпретируйте предсказание для заданного экземпляра данных при помощи plotLocalEffects
функция.
Загрузите набор данных NYCHousing2015
.
load NYCHousing2015
Набор данных включает 10 переменных с информацией о продажах свойств в Нью-Йорке в 2 015. Этот пример использует эти переменные, чтобы анализировать отпускные цены (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,:))
predict
функция предсказывает отпускную цену за первое наблюдение как 4.4421e5
. 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
и три дополнительных периода взаимодействия.
Обучите регрессию GAM, который содержит и линейные члены и периоды взаимодействия. Задайте, чтобы обучить периоды взаимодействия небольшому количеству итераций. После обучения периоды взаимодействия для большего количества итераций сравните потерю перезамены.
Загрузите carbig
набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х.
load carbig
Задайте Acceleration
, Displacement
, Horsepower
, и Weight
как переменные предикторы (X
) и MPG
как переменная отклика (Y
).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Обучите GAM, который включает все доступные линейные члены и периоды взаимодействия в X
. Задайте количество деревьев в период взаимодействия как 2. fitrgam
выполняет итерации повышающего алгоритма 300 раз (значение по умолчанию) для линейных членов и выполняет итерации алгоритма конкретное количество итераций в течение многих периодов взаимодействия. Для каждой повышающей итерации функция добавляет одно дерево на линейный член или одно дерево в период взаимодействия. Задайте 'Verbose'
как 1, чтобы отобразить диагностические сообщения в каждых 10 итерациях.
Mdl = fitrgam(X,Y,'Interactions','all','NumTreesPerInteraction',2,'Verbose',1);
|========================================================| | Type | NumTrees | Deviance | RelTol | LearnRate | |========================================================| | 1D| 0| 2.4432e+05| - | - | | 1D| 1| 9507.4| Inf| 1| | 1D| 10| 4470.6| 0.00025206| 1| | 1D| 20| 3895.3| 0.00011448| 1| | 1D| 30| 3617.7| 3.5365e-05| 1| | 1D| 40| 3402.5| 3.7992e-05| 1| | 1D| 50| 3257.1| 2.4983e-05| 1| | 1D| 60| 3131.8| 2.3873e-05| 1| | 1D| 70| 3019.8| 2.2967e-05| 1| | 1D| 80| 2925.9| 2.8071e-05| 1| | 1D| 90| 2845.3| 1.6811e-05| 1| | 1D| 100| 2772.7| 1.852e-05| 1| | 1D| 110| 2707.8| 1.6754e-05| 1| | 1D| 120| 2649.8| 1.651e-05| 1| | 1D| 130| 2596.6| 1.1723e-05| 1| | 1D| 140| 2547.4| 1.813e-05| 1| | 1D| 150| 2501.1| 1.8659e-05| 1| | 1D| 160| 2455.7| 1.386e-05| 1| | 1D| 170| 2416.9| 1.0615e-05| 1| | 1D| 180| 2377.2| 8.534e-06| 1| | 1D| 190| 2339| 7.6771e-06| 1| | 1D| 200| 2303.3| 9.5866e-06| 1| | 1D| 210| 2270.7| 8.4276e-06| 1| | 1D| 220| 2240.1| 8.5778e-06| 1| | 1D| 230| 2209.2| 9.6761e-06| 1| | 1D| 240| 2178.7| 7.0622e-06| 1| | 1D| 250| 2150.3| 8.3082e-06| 1| | 1D| 260| 2122.3| 7.9542e-06| 1| | 1D| 270| 2097.7| 7.6328e-06| 1| | 1D| 280| 2070.4| 9.4322e-06| 1| | 1D| 290| 2044.3| 7.5722e-06| 1| | 1D| 300| 2019.7| 6.6719e-06| 1| |========================================================| | Type | NumTrees | Deviance | RelTol | LearnRate | |========================================================| | 2D| 0| 2019.7| - | - | | 2D| 1| 1795.5| 0.0005975| 1| | 2D| 2| 1523.4| 0.0010079| 1|
Проверять ли fitrgam
обучает конкретное количество деревьев, отобразите ReasonForTermination
свойство обученной модели и представления отображенные сообщения.
Mdl.ReasonForTermination
ans = struct with fields:
PredictorTrees: 'Terminated after training the requested number of trees.'
InteractionTrees: 'Terminated after training the requested number of trees.'
Вычислите потерю регрессии для обучающих данных.
resubLoss(Mdl)
ans = 3.8277
Возобновите обучение модель еще для 100 итераций. Поскольку Mdl
содержит и линейные члены и периоды взаимодействия, resume
функционируйте возобновляет обучение в течение периодов взаимодействия и добавляет больше деревьев для них (деревья взаимодействия).
UpdatedMdl = resume(Mdl,100);
|========================================================| | Type | NumTrees | Deviance | RelTol | LearnRate | |========================================================| | 2D| 0| 1523.4| - | - | | 2D| 1| 1363.9| 0.00039695| 1| | 2D| 10| 594.04| 8.0295e-05| 1| | 2D| 20| 359.44| 4.3201e-05| 1| | 2D| 30| 238.51| 2.6869e-05| 1| | 2D| 40| 153.98| 2.6271e-05| 1| | 2D| 50| 91.464| 8.0936e-06| 1| | 2D| 60| 61.882| 3.8528e-06| 1| | 2D| 70| 43.206| 5.9888e-06| 1|
UpdatedMdl.ReasonForTermination
ans = struct with fields:
PredictorTrees: 'Terminated after training the requested number of trees.'
InteractionTrees: 'Unable to improve the model fit.'
resume
отключает обучение, когда добавление большего количества деревьев не улучшает отклонение подгонки модели.
Вычислите потерю регрессии с помощью обновленной модели.
resubLoss(UpdatedMdl)
ans = 0.0944
Уменьшения регрессии потерь после resume
обновляет модель с большим количеством итераций.
Обобщенная аддитивная модель (GAM) является поддающейся толкованию моделью, которая объясняет переменную отклика с помощью суммы одномерных и двумерных функций формы предикторов.
fitrgam
использует повышенное дерево в качестве функции формы для каждого предиктора и, опционально, каждой пары предикторов; поэтому, функция может получить нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы к предсказанию (значение отклика) хорошо разделяются, модель легко интерпретировать.
Стандартный GAM использует одномерную функцию формы для каждого предиктора.
где y является переменной отклика, которая следует за нормальным распределением со средним μ и стандартным отклонением σ. g (μ) является единичной функцией ссылки, и c является точкой пересечения (постоянный) термин. fi (xi) является одномерной функцией формы для i th предиктор, который является повышенным деревом для линейного члена для предиктора (дерево предиктора).
Можно включать взаимодействия между предикторами в модели путем добавления двумерных функций формы важных периодов взаимодействия к модели.
где fij (xi xj) является двумерной функцией формы для i th и j th предикторы, который является повышенным деревом в течение периода взаимодействия для предикторов (дерево взаимодействия).
fitrgam
находит важные периоды взаимодействия на основе p - значения F - тесты. Для получения дополнительной информации смотрите Обнаружение Периода взаимодействия.
[1] Лу, Инь, Рич Каруана и Джоханнс Джехрк. "Понятные Модели для Классификации и Регрессии". Продолжения 18-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных (KDD ’12). Пекин, Китай: Нажатие ACM, 2012, стр 150–158.
[2] Лу, Инь, Рич Каруана, Джоханнс Джехрк и Джайлс Хукер. "Точные Понятные Модели с Попарными Взаимодействиями". Продолжения 19-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных (KDD ’13) Чикаго, Иллинойс, США: Нажатие ACM, 2013, стр 623–631.
addInteractions
| CompactRegressionGAM
| fitrgam
| RegressionPartitionedGAM
| resume
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.