Ребро классификации для перекрестной подтвержденной модели ECOC ядра
возвращает ребро классификации, полученное перекрестной подтвержденной моделью ECOC ядра (edge = kfoldEdge(CVMdl)ClassificationPartitionedKernelECOC) CVMdl. Для каждого сгиба, kfoldEdge вычисляет ребро классификации для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба.
возвращает ребро классификации с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, задайте количество сгибов, декодируя схему или уровень многословия.edge = kfoldEdge(CVMdl,Name,Value)
Загрузите ирисовый набор данных Фишера. X содержит цветочные измерения и Y содержит имена цветочных разновидностей.
load fisheriris
X = meas;
Y = species;Перекрестный подтвердите модель ECOC, состоявшую из двоичных учеников ядра.
CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on')
CVMdl =
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'.
Оцените перекрестные подтвержденные ребра классификации.
edge = kfoldEdge(CVMdl)
edge = 0.4145
В качестве альтернативы можно получить ребра на сгиб путем определения пары "имя-значение" 'Mode','individual' в kfoldEdge.
Выполните выбор признаков путем сравнения ребер k-сгиба от многоуровневых моделей. Базирующийся только на этом критерии, классификатор с самым большим ребром является лучшим классификатором.
Загрузите ирисовый набор данных Фишера. X содержит цветочные измерения и Y содержит имена цветочных разновидностей.
load fisheriris
X = meas;
Y = species;Случайным образом выберите половину переменных предикторов.
rng(1); % For reproducibility p = size(X,2); % Number of predictors idxPart = randsample(p,ceil(0.5*p));
Перекрестный подтвердите две модели ECOC, состоявшие из моделей классификации ядер: тот, который использует все предикторы и тот, который использует половину предикторов.
CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on'); PCVMdl = fitcecoc(X(:,idxPart),Y,'Learners','kernel','CrossVal','on');
CVMdl и PCVMdl ClassificationPartitionedKernelECOC модели. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте 'KFold' аргумент пары "имя-значение" вместо 'Crossval'.
Оцените ребро k-сгиба для каждого классификатора.
fullEdge = kfoldEdge(CVMdl)
fullEdge = 0.4092
partEdge = kfoldEdge(PCVMdl)
partEdge = 0.4161
На основе ребер k-сгиба эти два классификатора сопоставимы.
CVMdl — Перекрестная подтвержденная модель ECOC ядраClassificationPartitionedKernelECOC модельПерекрестная подтвержденная модель ECOC ядра в виде ClassificationPartitionedKernelECOC модель. Можно создать ClassificationPartitionedKernelECOC модель по образованию использование модели ECOC fitcecoc и определение этих аргументов пары "имя-значение":
'Learners'– Установите значение к 'kernel', объект шаблона, возвращенный templateKernel, или массив ячеек таких объектов шаблона.
Один из аргументов 'CrossVal', 'CVPartition', 'Holdout', 'KFold', или 'Leaveout'.
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
kfoldEdge(CVMdl,'BinaryLoss','hinge') задает 'hinge' как бинарная функция потерь ученика.'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
'Mode' — Уровень агрегации для выхода'average' (значение по умолчанию) | 'individual'Уровень агрегации для выхода в виде разделенной запятой пары, состоящей из 'Mode' и 'average' или 'individual'.
Эта таблица описывает значения.
| Значение | Описание |
|---|---|
'average' | Выход является скалярным средним значением по всем сгибам. |
'individual' | Выход является вектором из длины k, содержащий одно значение на сгиб, где k является количеством сгибов. |
Пример: 'Mode','individual'
'Options' — Опции оценки[] (значение по умолчанию) | массив структур, возвращенный statsetОпции оценки в виде разделенной запятой пары, состоящей из 'Options' и массив структур, возвращенный statset.
Вызвать параллельные вычисления:
Вам нужна лицензия Parallel Computing Toolbox™.
Задайте 'Options',statset('UseParallel',true).
'Verbose' — Уровень многословия (значение по умолчанию) | 1Уровень многословия в виде разделенной запятой пары, состоящей из 'Verbose' и 0 или 1. Verbose управляет количеством диагностических сообщений, что программное обеспечение отображается в Командном окне.
Если Verbose 0, затем программное обеспечение не отображает диагностические сообщения. В противном случае программное обеспечение отображает диагностические сообщения.
Пример: 'Verbose',1
Типы данных: single | double
edge — Ребро классификацииРебро классификации, возвращенное в виде числа или числового вектор-столбца.
Если Mode 'average', затем edge среднее ребро классификации по всем сгибам. В противном случае, edge k-by-1 числовой вектор-столбец, содержащий ребро классификации для каждого сгиба, где k является количеством сгибов.
classification edge является взвешенным средним classification margins.
Один способ выбрать среди нескольких классификаторов, например, выполнить выбор признаков, состоит в том, чтобы выбрать классификатор, который дает к самому большому ребру.
classification margin, для каждого наблюдения, различия между отрицательной потерей для истинного класса и максимальной отрицательной потерей среди ложных классов. Если поля находятся по той же шкале, то они служат мерой по доверию классификации. Среди нескольких классификаторов те, которые дают к большим полям, лучше.
binary loss является функцией класса и классификационной оценки, которая определяет, как хорошо бинарный ученик классифицирует наблюдение в класс.
Предположим следующее:
mkj является элементом (k, j) проекта кодирования матричный M (то есть, код, соответствующий классу k бинарного ученика j).
sj является счетом бинарного ученика j для наблюдения.
g является бинарной функцией потерь.
предсказанный класс для наблюдения.
В loss-based decoding [Escalera и al.], класс, производящий минимальную сумму бинарных потерь по бинарным ученикам, определяет предсказанный класс наблюдения, то есть,
В loss-weighted decoding [Escalera и al.], класс, производящий минимальное среднее значение бинарных потерь по бинарным ученикам, определяет предсказанный класс наблюдения, то есть,
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 и al.].
Не путайте бинарную потерю с полной потерей классификации (заданный '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.