Компактная многоклассовая модель для машин опорных векторов (SVM) и других классификаторов
CompactClassificationECOC является компактной версией многоклассовой модели выходных кодов с исправлением ошибок (ECOC). Компактный классификатор не включает данные, используемые для обучения многоклассовой модели ECOC. Поэтому вы не можете выполнить определенные задачи, такие как перекрестная валидация, используя компактный классификатор. Используйте компактную многоклассовую модель ECOC для задач, таких как классификация новых данных (predict).
Можно создать CompactClassificationECOC моделировать двумя способами:
Создайте компактную модель ECOC из обученного ClassificationECOC модель при помощи compact функция объекта.
Создайте компактную модель ECOC с помощью fitcecoc функция и установка 'Learners' аргумент пары "имя-значение" как 'linear', 'kernel', а templateLinear или templateKernel объект или массив ячеек таких объектов.
После создания CompactClassificationECOC объект модели, вы можете использовать запись через точку для доступа к его свойствам. Для получения примера смотрите Train и Перекрестная проверка классификатора 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 - Бинарные веса учащихсяДвоичные веса учащихся, заданные как числовой вектор-строка. Длина LearnerWeights равно количеству двоичных учащихся (length(Mdl.BinaryLearners)).
LearnerWeights(j) - сумма весов наблюдений, двоичных учащихся j использует, чтобы обучить его классификатор.
Программное обеспечение использует LearnerWeights для соответствия апостериорным вероятностям путем минимизации расхождения Куллбека-Лейблера. Программа игнорирует LearnerWeights когда он использует квадратичный метод программирования оценки апостериорных вероятностей.
Типы данных: double | single
CategoricalPredictors - Категориальные индексы предиктора[]Категориальные индексы предиктора, заданные как вектор положительных целых чисел. Принимая, что данные предиктора содержат наблюдения в строках, CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пустое ([]).
Типы данных: single | double
ClassNames - Уникальные метки классовУникальные метки классов, используемые в обучении, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов. ClassNames имеет тот совпадающий тип данных, что и метки классов Y. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
ClassNames также определяет порядок классов.
Типы данных: categorical | char | logical | single | double | cell
Cost - Расходы на неправильную классификациюЭто свойство доступно только для чтения.
Затраты на неправильную классификацию, заданные как квадратная числовая матрица. Cost имеет K строки и столбцы, где K количество классов.
Cost(i,j) - стоимость классификации точки в класс j если его класс true i. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.
fitcecoc включает расходы на неправильную классификацию по-разному среди различных типов двоичных учащихся.
Типы данных: double
PredictorNames - Имена предикторовИмена предиктора в порядке их внешнего вида в данных предиктора, заданные как массив ячеек из векторов символов. Длина PredictorNames равен количеству переменных в обучающих данных X или Tbl используется в качестве переменных.
Типы данных: cell
ExpandedPredictorNames - Расширенные имена предикторовРасширенные имена предикторов, заданные как массив ячеек из векторов символов.
Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае ExpandedPredictorNames то же, что и PredictorNames.
Типы данных: cell
Prior - Вероятности предыдущего классаЭто свойство доступно только для чтения.
Вероятности предыдущего класса, заданные как числовой вектор. Prior имеет столько элементов, сколько количество классов в ClassNames, и порядок элементов соответствует порядку классов в ClassNames.
fitcecoc включает расходы на неправильную классификацию по-разному среди различных типов двоичных учащихся.
Типы данных: 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' | 2 x – 1 |
'symmetricismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1 |
'symmetriclogit' | 2/(1 + e–x) – 1 |
Для MATLAB® function или функция, которую вы задаете, вводите указатель на функцию.
Mdl.ScoreTransform = @function;
function необходимо принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).
Типы данных: char | function_handle
compareHoldout | Сравните точности двух классификационных моделей с помощью новых данных |
discardSupportVectors | Сбросьте векторы поддержки линейных двоичных учащихся SVM в модели ECOC |
edge | Классификационное ребро для многоклассовой модели выходных кодов с коррекцией ошибок (ECOC) |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
loss | Классификационные потери для многоклассовой модели выходных кодов с коррекцией ошибок (ECOC) |
margin | Классификационные поля для многоклассовой модели выходных кодов с коррекцией ошибок (ECOC) |
partialDependence | Вычисление частичной зависимости |
plotPartialDependence | Создайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE) |
predict | Классифицируйте наблюдения с помощью многоклассовой модели выходных кодов с коррекцией ошибок (ECOC) |
shapley | Значения Shapley |
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 =
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 15116 classreg.learning.classif.CompactClassificationECOC Mdl 1x1 28357 ClassificationECOC
Полная модель ECOC (Mdl) примерно в два раза превышает размер компактной модели ECOC (CompactMdl).
Чтобы эффективно пометить новые наблюдения, можно удалить Mdl из рабочей области MATLAB ®, а затем передайте CompactMdl и новые значения предиктора, чтобы predict.
Обучите и перекрестная проверка классификатора ECOC с помощью различных двоичных учащихся и проекта кодирования «один от всех».
Загрузите набор данных радужки Фишера. Задайте данные предиктора 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 classesK = 3
Можно использовать classNames для определения порядка классов во время обучения.
Для проекта кодирования один от всех, этот пример имеет K = 3 двоичных ученика. Задайте шаблоны для двоичных учащихся так, чтобы:
Двоичный ученик 1 и 2 являются наивными классификаторами Байеса. По умолчанию каждый предиктор является условно, обычно распределенным, учитывая его метку.
Двоичный ученик 3 является классификатором SVM. Задайте, чтобы использовать Гауссово ядро.
rng(1); % For reproducibility tNB = templateNaiveBayes(); tSVM = templateSVM('KernelFunction','gaussian'); tLearners = {tNB tNB tSVM};
tNB и tSVM являются объектами шаблона для наивного обучения Байеса и SVM, соответственно. Объекты указывают, какие опции использовать во время обучения. Большинство их свойств пусты, за исключением свойств, заданных аргументами пары "имя-значение". Во время обучения программное обеспечение заполняет пустые свойства их значениями по умолчанию.
Обучите и перекрестная проверка классификатора ECOC с помощью двоичных шаблонов учащихся и проекта кодирования «один от всех». Задайте порядок классов. По умолчанию наивные классификаторы Байеса используют апостериорные вероятности как счета, в то время как классификаторы SVM используют расстояния от контура принятия решения. Поэтому, чтобы агрегировать двоичных учащихся, вы должны задать, чтобы соответствовать апостериорным вероятностям.
CVMdl = fitcecoc(X,Y,'ClassNames',classNames,'CrossVal','on',... 'Learners',tLearners,'FitPosterior',true);
CVMdl является ClassificationPartitionedECOC перекрестно-проверенная модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную валидацию. Счета через двоичных учащихся имеют ту же форму (то есть являются апостериорными вероятностями), поэтому программное обеспечение может правильно агрегировать результаты двоичных классификаций.
Осмотрите один из обученных складок с помощью записи через точку.
CVMdl.Trained{1}ans =
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 =
CompactClassificationSVM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [-1 1]
ScoreTransform: '@(S)sigmoid(S,-4.016735e+00,-3.243061e-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 является элементом матричного < reservedrangesplaceholder0 > проекта кодирования.
По умолчанию и для эффективности, 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] Фюрнкранц, Йоханнес. Round Robin Classification (неопр.) (недоступная ссылка). Journal of Машинное Обучение Research, Vol. 2, 2002, pp. 721-747.
[2] Эскалера, С., О. Пужоль, и П. Радева. «Разделяемость троичных кодов для разреженных проектов выходных кодов с исправлением ошибок». Pattern Recognition Letters, Vol. 30, Issue 3, 2009, pp. 285-297.
Указания и ограничения по применению:
Когда вы обучаете модель ECOC при помощи fitcecoc, применяются следующие ограничения.
Вы не можете подгонять апостериорные вероятности при помощи 'FitPosterior' аргумент пары "имя-значение".
Все двоичные ученики должны быть либо классификаторами SVM, либо линейными классификационными моделями. Для 'Learners' Аргумент пары "имя-значение" можно задать:
'svm' или 'linear'
Объект шаблона SVM или массив ячеек таких объектов (см. templateSVM)
Объект шаблона модели линейной классификации или массив ячеек таких объектов (см. templateLinear)
Когда вы генерируете код с помощью конфигуратора кодера для predict и updateследующие дополнительные ограничения применяются к двоичным ученикам.
Если вы используете массив ячеек из объектов шаблона SVM, значение 'Standardize' для учащихся SVM должны быть последовательными. Для примера, если вы задаете 'Standardize',true для одного учащегося SVM необходимо задать одно и то же значение для всех учащихся SVM.
Если вы используете массив ячеек из объектов шаблона SVM, и используете одного учащегося SVM с линейным ядром ('KernelFunction','linear') и другой с другим типом функции ядра, тогда необходимо указать для учащегося с линейным ядром.'SaveSupportVectors'Правда
Для получения дополнительной информации смотрите ClassificationECOCCoderConfigurer. Для получения информации об аргументах пары "имя-значение", которые вы не можете изменить при переобучении модели, см. Раздел « Советы».
Ограничения генерации кода для классификаторов SVM и линейных моделей классификации также применяются к классификаторам ECOC в зависимости от выбора двоичных учащихся. Для получения дополнительной информации смотрите Генерация кода CompactClassificationSVM класс и генерация кода ClassificationLinear класс.
Для получения дополнительной информации смотрите Введение в генерацию кода.
ClassificationECOC | ClassificationPartitionedECOC | ClassificationPartitionedKernelECOC | ClassificationPartitionedLinearECOC | compact | fitcecoc
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.