Классификационные поля для обобщенной аддитивной модели (GAM)
возвращает поле классификации (m = margin(Mdl,Tbl,ResponseVarName)m) для обобщенной аддитивной модели Mdl использование данных предиктора в Tbl и метки истинного класса в Tbl.ResponseVarName.
m возвращается в виде вектора числового столбца n-by-1, где n - количество наблюдений в данных предиктора.
указывает, следует ли включать в вычисления элементы взаимодействия. Можно указать m = margin(___,'IncludeInteractions',includeInteractions)includeInteractions в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах.
Оценка полей классификации тестового образца и края обобщенной аддитивной модели. Поля тестовой выборки представляют собой наблюдаемые оценки истинного класса минус оценки ложного класса, а край тестовой выборки представляет собой среднее значение полей.
Загрузить fisheriris набор данных. Создать X в качестве числовой матрицы, которая содержит два сепальных и два лепестковых измерения для versicolor и virginica ирисов. Создать 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
Поле классификации для двоичной классификации является для каждого наблюдения разницей между оценкой классификации для истинного класса и оценкой классификации для ложного класса.
Если поля находятся на одной шкале (то есть значения баллов основаны на одном и том же преобразовании баллов), то они служат в качестве показателя достоверности классификации. Среди нескольких классификаторов лучше те, которые дают большую маржу.
edge | loss | predict | resubMargin
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.