exponenta event banner

resubEdge

Край классификации повторного замещения для модели многоклассовых выходных кодов с исправлением ошибок (ECOC)

Описание

пример

e = resubEdge(Mdl) возвращает границу классификации повторного замещения (e) для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) Mdl используя учебные данные, хранящиеся в Mdl.X и соответствующие метки классов, хранящиеся в Mdl.Y.

Край классификации - это скалярное значение, представляющее средневзвешенное значение полей классификации.

пример

e = resubEdge(Mdl,Name,Value) вычисляет край классификации повторного замещения с дополнительными опциями, заданными одним или несколькими аргументами пары имя-значение. Например, можно указать схему декодирования, двоичную функцию потери ученика и уровень детализации.

Примеры

свернуть все

Вычислите край повторного замещения для модели ECOC с двоичными учащимися SVM.

Загрузите набор данных радужки Фишера. Укажите данные предиктора X и данные ответа Y.

load fisheriris
X = meas;
Y = species;

Обучение модели ECOC с использованием двоичных классификаторов SVM. Стандартизируйте предикторы с помощью шаблона SVM и укажите порядок классов.

t = templateSVM('Standardize',true);
classOrder = unique(Y)
classOrder = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Mdl = fitcecoc(X,Y,'Learners',t,'ClassNames',classOrder);

t является объектом шаблона SVM. Во время обучения программа использует значения по умолчанию для пустых свойств в t. Mdl является ClassificationECOC модель.

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

e = resubEdge(Mdl)
e = 0.4961

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

Загрузите набор данных радужки Фишера. Определите два набора данных:

  • fullX содержит все четыре предиктора.

  • partX содержит только измерения чашелистиков.

load fisheriris
X = meas;
fullX = X; 
partX = X(:,1:2);
Y = species;

Обучение модели ECOC с использованием двоичных учеников SVM для каждого набора предикторов. Стандартизируйте предикторы с помощью шаблона SVM, укажите порядок классов и вычислите апостериорные вероятности.

t = templateSVM('Standardize',true);
classOrder = unique(Y)
classOrder = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

FullMdl = fitcecoc(fullX,Y,'Learners',t,'ClassNames',classOrder,... 
    'FitPosterior',true);
PartMdl = fitcecoc(partX,Y,'Learners',t,'ClassNames',classOrder,...
    'FitPosterior',true);

Оценка SVM по умолчанию - это расстояние от границы принятия решения. Если для вычисления задних вероятностей указано, то программа использует задние вероятности в качестве баллов.

Вычислите ребро повторного замещения для каждого классификатора. Квадратичная функция потерь работает на баллах в области [0,1]. Укажите, чтобы использовать квадратичные потери при агрегировании двоичных учеников для обеих моделей.

fullEdge = resubEdge(FullMdl,'BinaryLoss','quadratic')
fullEdge = 0.9896
partEdge = resubEdge(PartMdl,'BinaryLoss','quadratic')
partEdge = 0.5059

Край для классификатора, обученного на полном наборе данных, больше, что позволяет предположить, что классификатор, обученный со всеми предикторами, имеет лучшую подгонку обучающей выборки.

Входные аргументы

свернуть все

Полная обучаемая многоклассная модель ECOC, указанная как ClassificationECOC модель обучена с fitcecoc.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: resubEdge(Mdl,'BinaryLoss','quadratic') задает квадратную двоичную функцию потери учащегося.

Двоичная функция потери ученика, заданная как разделенная запятыми пара, состоящая из 'BinaryLoss' и встроенное имя или дескриптор функции потери.

  • В этой таблице описываются встроенные функции, где yj - метка класса для конкретного двоичного ученика (в наборе {-1,1,0}), sj - оценка для наблюдения j, а g (yj, sj) - формула двоичных потерь.

    СтоимостьОписаниеДомен оценкиg (yj, sj)
    'binodeviance'Биномиальное отклонение(–∞,∞)журнал [1 + exp (-2yjsj) ]/[ 2log (2)]
    'exponential'Показательный(–∞,∞)exp (-yjsj )/2
    'hamming'Хэмминг[0,1] или (- ∞,∞)[1 - знак (yjsj) ]/2
    'hinge'Стержень(–∞,∞)max (0,1 - yjsj )/2
    'linear'Линейный(–∞,∞)(1 - yjsj )/2
    'logit'Логистический(–∞,∞)log [1 + exp (-yjsj) ]/[ 2log (2)]
    'quadratic'Квадратный[0,1][1-yj (2sj-1)] 2/2

    Программное обеспечение нормализует двоичные потери так, чтобы потери были 0,5, когда yj = 0. Кроме того, программное обеспечение вычисляет средние двоичные потери для каждого класса.

  • Например, для пользовательской двоичной функции потери customFunction, укажите его функциональный дескриптор 'BinaryLoss',@customFunction.

    customFunction имеет следующую форму:

    bLoss = customFunction(M,s)
    где:

    • M - матрица кодирования K-by-L, сохраненная в Mdl.CodingMatrix.

    • s - вектор 1-by-L строк классификационных баллов.

    • bLoss - потеря классификации. Этот скаляр агрегирует двоичные потери для каждого учащегося в конкретном классе. Например, можно использовать среднюю двоичную потерю для суммирования потерь по учащимся для каждого класса.

    • K - количество классов.

    • L - количество двоичных учеников.

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

