exponenta event banner

CompactClassificationECOC

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

Описание

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

Создание

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

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

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

Свойства

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

После создания CompactClassificationECOC объект модели, для доступа к его свойствам можно использовать точечную нотацию. Пример см. в разделе Классификатор ECOC Train and Cross-Validate.

Свойства 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).

СтоимостьНазначение класса Dichotomous
–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 если его истинный класс 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'log (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)
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossПотеря классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC)
marginПоля классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC)
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictКлассификация наблюдений с использованием многоклассовой модели выходных кодов с исправлением ошибок (ECOC)
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. Укажите использование ядра Gaussian.

rng(1);  % For reproducibility
tNB = templateNaiveBayes();
tSVM = templateSVM('KernelFunction','gaussian');
tLearners = {tNB tNB tSVM};

tNB и tSVM являются шаблонными объектами для наивного обучения Bayes и 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] Фюрнкранц, Йоханнес. «Циклическая классификация». Журнал исследований машинного обучения, том 2, 2002, стр. 721-747.

[2] Эскалера, С., О. Пужоль и П. Радева. «Разделяемость троичных кодов для разреженных конструкций выходных кодов с исправлением ошибок». Письма для распознавания образов, том 30, выпуск 3, 2009, стр. 285-297.

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

.
Представлен в R2014b