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