Классификационные поля для обобщенной аддитивной модели (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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.