Обобщенная аддитивная модель (GAM) для бинарной классификации
ClassificationGAM
объект является объектом обобщенной аддитивной модели (GAM) для бинарной классификации. Это - поддающаяся толкованию модель, которая объясняет баллы класса (логит вероятностей класса) использование суммы одномерных и двумерных функций формы.
Можно классифицировать новые наблюдения при помощи predict
функция и график эффект каждой функции формы на предсказании (счет класса) для наблюдения при помощи plotLocalEffects
функция. Для полного списка объектных функций для ClassificationGAM
, см. Функции объекта.
Создайте ClassificationGAM
объект при помощи fitcgam
. Можно задать и линейные члены и периоды взаимодействия для предикторов, чтобы включать одномерные функции формы (деревья предиктора) и двумерные функции формы (деревья взаимодействия) в обученной модели, соответственно.
Можно обновить обученную модель при помощи 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'
). Если fitcgam
функция отключает обучение прежде, чем добавить конкретное количество деревьев, это свойство содержит причину завершения.
Типы данных: struct
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: double
ClassNames
— Уникальные метки классаЭто свойство доступно только для чтения.
Уникальные метки класса, используемые в обучении в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. ClassNames
имеет совпадающий тип данных, когда класс маркирует Y
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
ClassNames
также определяет порядок класса.
Типы данных: single
| double
| logical
| char
| cell
| categorical
Cost
— Затраты MisclassificationMisclassification стоит в виде числовой матрицы 2 на 2.
Стойте (
стоимость классификации точки в класс i
J
)j
если его истинным классом является i
. Порядок строк и столбцов Cost
соответствует порядку классов в ClassNames
.
Программное обеспечение использует Cost
значение для предсказания, но не обучение. Можно изменить значение при помощи записи через точку.
Пример: Mdl.Cost = C;
Типы данных: double
ExpandedPredictorNames
— Расширенные имена предиктораЭто свойство доступно только для чтения.
Расширенный предиктор называет в виде массива ячеек из символьных векторов.
ExpandedPredictorNames
совпадает с PredictorNames
для обобщенной аддитивной модели.
Типы данных: cell
NumObservations
— Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений в обучающих данных сохранено в X
и Y
В виде числового скаляра.
Типы данных: double
PredictorNames
— Имена переменного предиктораЭто свойство доступно только для чтения.
Переменный предиктор называет в виде массива ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных.
Типы данных: cell
Prior
— Предшествующие вероятности классаЭто свойство доступно только для чтения.
Предшествующие вероятности класса в виде числового вектора с двумя элементами. Порядок элементов соответствует порядку элементов в ClassNames
.
Типы данных: double
ResponseName
— Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика в виде вектора символов.
Типы данных: char
RowsUsed
— Строки используются в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных обучающих данных, используемых в подборе кривой ClassificationGAM
модель в виде логического вектора. Это свойство пусто, если все строки используются.
Типы данных: логический
ScoreTransform
— Выиграйте преобразованиеВыиграйте преобразование в виде вектора символов или указателя на функцию. ScoreTransform
представляет встроенную функцию преобразования или указатель на функцию для преобразования предсказанных классификационных оценок.
Чтобы изменить преобразование счета функционируют к function
, например, используйте запись через точку.
Для встроенной функции введите вектор символов.
Mdl.ScoreTransform = 'function';
Эта таблица описывает доступные встроенные функции.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (x / (1 – x)) |
'ismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0 |
'logit' | 1/(1 + e –x) |
'none' или 'identity' | x (никакое преобразование) |
'sign' | – 1 для x <0 0 для x = 0 1 для x> 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
'symmetriclogit' | 2/(1 + e –x) – 1 |
Для функции MATLAB® или функции, которую вы задаете, введите ее указатель на функцию.
Mdl.ScoreTransform = @function;
function
должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).
Это свойство определяет выходной расчет счета для объектных функций такой как predict
, margin
, и edge
. Используйте 'logit'
вычислить апостериорные вероятности и использовать 'none'
вычислить логит апостериорных вероятностей.
Типы данных: char |
function_handle
W
— Веса наблюденияЭто свойство доступно только для чтения.
Веса наблюдения раньше обучали модель в виде n-by-1 числовой вектор. n является количеством наблюдений (NumObservations
).
Программное обеспечение нормирует веса наблюдения, заданные в 'Weights'
аргумент значения имени так, чтобы элементы W
в конкретном классе суммируют до априорной вероятности того класса.
Типы данных: double
X
— ПредикторыЭто свойство доступно только для чтения.
Предикторы раньше обучали модель в виде числовой матрицы или таблицу.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Типы данных: single
| double
| table
Y
— Метки классаЭто свойство доступно только для чтения.
Метки класса раньше обучали модель в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. Y
имеет совпадающий тип данных, когда переменная отклика раньше обучала модель. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Каждая строка Y
представляет наблюдаемую классификацию соответствующей строки X
.
Типы данных: single
| double
| logical
| char
| cell
| categorical
CompactClassificationGAM
compact | Уменьшайте размер модели машинного обучения |
ClassificationPartitionedGAM
crossval | Перекрестный подтвердите модель машинного обучения |
addInteractions | Добавьте периоды взаимодействия в одномерную обобщенную аддитивную модель (GAM) |
resume | Возобновите обучение обобщенной аддитивной модели (GAM) |
lime | Локальные поддающиеся толкованию объяснения модели агностические (LIME) |
partialDependence | Вычислите частичную зависимость |
plotLocalEffects | Постройте локальные эффекты условий в обобщенной аддитивной модели (GAM) |
plotPartialDependence | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
shapley | Шепли оценивает |
resubPredict | Классифицируйте обучающие данные с помощью обученного классификатора |
resubLoss | Потеря классификации перезамены |
resubMargin | Поле классификации перезамены |
resubEdge | Ребро классификации перезамены |
compareHoldout | Сравните точность двух моделей классификации с помощью новых данных |
testckfold | Сравните точность двух моделей классификации повторной перекрестной проверкой |
Обучите одномерную обобщенную аддитивную модель, которая содержит линейные члены для предикторов. Затем интерпретируйте предсказание для заданного экземпляра данных при помощи plotLocalEffects
функция.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, любой плохо ('b'
) или хороший ('g'
).
load ionosphere
Обучите одномерный GAM, который идентифицирует, плох ли радарный возврат ('b'
) или хороший ('g'
).
Mdl = fitcgam(X,Y)
Mdl = ClassificationGAM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'logit' Intercept: 2.2715 NumObservations: 351 Properties, Methods
Mdl
ClassificationGAM
объект модели. Отображение модели показывает частичный список свойств модели. Чтобы просмотреть полный список свойств, дважды кликните имя переменной Mdl
в Рабочей области. Редактор Переменных открывается для Mdl
. В качестве альтернативы можно отобразить свойства в Командном окне при помощи записи через точку. Например, отобразите порядок класса Mdl
.
classOrder = Mdl.ClassNames
classOrder = 2x1 cell
{'b'}
{'g'}
Классифицируйте первое наблюдение за обучающими данными и постройте локальные эффекты условий в Mdl
на предсказании.
label = predict(Mdl,X(1,:))
label = 1x1 cell array
{'g'}
plotLocalEffects(Mdl,X(1,:))
predict
функция классифицирует первое наблюдение X(1,:)
как 'g'
. plotLocalEffects
функция создает горизонтальный столбчатый график, который показывает локальные эффекты 10 самых важных условий на предсказании. Каждое локальное значение эффекта показывает вклад каждого термина к классификационной оценке для 'g'
, который является логитом апостериорной вероятности, что классификацией является 'g'
для наблюдения.
Обучите обобщенную аддитивную модель, которая содержит линейные члены и периоды взаимодействия для предикторов тремя различными способами:
Задайте периоды взаимодействия с помощью formula
входной параметр.
Задайте 'Interactions'
аргумент значения имени.
Создайте модель с линейными членами сначала и добавьте периоды взаимодействия в модель при помощи addInteractions
функция.
Загрузите ирисовый набор данных Фишера. Составьте таблицу, которая содержит наблюдения для versicolor и virginica.
load fisheriris inds = strcmp(species,'versicolor') | strcmp(species,'virginica'); tbl = array2table(meas(inds,:),'VariableNames',["x1","x2","x3","x4"]); tbl.Y = species(inds,:);
Задайте formula
Обучите GAM, который содержит эти четыре линейных члена (x1
x2
, x3
, и x4
) и два периода взаимодействия (x1*x2
и x2*x3
). Задайте условия с помощью формулы в форме 'Y ~ terms'
.
Mdl1 = fitcgam(tbl,'Y ~ x1 + x2 + x3 + x4 + x1:x2 + x2:x3');
Функция добавляет периоды взаимодействия в модель в порядке важности. Можно использовать Interactions
свойство проверять периоды взаимодействия в модель и порядок, в который fitcgam
добавляет их в модель. Отобразите Interactions
свойство.
Mdl1.Interactions
ans = 2×2
2 3
1 2
Каждая строка Interactions
представляет один период взаимодействия и содержит индексы столбца переменных предикторов в течение периода взаимодействия.
Задайте 'Interactions'
Передайте обучающие данные (tbl
) и имя переменной отклика в tbl
к fitcgam
, так, чтобы функция включала линейные члены для всех других переменных как предикторы. Задайте 'Interactions'
аргумент значения имени с помощью логической матрицы, чтобы включать эти два периода взаимодействия, x1*x2
и x2*x3
.
Mdl2 = fitcgam(tbl,'Y','Interactions',logical([1 1 0 0; 0 1 1 0])); Mdl2.Interactions
ans = 2×2
2 3
1 2
Можно также задать 'Interactions'
как номер периодов взаимодействия или как 'all'
включать все доступные периоды взаимодействия. Среди заданных периодов взаимодействия, fitcgam
идентифицирует тех, p-значения которых не больше 'MaxPValue'
значение и добавляет их в модель. 'MaxPValue'
по умолчанию 1 так, чтобы функция добавила все заданные периоды взаимодействия в модель.
Задайте 'Interactions','all'
и набор 'MaxPValue'
аргумент значения имени к 0,01.
Mdl3 = fitcgam(tbl,'Y','Interactions','all','MaxPValue',0.01); Mdl3.Interactions
ans = 5×2
3 4
2 4
1 4
2 3
1 3
Mdl3
включает пять из шести доступных пар периодов взаимодействия.
Используйте addInteractions
Функция
Обучите одномерный GAM, который содержит линейные члены для предикторов, и затем добавьте периоды взаимодействия в обученную модель при помощи addInteractions
функция. Задайте второй входной параметр addInteractions
таким же образом вы задаете 'Interactions'
аргумент значения имени fitcgam
. Можно задать список периодов взаимодействия с помощью логической матрицы, номера периодов взаимодействия или 'all'
.
Задайте номер периодов взаимодействия как 5, чтобы добавить пять самых важных периодов взаимодействия в обученную модель.
Mdl4 = fitcgam(tbl,'Y');
UpdatedMdl4 = addInteractions(Mdl4,5);
UpdatedMdl4.Interactions
ans = 5×2
3 4
2 4
1 4
2 3
1 3
Mdl4
одномерный GAM и UpdatedMdl4
обновленный GAM, который содержит все условия в Mdl4
и пять дополнительных периодов взаимодействия.
Обучите одномерную классификацию GAM (который содержит только линейные члены) для небольшого количества итераций. После обучения модель для большего количества итераций сравните потерю перезамены.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, любой плохо ('b'
) или хороший ('g'
).
load ionosphere
Обучите одномерный GAM, который идентифицирует, плох ли радарный возврат ('b'
) или хороший ('g'
). Задайте количество деревьев на линейный член как 2. fitcgam
выполняет итерации повышающего алгоритма для конкретного количества итераций. Для каждой повышающей итерации функция добавляет одно дерево на линейный член. Задайте 'Verbose'
как 2, чтобы отобразить диагностические сообщения в каждой итерации.
Mdl = fitcgam(X,Y,'NumTreesPerPredictor',2,'Verbose',2);
|========================================================| | Type | NumTrees | Deviance | RelTol | LearnRate | |========================================================| | 1D| 0| 486.59| - | - | | 1D| 1| 166.71| Inf| 1| | 1D| 2| 78.336| 0.58205| 1|
Проверять ли fitcgam
обучает конкретное количество деревьев, отобразите ReasonForTermination
свойство обученной модели и представления отображенное сообщение.
Mdl.ReasonForTermination
ans = struct with fields:
PredictorTrees: 'Terminated after training the requested number of trees.'
InteractionTrees: ''
Вычислите потерю классификации для обучающих данных.
resubLoss(Mdl)
ans = 0.0142
Возобновите обучение модель еще для 100 итераций. Поскольку Mdl
содержит только линейные члены, resume
функционируйте возобновляет обучение линейным членам и добавляет больше деревьев для них (деревья предиктора). Задайте 'Verbose'
и 'NumPrint'
отобразить диагностические сообщения в каждых 10 итерациях.
UpdatedMdl = resume(Mdl,100,'Verbose',1,'NumPrint',10);
|========================================================| | Type | NumTrees | Deviance | RelTol | LearnRate | |========================================================| | 1D| 0| 78.336| - | - | | 1D| 1| 38.364| 0.17429| 1| | 1D| 10| 0.16311| 0.011894| 1| | 1D| 20| 0.00035693| 0.0025178| 1| | 1D| 30| 8.1191e-07| 0.0011006| 1| | 1D| 40| 1.7978e-09| 0.00074607| 1| | 1D| 50| 3.6113e-12| 0.00034404| 1| | 1D| 60| 1.7497e-13| 0.00016541| 1|
UpdatedMdl.ReasonForTermination
ans = struct with fields:
PredictorTrees: 'Unable to improve the model fit.'
InteractionTrees: ''
resume
отключает обучение, когда добавление большего количества деревьев не улучшает отклонение подгонки модели.
Вычислите потерю классификации с помощью обновленной модели.
resubLoss(UpdatedMdl)
ans = 0
Уменьшения классификации потерь после resume
обновляет модель с большим количеством итераций.
Обобщенная аддитивная модель (GAM) является поддающейся толкованию моделью, которая объясняет баллы класса (логит вероятностей класса) использование суммы одномерных и двумерных функций формы предикторов.
fitcgam
использует повышенное дерево в качестве функции формы для каждого предиктора и, опционально, каждой пары предикторов; поэтому, функция может получить нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы к предсказанию (классификационная оценка) хорошо разделяются, модель легко интерпретировать.
Стандартный GAM использует одномерную функцию формы для каждого предиктора.
где y является переменной отклика, которая следует за биномиальным распределением с вероятностью успеха (вероятность положительного класса) μ в наблюдениях n. g (μ) является функцией ссылки логита, и c является точкой пересечения (постоянный) термин. fi (xi) является одномерной функцией формы для i th предиктор, который является повышенным деревом для линейного члена для предиктора (дерево предиктора).
Можно включать взаимодействия между предикторами в модели путем добавления двумерных функций формы важных периодов взаимодействия к модели.
где fij (xi xj) является двумерной функцией формы для i th и j th предикторы, который является повышенным деревом в течение периода взаимодействия для предикторов (дерево взаимодействия).
fitcgam
находит важные периоды взаимодействия на основе p - значения F - тесты. Для получения дополнительной информации смотрите Обнаружение Периода взаимодействия.
[1] Лу, Инь, Рич Каруана и Джоханнс Джехрк. "Понятные Модели для Классификации и Регрессии". Продолжения 18-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных (KDD ’12). Пекин, Китай: Нажатие ACM, 2012, стр 150–158.
[2] Лу, Инь, Рич Каруана, Джоханнс Джехрк и Джайлс Хукер. "Точные Понятные Модели с Попарными Взаимодействиями". Продолжения 19-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных (KDD ’13) Чикаго, Иллинойс, США: Нажатие ACM, 2013, стр 623–631.
addInteractions
| ClassificationPartitionedGAM
| CompactClassificationGAM
| fitcgam
| resume
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.