exponenta event banner

край

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

Описание

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

e = edge(Mdl,tbl,Y) возвращает край классификации для классификатора Mdl использование данных предиктора в таблице tbl и метки класса в векторе Y.

пример

e = edge(Mdl,X,Y) возвращает край классификации (e) для классификатора Mdl использование данных предиктора в матрице X и метки класса в векторе Y.

пример

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

Примеры

свернуть все

Вычислите границу классификации тестового образца модели ECOC с помощью двоичных классификаторов SVM.

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

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
rng(1); % For reproducibility

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

t = templateSVM('Standardize',true);
PMdl = fitcecoc(X,Y,'Holdout',0.30,'Learners',t,'ClassNames',classOrder);
Mdl = PMdl.Trained{1};           % Extract trained, compact classifier

PMdl является ClassificationPartitionedECOC модель. Имеет свойство Trained, массив ячеек 1 на 1, содержащий CompactClassificationECOC модель, которую программное обеспечение обучило с использованием данных обучения.

Вычислите край тестового образца.

testInds = test(PMdl.Partition);  % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);
e = edge(Mdl,XTest,YTest)
e = 0.4574

Среднее значение полей тестового образца составляет приблизительно 0,46.

Вычислите среднее значение весовых полей тестовой выборки модели ECOC.

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

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

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
rng(1); % For reproducibility

Определите весовой вектор, который присваивает более качественным наблюдениям вдвое больший вес.

n = size(X,1);
weights = [ones(n-75,1);2*ones(75,1)];

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

t = templateSVM('Standardize',true);
PMdl = fitcecoc(X,Y,'Holdout',0.30,'Weights',weights,...
    'Learners',t,'ClassNames',classOrder);
Mdl = PMdl.Trained{1};           % Extract trained, compact classifier

PMdl является обученным ClassificationPartitionedECOC модель. Имеет свойство Trained, массив ячеек 1 на 1, содержащий CompactClassificationECOC классификатор, который программное обеспечение обучило с использованием данных обучения.

Вычислите взвешенный край тестовой выборки с помощью схемы взвешивания.

testInds = test(PMdl.Partition);  % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);
wTest = weights(testInds,:);
e = edge(Mdl,XTest,YTest,'Weights',wTest)
e = 0.4798

Средневзвешенный запас испытуемого образца составляет приблизительно 0,48.

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

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

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
rng(1); % For reproducibility

Разбейте набор данных на учебные и тестовые наборы. Укажите 30% образец хранения для тестирования.

Partition = cvpartition(Y,'Holdout',0.30);
testInds = test(Partition); % Indices for the test set
XTest = X(testInds,:);
YTest = Y(testInds,:);

Partition определяет раздел набора данных.

Определите два набора данных:

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

  • partX содержит только размеры лепестков.

fullX = X;
partX = X(:,3:4);

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

t = templateSVM('Standardize',true);
fullPMdl = fitcecoc(fullX,Y,'CVPartition',Partition,'Learners',t,...
    'ClassNames',classOrder);
partPMdl = fitcecoc(partX,Y,'CVPartition',Partition,'Learners',t,...
    'ClassNames',classOrder);
fullMdl = fullPMdl.Trained{1};
partMdl = partPMdl.Trained{1};

fullPMdl и partPMdl являются ClassificationPartitionedECOC модели. Каждая модель имеет свойство Trained, массив ячеек 1 на 1, содержащий CompactClassificationECOC модель, которую программное обеспечение обучило с использованием соответствующего обучающего набора.

Рассчитайте край тестового образца для каждого классификатора.

fullEdge = edge(fullMdl,XTest,YTest)
fullEdge = 0.4574
partEdge = edge(partMdl,XTest(:,3:4),YTest)
partEdge = 0.4839

partMdl дает значение кромки, сравнимое со значением для более сложной модели fullMdl.

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

свернуть все

Полная или компактная многоклассная модель ECOC, заданная как ClassificationECOC или CompactClassificationECOC объект модели.

Чтобы создать полную или компактную модель ECOC, см. раздел ClassificationECOC или CompactClassificationECOC.

Образец данных, указанный как таблица. Каждая строка tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, tbl может содержать дополнительные столбцы для переменной ответа и весов наблюдения. tbl должен содержать все предикторы, используемые для обучения Mdl. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.

Если вы тренируетесь Mdl с использованием образцов данных, содержащихся в table, затем входные данные для edge также должен находиться в таблице.

При обучении Mdl, предположим, что вы установили 'Standardize',true для объекта шаблона, указанного в 'Learners' аргумент пары имя-значение fitcecoc. В этом случае для соответствующего двоичного ученика j, программное обеспечение стандартизирует столбцы новых данных предиктора, используя соответствующие средства в Mdl.BinaryLearner{j}.Mu и стандартные отклонения в Mdl.BinaryLearner{j}.Sigma.

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

Имя переменной ответа, указанное как имя переменной в tbl. Если tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName.

При указании ResponseVarName, то это необходимо сделать как вектор символа или скаляр строки. Например, если переменная ответа сохранена как tbl.y, затем укажите ResponseVarName как 'y'. В противном случае программа обрабатывает все столбцы tbl, в том числе tbl.y, как предикторы.

Переменная ответа должна быть категориальным, символьным или строковым массивом, логическим или числовым вектором или массивом ячеек символьных векторов. Если ответная переменная является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

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

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

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

Количество строк в X должно равняться количеству строк в Y.

При обучении Mdl, предположим, что вы установили 'Standardize',true для объекта шаблона, указанного в 'Learners' аргумент пары имя-значение fitcecoc. В этом случае для соответствующего двоичного ученика j, программное обеспечение стандартизирует столбцы новых данных предиктора, используя соответствующие средства в Mdl.BinaryLearner{j}.Mu и стандартные отклонения в Mdl.BinaryLearner{j}.Sigma.

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

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

Количество строк в Y должно равняться количеству строк в tbl или X.

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

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

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

Пример: edge(Mdl,X,Y,'BinaryLoss','exponential','Decoding','lossbased') определяет экспоненциальную двоичную функцию потери ученика и схему декодирования на основе потерь для агрегирования двоичных потерь.

Двоичная функция потери ученика, заданная как разделенная запятыми пара, состоящая из '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'

Измерение наблюдения данных предиктора, указанное как пара, разделенная запятыми, состоящая из 'ObservationsIn' и 'columns' или 'rows'. Mdl.BinaryLearners должен содержать ClassificationLinear модели.

Примечание

Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', можно значительно сократить время выполнения. Невозможно указать 'ObservationsIn','columns' для данных предиктора в таблице.

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

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

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

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

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

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

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

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

Веса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и числовой вектор или имя переменной в tbl. При поставке весов edge вычисляет границу взвешенной классификации.

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

При указании Weights как имя переменной в tbl, необходимо сделать это как вектор символа или скаляр строки. Например, если веса сохранены как tbl.w, затем укажите Weights как 'w'. В противном случае программа обрабатывает все столбцы tbl, в том числе tbl.w, как предикторы.

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

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

свернуть все

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

Если Mdl.BinaryLearners содержит ClassificationLinear модели, затем e - вектор 1-by-L, где L - число уровней регуляризации в моделях линейной классификации (numel(Mdl.BinaryLearners{1}.Lambda)). Стоимость e(j) является краем для модели, обученной с использованием силы регуляризации Mdl.BinaryLearners{1}.Lambda(j).

В противном случае e является скалярным значением.

Подробнее

свернуть все

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

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

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

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

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

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

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

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

  • 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