Дефолт BinaryLoss значение зависит от диапазонов баллов, возвращаемых двоичными учениками. В этой таблице описаны некоторые значения по умолчанию BinaryLoss значения, основанные на данных допущениях.

ПредположениеЗначение по умолчанию
Все двоичные ученики являются SVM или линейными или классификационными моделями SVM.'hinge'
Все бинарные учащиеся являются ансамблями, обученными AdaboostM1 или GentleBoost.'exponential'
Все бинарные учащиеся являются ансамблями, обученными LogitBoost.'binodeviance'
Все двоичные ученики являются линейными или классификационными моделями ядра учащихся логистической регрессии. Или вы указываете, чтобы предсказать апостериорные вероятности класса путем установки 'FitPosterior',true в fitcecoc.'quadratic'

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

Пример: 'BinaryLoss','binodeviance'

Типы данных: char | string | function_handle

Схема декодирования, которая агрегирует двоичные потери, заданная как разделенная запятыми пара, состоящая из 'Decoding' и 'lossweighted' или 'lossbased'. Дополнительные сведения см. в разделе Потери двоичного кода.

Пример: 'Decoding','lossbased'

Опции оценки, указанные как пара, разделенная запятыми, состоящая из 'Options' и массив структуры, возвращенный statset.

Для вызова параллельных вычислений:

  • Вам нужна лицензия Parallel Computing Toolbox™.

  • Определить 'Options',statset('UseParallel',true).

Уровень детализации, указанный как разделенная запятыми пара, состоящая из 'Verbose' и 0 или 1. Verbose управляет количеством диагностических сообщений, отображаемых программой в окне команд.

Если Verbose является 0, то программное обеспечение не отображает диагностические сообщения. В противном случае программа отображает диагностические сообщения.

Пример: 'Verbose',1

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

Подробнее

свернуть все

Край классификации

Край классификации - это средневзвешенное значение полей классификации.

Один из способов выбора из нескольких классификаторов, например, выбор элемента, - выбор классификатора, который дает наибольший край.

Маржа классификации

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

Двоичные потери

Двоичная потеря - это функция класса и оценки классификации, которая определяет, насколько хорошо двоичный ученик классифицирует наблюдение в классе.

Предположим, что:

  • mkj - элемент (k, j) матрицы M дизайна кодирования (то есть код, соответствующий классу k двоичного учащегося j).

  • sj - оценка двоичного ученика j для наблюдения.

  • g - функция двоичных потерь.

  • k ^ - прогнозируемый класс для наблюдения.

При декодировании на основе потерь [Escalera et al.] класс, производящий минимальную сумму двоичных потерь над двоичными учениками, определяет прогнозируемый класс наблюдения, то есть

k^=argmink∑j=1L'mkj'g (mkj, sj).

При декодировании со взвешенными потерями [Escalera et al.] класс, производящий минимальное среднее двоичных потерь по двоичным ученикам, определяет прогнозируемый класс наблюдения, то есть

k^=argmink∑j=1L'mkj'g (mkj, sj) ∑j=1L'mkj|.

Allwein et al. предполагают, что взвешенное по потерям декодирование улучшает точность классификации, сохраняя значения потерь для всех классов в одном динамическом диапазоне.

Эта таблица суммирует поддерживаемые функции потерь, где yj - метка класса для конкретного двоичного ученика (в наборе {-1,1,0}), sj - оценка для наблюдения j, и g (yj, sj).

СтоимостьОписаниеДомен оценкиg (yj, sj)
'binodeviance'Биномиальное отклонение(–∞,∞)журнал [1 + exp (-2yjsj) ]/[ 2log (2)]
'exponential'Показательный(–∞,∞)exp (-yjsj )/2
'hamming'Хэмминг[0,1] или (- ∞,∞)[1 - знак (yjsj) ]/2
'hinge'Стержень(–∞,∞)max (0,1 - yjsj )/2
'linear'Линейный(–∞,∞)(1 - yjsj )/2
'logit'Логистический(–∞,∞)log [1 + exp (-yjsj) ]/[ 2log (2)]
'quadratic'Квадратный[0,1][1-yj (2sj-1)] 2/2

Программное обеспечение нормализует двоичные потери так, что потери составляют 0,5, когда yj = 0, и агрегирует, используя среднее значение двоичных учеников [Allwein et al.].

Не путайте бинарную потерю с общей классификационной потерей (указанной 'LossFun' аргумент пары имя-значение loss и predict объектные функции), который измеряет, насколько хорошо классификатор ECOC работает в целом.

Совет

  • Чтобы сравнить поля или края нескольких классификаторов ECOC, используйте объекты шаблона для определения общей функции преобразования баллов среди классификаторов во время обучения.

Ссылки

[1] Allwein, E., R. Schapire и Y. Singer. «Сокращение мультиклассов до двоичных: унифицирующий подход к classifiers маржи». Журнал исследований машинного обучения. Том 1, 2000, стр. 113-141.

[2] Эскалера, С., О. Пужоль и П. Радева. «Процесс декодирования в выходных кодах с тройной коррекцией ошибок». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 32, выпуск 7, 2010, стр. 120-134.

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

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

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