Классификационные потери для обобщенной аддитивной модели (GAM)
возвращает классификационные потери (L = loss(Mdl,Tbl,ResponseVarName)L), скаляр, представляющий как хорошо обобщенная аддитивная модель Mdl классифицирует данные предиктора в Tbl по сравнению с истинными метками классов в Tbl.ResponseVarName.
Толкование L зависит от функции потерь ('LossFun') и схемы взвешивания ('Weights'). В целом лучшие классификаторы дают меньшие значения классификационных потерь. Значение по умолчанию 'LossFun' значение 'classiferror' (коэффициент неправильной классификации в десятичном числе).
задает опции, использующие один или несколько аргументов имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера, L = loss(___,Name,Value)'LossFun','mincost' устанавливает функцию потерь на минимальную ожидаемую функцию затрат на неправильную классификацию.
Определите ошибку классификации (потерю) тестовой выборки обобщенной аддитивной модели. Когда вы сравниваете один и тот же тип потерь среди многих моделей, более низкая потеря указывает на лучшую прогнозирующую модель.
Загрузите 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 с помощью предикторов XTrain и метки классов YTrain. Рекомендуемая практика состоит в том, чтобы задать имена классов.
Mdl = fitcgam(XTrain,YTrain,'ClassNames',{'b','g'});
Mdl является ClassificationGAM объект модели.
Определите, насколько хорошо алгоритм обобщается, оценив ошибку классификации тестовой выборки. По умолчанию в loss функция ClassificationGAM считает ошибку классификации при помощи 'classiferror' потеря (коэффициент неправильной классификации в десятичных числах).
L = loss(Mdl,XTest,YTest)
L = 0.1052
Обученный классификатор неправильно классифицирует приблизительно 11% тестовой выборки.
Обучите обобщенную аддитивную модель (GAM), которая содержит как линейные, так и условия взаимодействия для предикторов, и оцените классификационные потери с терминами взаимодействия и без. Укажите, включать ли условия взаимодействия при оценке потерь классификации для обучающих и тестовых данных.
Загрузите ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b') или хорошо ('g').
load ionosphereРазделите набор данных на два набора: один, содержащий обучающие данные, и другой, содержащий новые, незащищенные тестовые данные. Резервируйте 50 наблюдений для нового набора тестовых данных.
rng('default') % For reproducibility n = size(X,1); newInds = randsample(n,50); inds = ~ismember(1:n,newInds); XNew = X(newInds,:); YNew = Y(newInds);
Обучите GAM с помощью предикторов X и метки классов Y. Рекомендуемая практика состоит в том, чтобы задать имена классов. Укажите, чтобы включить 10 наиболее важных условий взаимодействия.
Mdl = fitcgam(X(inds,:),Y(inds),'ClassNames',{'b','g'},'Interactions',10)
Mdl =
ClassificationGAM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'logit'
Intercept: 2.0026
Interactions: [10x2 double]
NumObservations: 301
Properties, Methods
Mdl является ClassificationGAM объект модели.
Вычислите потери классификации реституции как с терминами взаимодействия, так и без них в Mdl. Чтобы исключить условия взаимодействия, задайте 'IncludeInteractions',false.
resubl = resubLoss(Mdl)
resubl = 0
resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)resubl_nointeraction = 0
Оцените классификационные потери как с терминами взаимодействия, так и без них в Mdl.
l = loss(Mdl,XNew,YNew)
l = 0.0615
l_nointeraction = loss(Mdl,XNew,YNew,'IncludeInteractions',false)l_nointeraction = 0.0615
Включение условий взаимодействия не меняет классификационные потери для Mdl. Обученная модель правильно классифицирует все обучающие выборки и неправильно классифицирует приблизительно 6% тестовых выборок.
Mdl - Обобщенная аддитивная модельClassificationGAM объект модели | CompactClassificationGAM объект моделиОбобщенная аддитивная модель, заданная как ClassificationGAM или CompactClassificationGAM объект модели.
Tbl - Выборочные данныеВыборочные данные, заданный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Tbl должны содержать все предикторы, используемые для обучения Mdl. Опционально Tbl может содержать столбец для переменной отклика и столбец для весов наблюдений.
Переменная отклика должна иметь совпадающий тип данных что и Mdl.Y. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.) Если переменная отклика в Tbl имеет то же имя что и переменная отклика, используемая для обучения Mdl, тогда вам не нужно указывать ResponseVarName.
Значения веса должны быть числовым вектором. Необходимо задать веса наблюдений в Tbl при помощи 'Weights'.
Если вы тренировались Mdl используя выборочные данные, содержащуюся в таблице, затем входные данные для loss также должно быть в таблице.
Типы данных: 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 использование выборочных данных, содержащихся в матрице, затем входных данных для loss должно быть также в матрице.
Типы данных: 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
'LossFun' - Функция потерь'classiferror' (по умолчанию) | 'binodeviance' | 'exponential' | 'hinge' | 'logit' | 'mincost' | 'quadratic' | указатель на функциюФункция потерь, заданная как встроенное имя функции потерь или указатель на функцию.
В этой таблице перечислены доступные функции потерь. Задайте один с помощью соответствующего вектора символов или строкового скаляра.
| Значение | Описание |
|---|---|
'binodeviance' | Биномиальное отклонение |
'classiferror' | Неверно классифицированный коэффициент в десятичных числах |
'exponential' | Экспоненциальные потери |
'hinge' | Потеря шарнира |
'logit' | Логистические потери |
'mincost' | Минимальные ожидаемые затраты на неправильную классификацию (для классификационных оценок, которые являются апостериорными вероятностями) |
'quadratic' | Квадратичные потери |
Для получения дополнительной информации о функциях потерь смотрите Классификационные потери.
Чтобы задать пользовательскую функцию потерь, используйте обозначение указателя на функцию. Функция должна иметь следующую форму:
lossvalue = lossfun(C,S,W,Cost)
Выходной аргумент lossvalue является скаляром.
Вы задаете имя функции (lossfun).
C является n-by- K логическая матрица с строками, указывающими класс, к которому принадлежит соответствующее наблюдение. n количество наблюдений в Tbl или X, и K - количество различных классов (numel(Mdl.ClassNames). Порядок столбцов соответствует порядку классов в Mdl.ClassNames. Создание C путем установки C(p,q) = 1, если наблюдение p находится в q классов, для каждой строки. Установите все другие элементы строки p на 0.
S является n-by- K числовая матрица классификационных оценок. Порядок столбцов соответствует порядку классов в Mdl.ClassNames. S является матрицей классификационных оценок, подобной выходным данным predict.
W является n-by-1 числовой вектор весов наблюдений.
Cost является K-by- K числовая матрица затрат на неправильную классификацию. Для примера, Cost = ones(K) – eye(K) задает стоимость 0 для правильной классификации и 1 для неправильной классификации.
Пример: 'LossFun','binodeviance'
Типы данных: char | string | function_handle
'Weights' - Веса наблюденийones(size(X,1),1) (по умолчанию) | вектор скалярных значений | имя переменной в TblВеса наблюдений, заданные как вектор скалярных значений или имя переменной в Tbl. Программа взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк в X или Tbl.
Если вы задаете входные данные как таблицу Tbl, затем Weights может быть именем переменной в Tbl который содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или строковый скаляр. Для примера, если вектор весов W хранится в Tbl.W, затем укажите его следующим 'W'.
loss нормализует веса в каждом классе, чтобы суммировать значение предыдущей вероятности соответствующего класса.
Типы данных: single | double | char | string
Classification loss функции измеряют прогнозирующую неточность классификационных моделей. Когда вы сравниваете один и тот же тип потерь среди многих моделей, более низкая потеря указывает на лучшую прогнозирующую модель.
Предположим следующее:
L - средневзвешенные классификационные потери.
n - размер выборки.
yj - наблюдаемая метка класса. Программное обеспечение кодирует его как -1 или 1, указывая на отрицательный или положительный класс (или первый или второй класс в ClassNames свойство), соответственно.
f (Xj) является баллом классификации положительного класса для j наблюдений (строка) X данных предиктора.
mj = yj f (Xj) является классификационной оценкой для классификации j наблюдений в класс, относящийся к yj. Положительные значения mj указывают на правильную классификацию и не вносят большой вклад в средние потери. Отрицательные значения mj указывают на неправильную классификацию и вносят значительный вклад в среднюю потерю.
Вес для j наблюдения wj. Программа нормализует веса наблюдений так, чтобы они суммировались с соответствующей вероятностью предыдущего класса. Программное обеспечение также нормализует предыдущие вероятности, так что они равны 1. Поэтому,
В этой таблице описываются поддерживаемые функции потерь, которые можно задать с помощью 'LossFun' аргумент имя-значение.
| Функция потерь | Значение LossFun | Уравнение |
|---|---|---|
| Биномиальное отклонение | 'binodeviance' | |
| Экспоненциальные потери | 'exponential' | |
| Неверно классифицированный коэффициент в десятичных числах | 'classiferror' | - метка класса, соответствующая классу с максимальным счетом. I {·} является функцией индикации. |
| Потеря шарнира | 'hinge' | |
| Логит потеря | 'logit' | |
| Минимальные ожидаемые затраты на неправильную классификацию | 'mincost' |
Программа вычисляет взвешенные минимальные ожидаемые затраты классификации, используя эту процедуру для наблюдений j = 1,..., n.
Взвешенное среднее значение минимальных ожидаемых потерь от неправильной классификации Если вы используете матрицу затрат по умолчанию (значение элемента которой 0 для правильной классификации и 1 для неправильной классификации), то |
| Квадратичные потери | 'quadratic' |
Этот рисунок сравнивает функции потерь (кроме 'mincost') по счету m для одного наблюдения. Некоторые функции нормированы, чтобы пройти через точку (0,1).

У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.