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