Классификационные ребра для обобщенной аддитивной модели (GAM)
возвращает классификационное ребро (e
= edge(Mdl
,Tbl
,ResponseVarName
)e
) для обобщенной аддитивной модели Mdl
использование данных предиктора в Tbl
и истинные метки классов в Tbl.ResponseVarName
.
задает опции, использующие один или несколько аргументов имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно задать веса наблюдений и включать ли условия взаимодействия в расчеты.e
= edge(___,Name,Value
)
Оцените поля классификации тестовой выборки и ребро обобщенной аддитивной модели. Поля тестовой выборки являются наблюдаемыми счетами истинного класса минус счетов ложного класса, и ребро тестовой выборки является средним значением полей.
Загрузите 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')
Оцените взвешенное ребро тестовой выборки (взвешенную средним значением полей) обобщенной аддитивной модели.
Загрузите fisheriris
набор данных. Создание X
как числовая матрица, которая содержит два сепальных и два лепестковых измерения для versicolor и virginica irises. Создание Y
как массив ячеек из векторов символов, который содержит соответствующие виды радужной оболочки.
load fisheriris idx1 = strcmp(species,'versicolor') | strcmp(species,'virginica'); X = meas(idx1,:); Y = species(idx1,:);
Предположим, что качество некоторых измерений ниже, потому что они были измерены с помощью старой технологии. Чтобы симулировать этот эффект, добавьте шум к случайному подмножеству из 20 измерений.
rng('default') % For reproducibility idx2 = randperm(size(X,1),20); X(idx2,:) = X(idx2,:) + 2*randn(20,size(X,2));
Случайным образом разбейте наблюдения на набор обучающих данных и тестовый набор с расслоением, используя информацию о классе в Y
. Укажите 30% -ная выборка удержания для проверки.
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
объект модели.
Оцените ребро тестовой выборки.
e = edge(Mdl,XTest,YTest)
e = 0.8000
Средний запас составляет приблизительно 0,80.
Один из способов уменьшить эффект шумных измерений - назначить им меньше веса, чем другим наблюдениям. Задайте вектор веса, который дает наблюдениям более высокого качества в два раза больше, чем другим наблюдениям.
n = size(X,1); weights = ones(size(X,1),1); weights(idx2) = 0.5; weightsTrain = weights(trainInds); weightsTest = weights(testInds);
Обучите GAM с помощью предикторов XTrain
, метки классов YTrain
, и веса weightsTrain
.
Mdl_W = fitcgam(XTrain,YTrain,'Weights',weightsTrain,... 'ClassNames',{'versicolor','virginica'});
Оцените взвешенное ребро тестовой выборки с помощью схемы взвешивания.
e_W = edge(Mdl_W,XTest,YTest,'Weights',weightsTest)
e_W = 0.8770
Средневзвешенная маржа составляет приблизительно 0,88. Этот результат указывает, что в среднем метки из взвешенных меток классификатора имеют более высокое доверие.
Сравнение 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
используя выборочные данные, содержащуюся в таблице, затем входные данные для edge
также должно быть в таблице.
Типы данных: 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
использование выборочных данных, содержащихся в матрице, затем входных данных для edge
должно быть также в матрице.
Типы данных: single
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'IncludeInteractions',false,'Weights',w
задает, чтобы исключить условия взаимодействия из модели и использовать веса наблюдений w
.'IncludeInteractions'
- Флаг для включения условий взаимодействияtrue
| false
Флаг для включения условий взаимодействия модели, заданный как true
или false
.
Значение по умолчанию 'IncludeInteractions'
значение true
если Mdl
содержит условия взаимодействия. Значение должно быть false
если модель не содержит членов взаимодействия.
Пример: 'IncludeInteractions',false
Типы данных: logical
'Weights'
- Веса наблюденийones(size(X,1),1)
(по умолчанию) | вектор скалярных значений | имя переменной в Tbl
Веса наблюдений, заданные как вектор скалярных значений или имя переменной в Tbl
. Программа взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должно равняться количеству строк в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть именем переменной в Tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Для примера, если вектор весов W
хранится в Tbl.W
, затем укажите его следующим 'W'
.
edge
нормализует веса в каждом классе, чтобы суммировать значение предыдущей вероятности соответствующего класса.
Типы данных: single
| double
| char
| string
Это classification edge - средневзвешенное значение классификационных полей.
Один из способов выбрать один из нескольких классификаторов, например, для выбора признаков, - выбрать классификатор, который дает наибольшее ребро.
Для каждого наблюдения classification margin двоичной классификации является различие между классификационной оценкой для истинного класса и классификационной оценкой для ложного класса.
Если поля находятся на одной и той же шкале (то есть значения баллов основаны на том же счете преобразовании), то они служат классификацией доверия мерой. Среди нескольких классификаторов лучше те, которые дают большую маржу.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.