Компактная модель мультикласса для машин опорных векторов (SVMs) и других классификаторов
CompactClassificationECOC
компактная версия модели выходных кодов с коррекцией ошибок (ECOC) мультикласса. Компактный классификатор не включает данные, используемые в обучении мультикласс модель ECOC. Поэтому вы не можете выполнить определенные задачи, такие как перекрестная проверка, с помощью компактного классификатора. Используйте компактный мультикласс модель ECOC в задачах, таких как классификация новых данных (predict
).
Можно создать CompactClassificationECOC
модель двумя способами:
Создайте компактную модель ECOC из обученного ClassificationECOC
модель при помощи compact
объектная функция.
Создайте компактную модель ECOC при помощи fitcecoc
функция и определение 'Learners'
аргумент пары "имя-значение" как 'linear'
, 'kernel'
, templateLinear
или templateKernel
объект или массив ячеек таких объектов.
После того, как вы создаете CompactClassificationECOC
объект модели, можно использовать запись через точку, чтобы получить доступ к ее свойствам. Для примера смотрите, Обучают и перекрестный Подтверждают Классификатор ECOC.
BinaryLearners
— Обученные бинарные ученикиОбученные бинарные ученики в виде вектора ячейки объектов модели. Количество бинарных учеников зависит от количества классов в Y
и проект кодирования.
Программное обеспечение обучает BinaryLearner{j}
согласно бинарной проблеме, заданной CodingMatrix
(:,j)
. Например, для изучения мультикласса с помощью учеников SVM, каждого элемента BinaryLearners
CompactClassificationSVM
классификатор.
Типы данных: cell
BinaryLoss
— Бинарная функция потерь ученика'binodeviance'
| 'exponential'
| 'hamming'
| 'hinge'
| 'linear'
| 'logit'
| 'quadratic'
Бинарная функция потерь ученика в виде вектора символов, представляющего имя функции потерь.
Если вы обучаете использующих бинарных учеников, которые используют различные функции потерь, то программное обеспечение устанавливает BinaryLoss
к 'hamming'
. Чтобы потенциально увеличить точность, задайте бинарную функцию потерь кроме значения по умолчанию во время предсказания или расчета потерь при помощи 'BinaryLoss'
аргумент пары "имя-значение" predict
или loss
.
Типы данных: char
CodingMatrix
— Коды присвоения классаКоды присвоения класса для бинарных учеников в виде числовой матрицы. CodingMatrix
K-by-L матрица, где K является количеством классов, и L является количеством бинарных учеников.
Элементы CodingMatrix
–1
, 0, или
1
, и значения соответствуют дихотомическим присвоениям класса. Эта таблица описывает как ученик j
наблюдения присвоений в классе i
к дихотомическому классу, соответствующему значению CodingMatrix(i,j)
.
Значение | Дихотомическое присвоение класса |
---|---|
–1
| Ученик j наблюдения присвоений в классе i к отрицательному классу. |
0
| Перед обучением, ученик j удаляет наблюдения в классе i от набора данных. |
1
| Ученик j наблюдения присвоений в классе i к положительному классу. |
Типы данных: double |
single
| int8
| int16
| int32
| int64
LearnerWeights
— Бинарные веса ученикаБинарные веса ученика в виде числового вектора-строки. Длина LeanerWeights
равно количеству бинарных учеников (length(Mdl.BinaryLearners)
).
LearnerWeights(j)
сумма весов наблюдения тот бинарный ученик j
использование, чтобы обучить его классификатор.
Программное обеспечение использует LearnerWeights
соответствовать апостериорным вероятностям путем минимизации расхождения Kullback-Leibler. Программное обеспечение игнорирует LearnerWeights
когда это использует метод квадратичного программирования оценки апостериорных вероятностей.
Типы данных: double |
single
CategoricalPredictors
— Категориальные индексы предиктора[]
Категориальные индексы предиктора в виде вектора положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: single
| double
ClassNames
— Уникальные метки классаУникальные метки класса, используемые в обучении в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. ClassNames
имеет совпадающий тип данных, когда класс маркирует Y
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
ClassNames
также определяет порядок класса.
Типы данных: categorical
| char
| logical
| single
| double
| cell
Cost
— Затраты MisclassificationЭто свойство доступно только для чтения.
Misclassification стоит в виде квадратной числовой матрицы. Cost
имеет строки и столбцы K, где K является количеством классов.
Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
. Порядок строк и столбцов Cost
соответствует порядку классов в ClassNames
.
fitcecoc
включает затраты misclassification по-другому среди различных типов бинарных учеников.
Типы данных: double
ExpandedPredictorNames
— Расширенные имена предиктораРасширенный предиктор называет в виде массива ячеек из символьных векторов.
Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames
совпадает с PredictorNames
.
PredictorNames
— Имена предиктораПредиктор называет в порядке их внешнего вида в данных о предикторе X
В виде массива ячеек из символьных векторов. Длина PredictorNames
равно количеству столбцов в X
.
Типы данных: cell
Prior
— Предшествующие вероятности классаЭто свойство доступно только для чтения.
Предшествующие вероятности класса в виде числового вектора. Prior
имеет столько же элементов сколько количество классов в ClassNames
, и порядок элементов соответствует порядку классов в ClassNames
.
fitcecoc
включает затраты misclassification по-другому среди различных типов бинарных учеников.
Типы данных: double
ResponseName
— Имя переменной откликаИмя переменной отклика в виде вектора символов.
Типы данных: char
ScoreTransform
— Выиграйте функцию преобразования, чтобы примениться к предсказанным баллам'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| 'none'
| указатель на функцию |...Выиграйте функцию преобразования, чтобы примениться к предсказанным баллам в виде имени функции или указателя на функцию.
Чтобы изменить преобразование счета функционируют к function
, например, используйте запись через точку.
Для встроенной функции введите этот код и замените function
со значением в таблице.
Mdl.ScoreTransform = 'function';
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (x / (1 – x)) |
'ismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0 |
'logit' | 1/(1 + e –x) |
'none' или 'identity' | x (никакое преобразование) |
'sign' | – 1 для x <0 0 для x = 0 1 для x> 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
'symmetriclogit' | 2/(1 + e –x) – 1 |
Для функции MATLAB® или функции, которую вы задаете, введите ее указатель на функцию.
Mdl.ScoreTransform = @function;
function
должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).
Типы данных: char |
function_handle
compareHoldout | Сравните точность двух моделей классификации с помощью новых данных |
discardSupportVectors | Отбросьте векторы поддержки линейных бинарных учеников SVM в модели ECOC |
edge | Ребро классификации для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
loss | Потеря классификации для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
margin | Поля классификации для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
predict | Классифицируйте наблюдения с помощью модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
selectModels | Выберите подмножество мультикласса модели ECOC, состоявшие из бинарного ClassificationLinear ученики |
update | Обновите параметры модели для генерации кода |
Уменьшайте размер полной модели ECOC путем удаления обучающих данных. Полные модели ECOC (ClassificationECOC
модели), содержат обучающие данные. Чтобы повысить эффективность, используйте меньший классификатор.
Загрузите ирисовый набор данных Фишера. Задайте данные о предикторе X
, данные об ответе Y
, и порядок классов в Y
.
load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y);
Обучите модель ECOC с помощью двоичных классификаторов SVM. Стандартизируйте данные о предикторе с помощью шаблона SVM t
, и задайте порядок классов. Во время обучения программное обеспечение использует значения по умолчанию в пустых опциях в t
.
t = templateSVM('Standardize',true); Mdl = fitcecoc(X,Y,'Learners',t,'ClassNames',classOrder);
Mdl
ClassificationECOC
модель.
Уменьшайте размер модели ECOC.
CompactMdl = compact(Mdl)
CompactMdl = classreg.learning.classif.CompactClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [setosa versicolor virginica] ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingMatrix: [3x3 double] Properties, Methods
CompactMdl
CompactClassificationECOC
модель. CompactMdl
не хранит все свойства что Mdl
хранилища. В частности, это не хранит обучающие данные.
Отобразите объем памяти каждый классификатор использование.
whos('CompactMdl','Mdl')
Name Size Bytes Class Attributes CompactMdl 1x1 14444 classreg.learning.classif.CompactClassificationECOC Mdl 1x1 27551 ClassificationECOC
Полная модель ECOC (Mdl
) приблизительно удваивает размер компактной модели ECOC (CompactMdl
).
Чтобы пометить новые наблюдения эффективно, можно удалить Mdl
от MATLAB® Workspace, и затем передают CompactMdl
и новые значения предиктора к predict
.
Обучите и перекрестный подтвердите классификатор ECOC с помощью различных бинарных учеников и one-all, кодирующего проект.
Загрузите ирисовый набор данных Фишера. Задайте данные о предикторе X
и данные об ответе Y
. Определите имена классов и количество классов.
load fisheriris X = meas; Y = species; classNames = unique(species(~strcmp(species,''))) % Remove empty classes
classNames = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
K = numel(classNames) % Number of classes
K = 3
Можно использовать classNames
задавать порядок классов во время обучения.
Для one-all, кодирующего проект, этот пример имеет K
= 3 бинарных ученика. Задайте шаблоны для бинарных учеников, таким образом что:
Бинарный ученик 1 и 2 является наивными классификаторами Байеса. По умолчанию каждый предиктор условно, нормально распределен, учитывая свою метку.
Бинарный ученик 3 является классификатором SVM. Задайте, чтобы использовать Гауссово ядро.
rng(1); % For reproducibility tNB = templateNaiveBayes(); tSVM = templateSVM('KernelFunction','gaussian'); tLearners = {tNB tNB tSVM};
tNB
и tSVM
объекты шаблона для наивного Бейеса и изучения SVM, соответственно. Объекты указывают который опции использовать во время обучения. Большинство их свойств пусто, кроме заданных аргументами пары "имя-значение". Во время обучения программное обеспечение заполняет пустые свойства с их значениями по умолчанию.
Обучите и перекрестный подтвердите классификатор ECOC с помощью бинарных шаблонов ученика и one-all, кодирующего проект. Задайте порядок классов. По умолчанию наивные классификаторы Байеса используют апостериорные вероятности в качестве баллов, тогда как классификаторы SVM используют расстояния от контура решения. Поэтому, чтобы агрегировать бинарных учеников, необходимо задать, чтобы соответствовать апостериорным вероятностям.
CVMdl = fitcecoc(X,Y,'ClassNames',classNames,'CrossVal','on',... 'Learners',tLearners,'FitPosterior',true);
CVMdl
ClassificationPartitionedECOC
перекрестная подтвержденная модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Баллы через бинарных учеников имеют ту же форму (то есть, они - апостериорные вероятности), таким образом, программное обеспечение может агрегировать результаты бинарных классификаций правильно.
Смотрите один из обученных сгибов с помощью записи через точку.
CVMdl.Trained{1}
ans = classreg.learning.classif.CompactClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingMatrix: [3x3 double] Properties, Methods
Каждым сгибом является CompactClassificationECOC
модель, обученная на 90% данных.
Можно получить доступ к результатам бинарных учеников, использующих индексация ячейки и запись через точку. Отобразите обученный классификатор SVM (третий бинарный ученик) в первом сгибе.
CVMdl.Trained{1}.BinaryLearners{3}
ans = classreg.learning.classif.CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [-1 1] ScoreTransform: '@(S)sigmoid(S,-4.016735e+00,-3.243073e-01)' Alpha: [33x1 double] Bias: -0.1345 KernelParameters: [1x1 struct] SupportVectors: [33x4 double] SupportVectorLabels: [33x1 double] Properties, Methods
Оцените ошибку обобщения.
genError = kfoldLoss(CVMdl)
genError = 0.0333
В среднем ошибка обобщения составляет приблизительно 3%.
Для данного количества классов K программное обеспечение генерирует случайные матрицы проекта кодирования можно следующим образом.
Программное обеспечение генерирует одну из этих матриц:
Плотный случайный — программное обеспечение присваивает 1 или –1 с равной вероятностью к каждому элементу K-by-Ld кодирующий матрицу проекта, где .
Разреженный случайный — программное обеспечение присваивает 1 каждому элементу K-by-Ls кодирующий матрицу проекта с вероятностью 0.25, –1 с вероятностью 0.25, и 0 с вероятностью 0.5, где .
Если столбец не содержит по крайней мере один 1 и по крайней мере один –1, то программное обеспечение удаляет тот столбец.
Для отличных столбцов u и v, если u = v или u = –v, то программное обеспечение удаляет v из матрицы проекта кодирования.
Программное обеспечение случайным образом генерирует 10 000 матриц по умолчанию и сохраняет матрицу с самым большим, минимальным, попарным расстоянием строки на основе меры Хэмминга ([4]) данный
где mkjl является элементом кодирования матрицы проекта j.
По умолчанию и для КПД, fitcecoc
опорожняет Alpha
, SupportVectorLabels
, и SupportVectors
свойства для всех линейных бинарных учеников SVM. fitcecoc
списки Beta
, вместо Alpha
, в отображении модели.
Сохранить Alpha
, SupportVectorLabels
, и SupportVectors
, передайте линейный шаблон SVM, который задает векторы поддержки хранения к fitcecoc
. Например, введите:
t = templateSVM('SaveSupportVectors',true) Mdl = fitcecoc(X,Y,'Learners',t);
Можно удалить векторы поддержки и связанные значения путем передачи получившегося ClassificationECOC
модель к discardSupportVectors
.
[1] Fürnkranz, Иоганнес. “Круговая Классификация”. Журнал Исследования Машинного обучения, Издания 2, 2002, стр 721–747.
[2] Escalera, S., О. Пуджол и П. Радева. “Отделимость троичных кодов для разреженных проектов выходных кодов с коррекцией ошибок”. Буквы Распознавания образов, Издание 30, Выпуск 3, 2009, стр 285–297.
Указания и ограничения по применению:
Когда вы обучаете модель ECOC при помощи fitcecoc
, следующие ограничения применяются.
Вы не можете соответствовать апостериорным вероятностям при помощи 'FitPosterior'
аргумент пары "имя-значение".
Все бинарные ученики должны быть или классификаторами SVM или линейными моделями классификации. Для 'Learners'
аргумент пары "имя-значение", можно задать:
'svm'
или 'linear'
Объект шаблона SVM или массив ячеек таких объектов (см. templateSVM
)
Линейный объект шаблона модели классификации или массив ячеек таких объектов (см. templateLinear
)
Когда вы генерируете код с помощью кодера configurer для predict
и update
, следующие дополнительные ограничения применяются к бинарным ученикам.
Если вы используете массив ячеек объектов шаблона SVM, значение 'Standardize'
поскольку ученики SVM должны быть сопоставимыми. Например, если вы задаете 'Standardize',true
для одного ученика SVM необходимо задать то же значение для всех учеников SVM.
Если вы используете массив ячеек объектов шаблона SVM, и вы используете одного ученика SVM с линейным ядром ('KernelFunction','linear'
) и другой с другим типом функции ядра, затем необходимо задать
для ученика с линейным ядром.'SaveSupportVectors'
TRUE
Для получения дополнительной информации смотрите ClassificationECOCCoderConfigurer
. Для получения информации об аргументах пары "имя-значение", что вы не можете изменить, когда вы переобучаете модель, смотрите Советы.
Ограничения генерации кода для классификаторов SVM и линейных моделей классификации также применяются к классификаторам ECOC, в зависимости от выбора бинарных учеников. Для получения дополнительной информации смотрите Генерацию кода CompactClassificationSVM
класс и Генерация кода ClassificationLinear
класс.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationECOC
| ClassificationPartitionedECOC
| ClassificationPartitionedKernelECOC
| ClassificationPartitionedLinearECOC
| compact
| fitcecoc
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.