CompactClassificationECOC

Компактная модель мультикласса для машин опорных векторов (SVMs) и других классификаторов

Описание

CompactClassificationECOC компактная версия модели выходных кодов с коррекцией ошибок (ECOC) мультикласса. Компактный классификатор не включает данные, используемые в обучении мультикласс модель ECOC. Поэтому вы не можете выполнить определенные задачи, такие как перекрестная проверка, с помощью компактного классификатора. Используйте компактный мультикласс модель ECOC в задачах, таких как классификация новых данных (predict).

Создание

Можно создать CompactClassificationECOC модель двумя способами:

  • Создайте компактную модель ECOC из обученного ClassificationECOC модель при помощи compact объектная функция.

  • Создайте компактную модель ECOC при помощи fitcecoc функция и определение 'Learners' аргумент пары "имя-значение" как 'linear', 'kernel', templateLinear или templateKernel объект или массив ячеек таких объектов.

Свойства

развернуть все

После того, как вы создаете CompactClassificationECOC объект модели, можно использовать запись через точку, чтобы получить доступ к ее свойствам. Для примера смотрите, Обучают и перекрестный Подтверждают Классификатор ECOC.

Свойства ECOC

Обученные бинарные ученики, заданные как вектор ячейки объектов модели. Количество бинарных учеников зависит от количества классов в Y и проект кодирования.

Программное обеспечение обучает BinaryLearner{j} согласно бинарной проблеме, заданной CodingMatrix(:,j). Например, для изучения мультикласса с помощью учеников SVM, каждого элемента BinaryLearners CompactClassificationSVM классификатор.

Типы данных: cell

Бинарная функция потерь ученика, заданная как вектор символов, представляющий имя функции потерь.

Если вы обучаете использующих бинарных учеников, которые используют различные функции потерь, то программное обеспечение устанавливает BinaryLoss к 'hamming'. Чтобы потенциально увеличить точность, задайте бинарную функцию потерь кроме значения по умолчанию во время прогноза или расчета потерь при помощи 'BinaryLoss' аргумент пары "имя-значение" predict или loss.

Типы данных: char

Коды присвоения класса для бинарных учеников, заданных как числовая матрица. 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

Бинарные веса ученика, заданные как числовой вектор-строка. Длина LeanerWeights равно количеству бинарных учеников (length(Mdl.BinaryLearners)).

LearnerWeights(j) сумма весов наблюдения тот бинарный ученик j использование, чтобы обучить его классификатор.

Программное обеспечение использует LearnerWeights соответствовать апостериорным вероятностям путем минимизации расхождения Kullback-Leibler. Программное обеспечение игнорирует LearnerWeights когда это использует метод квадратичного программирования оценки апостериорных вероятностей.

Типы данных: double | single

Другие свойства классификации

Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

Типы данных: single | double

Уникальные метки класса используются в обучении, заданном как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames имеет совпадающий тип данных, когда класс маркирует Y. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.) ClassNames также определяет порядок класса.

Типы данных: categorical | char | logical | single | double | cell

Это свойство доступно только для чтения.

Затраты Misclassification, заданные как квадратная числовая матрица. Cost имеет строки и столбцы K, где K является количеством классов.

Cost(i,j) стоимость классификации точки в класс j если его истинным классом является i. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.

fitcecoc включает затраты misclassification по-другому среди различных типов бинарных учеников.

Типы данных: double

Расширенные имена предиктора, заданные как массив ячеек из символьных векторов.

Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames совпадает с PredictorNames.

Предиктор называет в порядке их внешнего вида в данных о предикторе X, заданный как массив ячеек из символьных векторов. Длина PredictorNames равно количеству столбцов в X.

Типы данных: cell

Это свойство доступно только для чтения.

Предшествующие вероятности класса, заданные как числовой вектор. Prior имеет столько же элементов сколько количество классов в ClassNames, и порядок элементов соответствует порядку классов в ClassNames.

fitcecoc включает затраты misclassification по-другому среди различных типов бинарных учеников.

Типы данных: double

Имя переменной отклика, заданное как вектор символов.

Типы данных: char

Выиграйте функцию преобразования, чтобы примениться к предсказанным баллам, определенному функцией имени или указателю на функцию.

Чтобы изменить преобразование счета функционируют к 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             15084  classreg.learning.classif.CompactClassificationECOC              
  Mdl             1x1             28567  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 array
    {'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%.

Алгоритмы

развернуть все

Ссылки

[1] Fürnkranz, Иоганнес. “Круговая Классификация”. Журнал Исследования Машинного обучения, Издания 2, 2002, стр 721–747.

[2] Escalera, S., О. Пуджол и П. Радева. “Отделимость троичных кодов для разреженных проектов выходных кодов с коррекцией ошибок”. Буквы Распознавания образов, Издание 30, Выпуск 3, 2009, стр 285–297.

Расширенные возможности

Введенный в R2014b