Классификационные потери для перекрестно проверенной модели классификации ядра
возвращает классификационные потери, полученные с помощью перекрестно проверенной, бинарной модели ядра (loss
= kfoldLoss(CVMdl
)ClassificationPartitionedKernel
) CVMdl
. Для каждой складки, kfoldLoss
вычисляет классификационные потери для наблюдений с сгибом при валидации с использованием модели, обученной наблюдениям с сгибом при обучении.
По умолчанию, kfoldLoss
возвращает ошибку классификации.
возвращает потери классификации с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Для примера задайте функцию классификации потерь, количество складок или уровень агрегации.loss
= kfoldLoss(CVMdl
,Name,Value
)
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, которые помечены как плохие ('b'
) или хорошо ('g'
).
load ionosphere
Перекрестная валидация модели классификации двоичных ядер с помощью данных.
CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = ClassificationPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVMdl
является ClassificationPartitionedKernel
модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную валидацию. Чтобы задать другое количество складок, используйте 'KFold'
аргумент пары "имя-значение" вместо 'Crossval'
.
Оцените перекрестно проверенные классификационные потери. По умолчанию программа вычисляет ошибку классификации.
loss = kfoldLoss(CVMdl)
loss = 0.0940
Кроме того, можно получить ошибки классификации в относительных единицах путем определения пары "имя-значение" 'Mode','individual'
в kfoldLoss
.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, которые помечены как плохие ('b'
) или хорошо ('g'
).
load ionosphere
Перекрестная валидация модели классификации двоичных ядер с помощью данных.
CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = ClassificationPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVMdl
является ClassificationPartitionedKernel
модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную валидацию. Чтобы задать другое количество складок, используйте 'KFold'
аргумент пары "имя-значение" вместо 'Crossval'
.
Создайте анонимную функцию, которая измеряет линейные потери, то есть
- вес для наблюдения j, является ответом j (-1 для отрицательного класса и 1 в противном случае), и - необработанная классификационная оценка наблюдения j.
linearloss = @(C,S,W,Cost)sum(-W.*sum(S.*C,2))/sum(W);
Пользовательские функции потерь должны быть записаны в конкретную форму. Правила записи пользовательской функции потерь см. в 'LossFun'
аргумент пары "имя-значение".
Оцените перекрестно проверенные классификационные потери с помощью функции линейных потерь.
loss = kfoldLoss(CVMdl,'LossFun',linearloss)
loss = -0.7792
CVMdl
- Перекрестно проверенная, двоичная модель классификации ядраClassificationPartitionedKernel
объект моделиПерекрестно проверенная, двоичная модель классификации ядра, заданная как ClassificationPartitionedKernel
объект модели. Можно создать ClassificationPartitionedKernel
моделировать при помощи fitckernel
и определение любого из аргументов пары "имя-значение" перекрестной проверки.
Чтобы получить оценки, kfoldLoss
применяет те же данные, что и для перекрестной проверки модели классификации ядра (X
и Y
).
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
kfoldLoss(CVMdl,'Folds',[1 3 5])
задает использование только первой, третьей и пятой складок для вычисления классификационных потерь.'Folds'
- Складывайте индексы для предсказания1:CVMdl.KFold
(по умолчанию) | числовой вектор положительных целых чиселИндексы сгиба для предсказания, заданные как разделенная разделенными запятой парами, состоящая из 'Folds'
и числовой вектор положительных целых чисел. Элементы Folds
должен находиться в области значений от 1
на CVMdl.KFold
.
Программа использует только складки, указанные в Folds
для предсказания.
Пример: 'Folds',[1 4 10]
Типы данных: single
| double
'LossFun'
- Функция потерь'classiferror'
(по умолчанию) | 'binodeviance'
| 'exponential'
| 'hinge'
| 'logit'
| 'mincost'
| 'quadratic'
| указатель на функциюФункция потерь, заданная как разделенная разделенными запятой парами, состоящая из 'LossFun'
и встроенное имя функции потерь или указатель на функцию.
В этой таблице перечислены доступные функции потерь. Задайте единицу, используя соответствующее ей значение.
Значение | Описание |
---|---|
'binodeviance' | Биномиальное отклонение |
'classiferror' | Неверно классифицированный коэффициент в десятичных числах |
'exponential' | Экспоненциальные потери |
'hinge' | Потеря шарнира |
'logit' | Логистические потери |
'mincost' | Минимальные ожидаемые затраты на неправильную классификацию (для классификационных оценок, которые являются апостериорными вероятностями) |
'quadratic' | Квадратичные потери |
'mincost'
подходит для классификационных оценок, которые являются апостериорными вероятностями. Для моделей классификации ядра учащиеся логистической регрессии возвращают апостериорные вероятности классификационных оценок как по умолчанию, но ученики SVM этого не делают (см. kfoldPredict
).
Задайте свою собственную функцию при помощи обозначения указателя на функцию.
Предположим, что n
количество наблюдений в X
, и K
- количество различных классов (numel(CVMdl.ClassNames)
, где CVMdl
является вход моделью). Ваша функция должна иметь эту подпись:
lossvalue = lossfun
(C,S,W,Cost)
Выходной аргумент lossvalue
является скаляром.
Вы задаете имя функции (lossfun
).
C
является n
-by- K
логическая матрица с строками, указывающими класс, к которому принадлежит соответствующее наблюдение. Порядок столбцов соответствует порядку классов в CVMdl.ClassNames
.
Конструкция C
путем установки C(p,q) = 1
, если наблюдение p
находится в q классов
, для каждой строки. Установите все другие элементы строки p
на 0
.
S
является n
-by- K
числовая матрица классификационных оценок. Порядок столбцов соответствует порядку классов в CVMdl.ClassNames
. S
является матрицей классификационных оценок, подобной выходным данным kfoldPredict
.
W
является n
-by-1 числовой вектор весов наблюдений. Если вы сдаете W
, программное обеспечение нормализует веса, чтобы сумма 1
.
Cost
является K
-by- K
числовая матрица затрат на неправильную классификацию. Для примера, Cost = ones(K) – eye(K)
задает стоимость 0
для правильной классификации и 1
для неправильной классификации.
Пример: 'LossFun',
@ lossfun
Типы данных: char
| string
| function_handle
'Mode'
- Уровень агрегации для выхода'average'
(по умолчанию) | 'individual'
Уровень агрегации для выхода, заданный как разделенная разделенными запятой парами, состоящая из 'Mode'
и 'average'
или 'individual'
.
В этой таблице описываются значения.
Значение | Описание |
---|---|
'average' | Выход является скаляром средним по всем складкам. |
'individual' | Выход является вектором длины k содержащим одно значение на складку, где k количество складок. |
Пример: 'Mode','individual'
loss
- Классификационные потериКлассификационные потери, возвращенные как числовой скаляр или числовой вектор-столбец.
Если Mode
является 'average'
, затем loss
- средние классификационные потери по всем складкам. В противном случае loss
является k числовым вектором-1, содержащим классификационные потери для каждой складки, где k количество складок.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.