Классификационные поля для обобщенной аддитивной модели (GAM)
возвращает классификационное поле (m
= margin(Mdl
,Tbl
,ResponseVarName
)m
) для обобщенной аддитивной модели Mdl
использование данных предиктора в Tbl
и истинные метки классов в Tbl.ResponseVarName
.
m
возвращается как n-на-1 числовой вектор-столбец, где n - количество наблюдений в данных предиктора.
задает, включать ли термины взаимодействия в расчеты. Можно задать m
= margin(___,'IncludeInteractions',includeInteractions
)includeInteractions
в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах.
Оцените поля классификации тестовой выборки и ребро обобщенной аддитивной модели. Поля тестовой выборки являются наблюдаемыми счетами истинного класса минус счетов ложного класса, и ребро тестовой выборки является средним значением полей.
Загрузите fisheriris
набор данных. Создание X
как числовая матрица, которая содержит два сепальных и два лепестковых измерения для versicolor и virginica irises. Создание Y
как массив ячеек из векторов символов, который содержит соответствующие виды радужной оболочки.
load fisheriris inds = strcmp(species,'versicolor') | strcmp(species,'virginica'); X = meas(inds,:); Y = species(inds,:);
Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор с расслоением, используя информацию о классе в Y
. Укажите 30% -ная выборка удержания для проверки.
rng('default') % For reproducibility cv = cvpartition(Y,'HoldOut',0.30);
Извлеките индексы обучения и тестирования.
trainInds = training(cv); testInds = test(cv);
Укажите наборы обучающих и тестовых данных.
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
Обучите GAM с помощью предикторов XTrain
и метки классов YTrain
. Рекомендуемая практика состоит в том, чтобы задать имена классов.
Mdl = fitcgam(XTrain,YTrain,'ClassNames',{'versicolor','virginica'});
Mdl
является ClassificationGAM
объект модели.
Оцените поля классификации тестовой выборки и ребро.
m = margin(Mdl,XTest,YTest); e = edge(Mdl,XTest,YTest)
e = 0.8000
Отобразите гистограмму полей классификации тестовых выборок.
histogram(m,length(unique(m)),'Normalization','probability') xlabel('Test Sample Margins') ylabel('Probability') title('Probability Distribution of the Test Sample Margins')
Сравнение GAM с линейными терминами к GAM с линейными терминами и терминами взаимодействия путем исследования полей тестовой выборки и ребра. Основываясь исключительно на этом сравнении, классификатор с самыми высокими полями и ребром является лучшей моделью.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор с расслоением, используя информацию о классе в Y
. Укажите 30% -ная выборка удержания для проверки.
rng('default') % For reproducibility cv = cvpartition(Y,'Holdout',0.30);
Извлеките индексы обучения и тестирования.
trainInds = training(cv); testInds = test(cv);
Укажите наборы обучающих и тестовых данных.
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
Обучите GAM, который содержит как линейные, так и условия взаимодействия для предикторов. Задайте, чтобы включить все доступные условия взаимодействия, значения p которых не более 0,05.
Mdl = fitcgam(XTrain,YTrain,'Interactions','all','MaxPValue',0.05)
Mdl = ClassificationGAM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'logit' Intercept: 3.0398 Interactions: [561x2 double] NumObservations: 246 Properties, Methods
Mdl
является ClassificationGAM
объект модели. Mdl
включает все доступные условия взаимодействия.
Оцените поля тестовой выборки и ребро для Mdl
.
M = margin(Mdl,XTest,YTest); E = edge(Mdl,XTest,YTest)
E = 0.7848
Оцените поля тестовой выборки и ребро для Mdl
без включения условий взаимодействия.
M_nointeractions = margin(Mdl,XTest,YTest,'IncludeInteractions',false); E_nointeractions = edge(Mdl,XTest,YTest,'IncludeInteractions',false)
E_nointeractions = 0.7871
Отображение распределений полей с помощью прямоугольных графиков.
boxplot([M M_nointeractions],'Labels',{'Linear and Interaction Terms','Linear Terms Only'}) title('Box Plots of Test Sample Margins')
Поля M
и M_nointeractions
имеют аналогичное распределение, но тестовое ребро выборки классификатора с только линейными терминами больше. Предпочтительными являются классификаторы, которые дают относительно большие запасы.
Mdl
- Обобщенная аддитивная модельClassificationGAM
объект модели | CompactClassificationGAM
объект моделиОбобщенная аддитивная модель, заданная как ClassificationGAM
или CompactClassificationGAM
объект модели.
Tbl
- Выборочные данныеВыборочные данные, заданный как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Tbl
должны содержать все предикторы, используемые для обучения Mdl
. Опционально Tbl
может содержать столбец для переменной отклика и столбец для весов наблюдений.
Переменная отклика должна иметь совпадающий тип данных что и Mdl.Y
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.) Если переменная отклика в Tbl
имеет то же имя что и переменная отклика, используемая для обучения Mdl
, тогда вам не нужно указывать ResponseVarName
.
Значения веса должны быть числовым вектором. Необходимо задать веса наблюдений в Tbl
при помощи 'Weights'
.
Если вы тренировались Mdl
используя выборочные данные, содержащуюся в таблице, затем входные данные для margin
также должно быть в таблице.
Типы данных: table
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как вектор символов или строковый скаляр, содержащий имя переменной отклика в Tbl
. Для примера, если переменная отклика Y
хранится в Tbl.Y
, затем укажите его следующим 'Y'
.
Типы данных: char
| string
Y
- Метки классовМетки класса, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов. Каждая строка Y
представляет классификацию соответствующей строки X
или Tbl
.
Y
должны иметь тот совпадающий тип данных, что и Mdl.Y
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Типы данных: single
| double
| categorical
| logical
| char
| string
| cell
X
- Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора.
Если вы тренировались Mdl
использование выборочных данных, содержащихся в матрице, затем входных данных для margin
должно быть также в матрице.
Типы данных: single
| double
includeInteractions
- Флаг для включения условий взаимодействияtrue
| false
Флаг для включения условий взаимодействия модели, заданный как true
или false
.
Значение по умолчанию includeInteractions
значение true
если Mdl
содержит условия взаимодействия. Значение должно быть false
если модель не содержит членов взаимодействия.
Типы данных: logical
Для каждого наблюдения classification margin двоичной классификации является различие между классификационной оценкой для истинного класса и классификационной оценкой для ложного класса.
Если поля находятся на одной и той же шкале (то есть значения баллов основаны на том же счете преобразовании), то они служат классификацией доверия мерой. Среди нескольких классификаторов лучше те, которые дают большую маржу.
edge
| loss
| predict
| resubMargin
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.