Ребро классификации для обобщенной аддитивной модели (GAM)
возвращает Ребро Классификации (e
= edge(Mdl
,Tbl
,ResponseVarName
)e
) для обобщенной аддитивной модели Mdl
использование данных о предикторе в Tbl
и истинный класс помечает в Tbl.ResponseVarName
.
задает опции с помощью одних или нескольких аргументов name-value в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать веса наблюдения и включать ли периоды взаимодействия в расчеты.e
= edge(___,Name,Value
)
Оцените тестовые поля классификации выборок и ребро обобщенной аддитивной модели. Тестовые демонстрационные поля являются наблюдаемыми истинными баллами класса минус ложные баллы класса, и тестовое демонстрационное ребро является средним значением полей.
Загрузите fisheriris
набор данных. Создайте X
как числовая матрица, которая содержит два чашелистика и два лепестковых измерения для ирисовых диафрагм virginica и versicolor. Создайте 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
как числовая матрица, которая содержит два чашелистика и два лепестковых измерения для ирисовых диафрагм virginica и versicolor. Создайте 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
Типы данных: логический
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.