Классификационные ребра для перекрестно проверенной модели 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' | Биномиальное отклонение | (–∞,∞) | log [1 + exp (-2 yjsj) ]/[ 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 (2 sj – 1)]2/2 |
Программа нормализует двоичные потери так, что потеря составляет 0,5 при yj = 0. Кроме того, программное обеспечение вычисляет средние двоичные потери для каждого класса.
Для пользовательской функции двоичных потерь, например, customFunction
, задайте его указатель на функцию 'BinaryLoss',@customFunction
.
customFunction
имеет следующую форму:
bLoss = customFunction(M,s)
M
- K матрица кодирования L, сохраненная в Mdl.CodingMatrix
.
s
- вектор-строка L 1 байта классификационных баллов.
bLoss
- классификационные потери. Этот скаляр агрегирует двоичные потери для каждого учащегося в конкретном классе. Для примера можно использовать среднее значение двоичных потерь для агрегирования потерь по учащимся для каждого класса.
K - количество классов.
L - это количество двоичных учащихся.
По умолчанию, если все двоичные ученики являются моделями классификации ядра с использованием SVM, то BinaryLoss
является 'hinge'
. Если все двоичные ученики являются моделями классификации ядра с помощью логистической регрессии, то BinaryLoss
является 'quadratic'
.
Пример: 'BinaryLoss','binodeviance'
Типы данных: char
| string
| function_handle
'Decoding'
- Схема декодирования'lossweighted'
(по умолчанию) | 'lossbased'
Схема декодирования, которая агрегирует двоичные потери, заданные как разделенная разделенными запятой парами, состоящая из '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'
- Уровень подробностей0
(по умолчанию) | 1
Уровень подробностей, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose'
и 0
или 1
. Verbose
управляет количеством диагностических сообщений, которые программное обеспечение отображений в Командном окне.
Если Verbose
является 0
тогда программа не отображает диагностические сообщения. В противном случае программа отображает диагностические сообщения.
Пример: 'Verbose',1
Типы данных: single
| double
edge
- Классификационное реброКлассификационное ребро, возвращенный как числовой скаляр или числовой вектор-столбец.
Если Mode
является 'average'
, затем edge
- средняя классификация, ребро по всем складкам. В противном случае edge
является k числовым вектором-1, содержащим ребро классификации для каждой складки, где k количество складок.
Это classification edge - средневзвешенное значение классификационных полей.
Один из способов выбрать один из нескольких классификаторов, например, для выбора признаков, - выбрать классификатор, который дает наибольшее ребро.
Для каждого наблюдения classification margin является различием между отрицательной потерей для истинного класса и максимальной отрицательной потерей среди ложных классов. Если поля находятся в одной шкале, то они служат классификационной доверительной мерой. Среди нескольких классификаторов лучше те, которые дают большую маржу.
binary loss является функцией класса и классификационной оценки, которая определяет, насколько хорошо двоичный ученик классифицирует наблюдение в класс.
Предположим следующее:
mkj является элементом (k, j) матрицы разработки кодирования M (то есть кода, соответствующего k классов двоичных j обучающегося).
sj - этот счет двоичных j учащихся для наблюдения.
g является функцией двоичных потерь.
- предсказанный класс для наблюдения.
В loss-based decoding [Escalera et al.] класс, производящий минимальную сумму двоичных потерь по сравнению с двоичными учениками, определяет предсказанный класс наблюдения, то есть
В loss-weighted decoding [Escalera et al.] класс, производящий минимальное среднее значение двоичных потерь по сравнению с двоичными учениками, определяет предсказанный класс наблюдения, то есть
Allwein et al. предположим, что утраченное декодирование повышает точность классификации путем сохранения значений потерь для всех классов в одной динамической области значений.
В этой таблице приведены поддерживаемые функции потерь, где yj является меткой класса для конкретного двоичного обучающегося (в наборе {-1,1,0}), sj является счетом для j наблюдений и g (yj, sj).
Значение | Описание | Счет | g (yj, sj) |
---|---|---|---|
'binodeviance' | Биномиальное отклонение | (–∞,∞) | log [1 + exp (-2 yjsj) ]/[ 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 (2 sj – 1)]2/2 |
Программа нормализует двоичные потери таким образом, что потеря составляет 0,5 при yj = 0, и агрегирует, используя среднее значение двоичных учащихся [Allwein et al.].
Не путайте двоичные потери с общими классификационными потерями (заданными 'LossFun'
Аргумент пары "имя-значение" из loss
и predict
функции объекта), который измеряет, насколько хорошо классификатор ECOC работает в целом.
[1] Allwein, E., R. Schapire, and Y. Singer. «Сокращение многоклассового числа до двоичного: Унифицирующий подход к маржинальным classifiers». Журнал исследований машинного обучения. Том 1, 2000, стр. 113-141.
[2] Эскалера, С., О. Пужоль, и П. Радева. «О процессе декодирования в троичных выходных кодах с исправлением ошибок». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 32, Выпуск 7, 2010, стр. 120-134.
[3] Эскалера, С., О. Пужоль, и П. Радева. «Разделяемость троичных кодов для разреженных проектов выходных кодов с исправлением ошибок». Pattern Recogn (Повторный вызов шаблона). Том 30, Выпуск 3, 2009, стр. 285-297.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.