Потеря классификации для перекрестной подтвержденной модели ECOC ядра
loss = kfoldLoss(CVMdl)
loss = kfoldLoss(CVMdl,Name,Value)
возвращает потерю классификации, полученную перекрестной подтвержденной моделью ECOC ядра (loss
= kfoldLoss(CVMdl
)ClassificationPartitionedKernelECOC
) CVMdl
. Для каждого сгиба kfoldLoss
вычисляет потерю классификации для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба. kfoldLoss
применяет те же данные, используемые, чтобы создать CVMdl
(см. fitcecoc
).
По умолчанию kfoldLoss
возвращает ошибку классификации.
возвращает потерю классификации с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, задайте функцию потерь классификации, количество сгибов, декодируя схему или уровень многословия.loss
= kfoldLoss(CVMdl
,Name,Value
)
Загрузите ирисовый набор данных Фишера. X
содержит цветочные измерения, и Y
содержит имена цветочных разновидностей.
load fisheriris
X = meas;
Y = species;
Перекрестный подтвердите модель ECOC, состоявшую из двоичных учеников ядра.
CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on')
CVMdl = classreg.learning.partition.ClassificationPartitionedKernelECOC CrossValidatedModel: 'KernelECOC' ResponseName: 'Y' NumObservations: 150 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' Properties, Methods
CVMdl
является моделью ClassificationPartitionedKernelECOC
. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте аргумент пары "имя-значение" 'KFold'
вместо 'Crossval'
.
Оцените перекрестную подтвержденную потерю классификации. По умолчанию программное обеспечение вычисляет ошибку классификации.
loss = kfoldLoss(CVMdl)
loss = 0.0333
Также можно получить ошибки классификации на сгиб путем определения пары "имя-значение" 'Mode','individual'
в kfoldLoss
.
В дополнение к знанию, классифицирует ли модель обычно наблюдения правильно, можно определить, как хорошо модель классифицирует наблюдение в свой предсказанный класс. Один способ определить этот тип образцового качества состоит в том, чтобы передать пользовательскую функцию потерь kfoldLoss
.
Загрузите ирисовый набор данных Фишера. X
содержит цветочные измерения, и Y
содержит имена цветочных разновидностей.
load fisheriris
X = meas;
Y = species;
Перекрестный подтвердите модель ECOC, состоявшую из двоичных учеников ядра.
rng(1) % For reproducibility CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on')
CVMdl = classreg.learning.partition.ClassificationPartitionedKernelECOC CrossValidatedModel: 'KernelECOC' ResponseName: 'Y' NumObservations: 150 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' Properties, Methods
CVMdl
является моделью ClassificationPartitionedKernelECOC
. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте аргумент пары "имя-значение" 'KFold'
вместо 'Crossval'
.
Создайте пользовательскую функцию, которая терпит минимальные убытки для каждого наблюдения, затем составляет в среднем минимальные потери для всех наблюдений. S
соответствует NegLoss
вывод kfoldPredict
.
lossfun = @(~,S,~,~)mean(min(-S,[],2));
Вычислите перекрестную подтвержденную пользовательскую потерю.
kfoldLoss(CVMdl,'LossFun',lossfun)
ans = 0.0199
Средняя минимальная бинарная потеря для наблюдений сгиба валидации - приблизительно 0,02.
CVMdl
— Перекрестная подтвержденная модель ECOC ядраClassificationPartitionedKernelECOC
Перекрестная подтвержденная модель ECOC ядра, заданная как модель ClassificationPartitionedKernelECOC
. Можно создать модель ClassificationPartitionedKernelECOC
по образованию модель ECOC с помощью fitcecoc
и задав эти аргументы пары "имя-значение":
'Learners'
– Установите значение к 'kernel'
, объект шаблона, возвращенный templateKernel
или массивом ячеек таких объектов шаблона.
Один из аргументов 'CrossVal'
, 'CVPartition'
, 'Holdout'
, 'KFold'
или 'Leaveout'
.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
kfoldLoss(CVMdl,'Folds',[1 3 5])
задает, чтобы использовать только первые, третьи, и пятые сгибы, чтобы вычислить потерю классификации.'BinaryLoss'
— Бинарная функция потерь ученика'hamming'
| 'linear'
| 'logit'
| 'exponential'
| 'binodeviance'
| 'hinge'
| 'quadratic'
| указатель на функциюБинарная функция потерь ученика, заданная как пара, разделенная запятой, состоящая из 'BinaryLoss'
и встроенного имени функции потерь или указателя на функцию.
Эта таблица содержит имена и описания встроенных функций, где yj является меткой класса для конкретного бинарного ученика (в наборе {-1,1,0}), sj является счетом к наблюдению j, и g (yj, sj) является бинарной формулой потерь.
Значение | Описание | Область счета | g (yj, sj) |
---|---|---|---|
'binodeviance' | Биномиальное отклонение | (–∞,∞) | журнал [1 + exp (–2yjsj)] / [2log (2)] |
'exponential' | Экспоненциал | (–∞,∞) | exp (–yjsj)/2 |
'hamming' | Хэмминг | [0,1] или (– ∞, ∞) | [1 – знак (yjsj)]/2 |
'hinge' | Стержень | (–∞,∞) | макс. (0,1 – yjsj)/2 |
'linear' | Линейный | (–∞,∞) | (1 – yjsj)/2 |
'logit' | Логистический | (–∞,∞) | журнал [1 + exp (–yjsj)] / [2log (2)] |
'quadratic' | Квадратичный | [0,1] | [1 – yj (2sj – 1)] 2/2 |
Программное обеспечение нормирует бинарные потери, таким образом, что потеря 0.5 когда yj = 0. Кроме того, программное обеспечение вычисляет среднюю бинарную потерю для каждого класса.
Для пользовательской бинарной функции потерь, например, customFunction
, задают его указатель на функцию 'BinaryLoss',@customFunction
.
customFunction
имеет эту форму:
bLoss = customFunction(M,s)
M
является K-by-L кодирующий матрицу, сохраненную в Mdl.CodingMatrix
.
s
является 1 L вектором - строкой из очков классификации.
bLoss
является потерей классификации. Этот скаляр агрегировал бинарные потери для каждого ученика в конкретном классе. Например, можно использовать среднюю бинарную потерю, чтобы агрегировать потерю по ученикам для каждого класса.
K является количеством классов.
L является количеством бинарных учеников.
По умолчанию, если все бинарные ученики являются моделями классификации ядер с помощью SVM, то BinaryLoss
является 'hinge'
. Если все бинарные ученики являются моделями классификации ядер с помощью логистической регрессии, то BinaryLoss
является 'quadratic'
.
Пример: 'BinaryLoss','binodeviance'
Типы данных: char
| string
| function_handle
'Decoding'
— Decoding'lossweighted'
(значение по умолчанию) | 'lossbased'
Схема Decoding, которая агрегировала бинарные потери, заданные как пара, разделенная запятой, состоящая из 'Decoding'
и 'lossweighted'
или 'lossbased'
. Для получения дополнительной информации смотрите Бинарную Потерю.
Пример: 'Decoding','lossbased'
'Folds'
— Сверните индексы для прогноза1:CVMdl.KFold
(значение по умолчанию) | числовой вектор положительных целых чиселСверните индексы для прогноза, заданного как пара, разделенная запятой, состоящая из 'Folds'
и числовой вектор положительных целых чисел. Элементы Folds
должны быть в диапазоне от 1
до CVMdl.KFold
.
Программное обеспечение использует только сгибы, заданные в Folds
для прогноза.
Пример: 'Folds',[1 4 10]
Типы данных: single | double
'LossFun'
— Функция потерь'classiferror'
(значение по умолчанию) | указатель на функциюФункция потерь, заданная как пара, разделенная запятой, состоящая из 'LossFun'
и 'classiferror'
или указателя на функцию.
Задайте встроенную функцию 'classiferror'
. В этом случае функция потерь является ошибкой классификации.
Или, задайте свою собственную функцию с помощью обозначения указателя на функцию.
Примите, что n является количеством наблюдений в данных тренировки (CVMdl.NumObservations
), и K является количеством классов (numel(CVMdl.ClassNames)
). Для вашей функции нужна подпись
, где: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
напоминает выходной аргумент NegLoss
kfoldPredict
.
W
является n-by-1 числовой вектор весов наблюдения. Если вы передаете W
, программное обеспечение нормирует свои элементы, чтобы суммировать к 1
.
Cost
является K-by-K числовая матрица затрат misclassification. Например, Cost
= ones(K) – eye(K)
задает стоимость 0 для правильной классификации и 1 для misclassification.
Задайте свою функцию с помощью 'LossFun',@lossfun
.
Типы данных: char
| string
| function_handle
режим
Уровень агрегации для вывода'average'
(значение по умолчанию) | 'individual'
Уровень агрегации для вывода, заданного как пара, разделенная запятой, состоящая из 'Mode'
и 'average'
или 'individual'
.
Эта таблица описывает значения.
Значение | Описание |
---|---|
'average' | Вывод является скалярным средним значением по всем сгибам. |
'individual' | Вывод является вектором длины k, содержащий одно значение на сгиб, где k является количеством сгибов. |
Пример: 'Mode','individual'
Опции
Опции оценки[]
(значение по умолчанию) | массив структур, возвращенный statset
Опции оценки, заданные как пара, разделенная запятой, состоящая из 'Options'
и массива структур, возвращенного statset
.
Вызвать параллельные вычисления:
Вам нужна лицензия Parallel Computing Toolbox™.
Задайте 'Options',statset('UseParallel',true)
.
'Verbose'
— Уровень многословия0
(значение по умолчанию) | 1
Уровень многословия, заданный как пара, разделенная запятой, состоящая из 'Verbose'
и 0
или 1
. Verbose
управляет количеством диагностических сообщений, что программное обеспечение отображается в Командном окне.
Если Verbose
является 0
, то программное обеспечение не отображает диагностические сообщения. В противном случае программное обеспечение отображает диагностические сообщения.
Пример: 'Verbose',1
Типы данных: single | double
loss
— Потеря классификацииПотеря классификации, возвращенная в виде числа или числового вектор-столбца.
Если Mode
является 'average'
, то loss
является средней потерей классификации по всем сгибам. В противном случае loss
является k-by-1 числовой вектор-столбец, содержащий потерю классификации для каждого сгиба, где k является количеством сгибов.
classification error является бинарной ошибочной мерой по классификации, которая имеет форму
где:
wj является весом для наблюдения j. Программное обеспечение повторно нормирует веса, чтобы суммировать к 1.
ej = 1, если предсказанный класс наблюдения j отличается от своего истинного класса, и 0 в противном случае.
Другими словами, ошибка классификации является пропорцией наблюдений, неправильно классифицированных классификатором.
binary loss является функцией класса и счета классификации, который определяет, как хорошо бинарный ученик классифицирует наблюдение в класс.
Предположим следующее:
mkj является элементом (k, j) проекта кодирования матричный M (то есть, код, соответствующий классу k бинарного ученика j).
sj является счетом бинарного ученика j для наблюдения.
g является бинарной функцией потерь.
предсказанный класс для наблюдения.
В loss-based decoding [Escalera и др.], класс, производящий минимальную сумму бинарных потерь по бинарным ученикам, определяет предсказанный класс наблюдения, то есть,
В loss-weighted decoding [Escalera и др.], класс, производящий минимальное среднее значение бинарных потерь по бинарным ученикам, определяет предсказанный класс наблюдения, то есть,
Allwein и др. предполагают, что взвешенное потерей декодирование улучшает точность классификации путем хранения значений потерь для всех классов в том же динамическом диапазоне.
Эта таблица суммирует поддерживаемые функции потерь, где yj является меткой класса для конкретного бинарного ученика (в наборе {-1,1,0}), sj является счетом к наблюдению j и g (yj, sj).
Значение | Описание | Область счета | g (yj, sj) |
---|---|---|---|
'binodeviance' | Биномиальное отклонение | (–∞,∞) | журнал [1 + exp (–2yjsj)] / [2log (2)] |
'exponential' | Экспоненциал | (–∞,∞) | exp (–yjsj)/2 |
'hamming' | Хэмминг | [0,1] или (– ∞, ∞) | [1 – знак (yjsj)]/2 |
'hinge' | Стержень | (–∞,∞) | макс. (0,1 – yjsj)/2 |
'linear' | Линейный | (–∞,∞) | (1 – yjsj)/2 |
'logit' | Логистический | (–∞,∞) | журнал [1 + exp (–yjsj)] / [2log (2)] |
'quadratic' | Квадратичный | [0,1] | [1 – yj (2sj – 1)] 2/2 |
Программное обеспечение нормирует бинарные потери, таким образом, что потеря 0.5, когда yj = 0, и агрегировал использование среднего значения бинарных учеников [Allwein и др.].
Не путайте бинарную потерю с полной потерей классификации (заданный аргументом пары "имя-значение" 'LossFun'
функций объекта loss
и predict
), который измеряется, как хорошо классификатор ECOC выполняет в целом.
[1] Allwein, E., Р. Шапайр и И. Зингер. “Уменьшая мультикласс до двоичного файла: подход объединения для поля classifiers”. Журнал Исследования Машинного обучения. Издание 1, 2000, стр 113–141.
[2] Escalera, S., О. Пуджол и П. Радева. “На процессе декодирования в троичных выходных кодах с коррекцией ошибок”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Издание 32, Выпуск 7, 2010, стр 120–134.
[3] Escalera, S., О. Пуджол и П. Радева. “Отделимость троичных кодов для разреженных проектов выходных кодов с коррекцией ошибок”. Шаблон Recogn. Издание 30, Выпуск 3, 2009, стр 285–297.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.