CompactClassificationECOC

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

Описание

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

Создание

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

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

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

Свойства

расширить все

После создания CompactClassificationECOC объект модели, вы можете использовать запись через точку для доступа к его свойствам. Для получения примера смотрите Train и Перекрестная проверка классификатора 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

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

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

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

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

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

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

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

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

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

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

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

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

fitcecoc включает расходы на неправильную классификацию по-разному среди различных типов двоичных учащихся.

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

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

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

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

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

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

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

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

fitcecoc включает расходы на неправильную классификацию по-разному среди различных типов двоичных учащихся.

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

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

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

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

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

  • Для встроенной функции введите этот код и замените function со значением в таблице.

    Mdl.ScoreTransform = 'function';

    ЗначениеОписание
    'doublelogit'1/(1 + e–2x)
    'invlogit'журнал (x/( 1 - x))
    'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
    'logit'1/(1 + ex)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2 x – 1
    'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
    'symmetriclogit'2/(1 + ex) – 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 classes
K = 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%.

Алгоритмы

расширить все

Ссылки

[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.

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

.
Введенный в R2014b