templateECOC

Исправление ошибок выхода обучающегося выходного кода

Описание

пример

t = templateECOC() возвращает шаблон учащегося классификации кодов выхода с исправлением ошибок (ECOC).

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

пример

t = templateECOC(Name,Value) возвращает шаблон с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".

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

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

Примеры

свернуть все

Использование templateECOC для создания шаблона ECOC по умолчанию.

t = templateECOC()
t = 
Fit template for classification ECOC.

    BinaryLearners: ''
            Coding: ''
      FitPosterior: []
           Options: []
    VerbosityLevel: []
     NumConcurrent: []
           Version: 1
            Method: 'ECOC'
              Type: 'classification'

Все свойства объекта шаблона пусты, кроме Method и Type. Когда ты проходишь t на testckfoldпрограмма заполняет пустые свойства соответствующими значениями по умолчанию. Например, программное обеспечение заполняет BinaryLearners свойство с 'SVM'. Для получения дополнительной информации о других значениях по умолчанию смотрите fitcecoc.

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

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

Загрузите набор данных радужки Фишера. Постройте график всех 2-мерных комбинаций предикторов.

load fisheriris
d = size(meas,2); % Number of predictors
pairs = nchoosek(1:d,2)
pairs = 6×2

     1     2
     1     3
     1     4
     2     3
     2     4
     3     4

for j = 1:size(pairs,1)
    subplot(3,2,j)
    gscatter(meas(:,pairs(j,1)),meas(:,pairs(j,2)),species)
    xlabel(sprintf('meas(:,%d)',pairs(j,1)))
    ylabel(sprintf('meas(:,%d)',pairs(j,2)))
    legend off
end

Figure contains 6 axes. Axes 1 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes 2 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes 3 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes 4 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes 5 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes 6 contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

На основе scatterplot, meas(:,3) и meas(:,4) похоже, они хорошо разделяют группы.

Создайте шаблон ECOC. Задайте, чтобы использовать проект кодирования один от всех.

t = templateECOC('Coding','onevsall');

По умолчанию в модели ECOC используются линейные двоичные ученики SVM. Можно выбрать другие поддерживаемые алгоритмы, указав их с помощью 'Learners' аргумент пары "имя-значение".

Проверьте, выполняет ли модель ECOC, которая только что обучена с использованием предикторов 3 и 4, самое большее, а также модель ECOC, которая обучена с использованием всех предикторов. Отклонение этой нулевой гипотезы означает, что модель ECOC, обученная с использованием предикторов 3 и 4, работает лучше, чем модель ECOC, обученная с использованием всех предикторов. Предположим C1 представляет классификационную ошибку модели ECOC, обученную с использованием предикторов 3 и 4 и C2 представляет ошибку классификации модели ECOC, обученную с использованием всех предикторов, затем тест следующий:

H0:C1C2H1:C1<C2

По умолчанию testckfold проводит тест F 5 на 2 k-fold, который не подходит в качестве однохвостого теста. Задайте, чтобы провести тест 5 на 2 k-fold t.

rng(1); % For reproducibility
[h,pValue] = testckfold(t,t,meas(:,pairs(6,:)),meas,species,...
    'Alternative','greater','Test','5x2t')
h = logical
   0

pValue = 0.8940

The h = 0 указывает, что недостаточно доказательств, чтобы предположить, что модель, обученная с использованием предикторов 3 и 4, более точна, чем модель, обученная с использованием всех предикторов.

Входные параметры

свернуть все

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

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

Пример: 'Coding','ternarycomplete','FitPosterior',true,'Learners','tree' задает тройной проект полного кодирования, для преобразования счетов в апостериорные вероятности и для роста деревьев классификации для всех двоичных учащихся.

Имя проекта кодирования, заданное как разделенная разделенными запятой парами, состоящая из 'Coding' и числовую матрицу или значение в этой таблице.

ЗначениеКоличество двоичных учащихсяОписание
'allpairs' и 'onevsone'K (K – 1)/2Для каждого двоичного ученика один класс положителен, другой отрицателен, и программное обеспечение игнорирует восстановление. Этот проект исчерпывает все комбинации присвоений пар классов.
'binarycomplete'2(K1)1Этот проект разбивает классы на все двоичные комбинации и не игнорирует никакие классы. Для каждого двоичного ученика все назначения классов -1 и 1 с по крайней мере одним положительным и отрицательным классом в присвоении.
'denserandom'Случайный, но приблизительно 10 лог2 KДля каждого двоичного ученика программа случайным образом назначает классы в положительные или отрицательные классы с по крайней мере одним из каждого типа. Для получения дополнительной информации смотрите Random Coding Design Matrices.
'onevsall'KДля каждого двоичного ученика один класс положителен, а остальные отрицательны. Этот проект исчерпывает все комбинации положительных присвоений классов.
'ordinal'K – 1Для первого двоичного ученика первый класс отрицателен, а остальное положительно. Для второго двоичного ученика первые два класса отрицательны, остальные положительны и так далее.
'sparserandom'Случайный, но приблизительно 15 лог2 KДля каждого двоичного ученика программа случайным образом присваивает классы как положительные или отрицательные с вероятностью 0,25 для каждого и игнорирует классы с вероятностью 0,5. Для получения дополнительной информации смотрите Random Coding Design Matrices.
'ternarycomplete'(3K2(K+1)+1)/2Этот проект разделяет классы на все троичные комбинации. Все назначения классов 0, -1, и 1 с по крайней мере одним положительным и одним отрицательным классом в присвоении.

Можно также задать проект кодирования с помощью пользовательской матрицы кодирования. Пользовательская матрица кодирования является K -by - L матрицей. Каждая строка соответствует классу, и каждый столбец соответствует двоичному ученику. Порядок классов (строки) соответствует порядку в ClassNames. Составьте матрицу, следуя этим рекомендациям:

  • Каждый элемент пользовательской матрицы кодирования должен быть -1, 0, или 1, и значение должно соответствовать присвоению дихотомического класса. В этой таблице описывается значение Coding(i,j), то есть класс, который обучается j присваивает наблюдениям в i классов.

    ЗначениеПрисвоение дихотомических классов
    –1Обучающиеся j присваивает наблюдения в i классов в отрицательный класс.
    0Перед обучением учащийся j удаляет наблюдения в i классов из набора данных.
    1Обучающиеся j присваивает наблюдения в i классов в положительный класс.

  • Каждый столбец должен содержать по крайней мере один -1 или 1.

  • Для всех индексов столбцов i, j таким образом ij, Coding(:,i) не может равняться Coding(:,j) и Coding(:,i) не может равняться -Coding(:,j).

  • Все строки пользовательской матрицы кодирования должны быть различными.

Для получения дополнительной информации о форме пользовательских матриц проекта кодирования, см. Custom Coding Design Matrices.

Пример: 'Coding','ternarycomplete'

Типы данных: char | string | double | single | int16 | int32 | int64 | int8

Флаг, указывающий, преобразовать ли счета в апостериорные вероятности, заданный как разделенная разделенными запятой парами, состоящая из 'FitPosterior' и a true (1) или false (0).

Если FitPosterior является trueзатем программное обеспечение преобразует классификационные оценки двоичных учащихся в апостериорные вероятности. Можно получить апостериорные вероятности при помощи kfoldPredict, predict, или resubPredict.

fitcecoc не поддерживает аппроксимацию апостериорных вероятностей, если:

  • Метод ансамбля AdaBoostM2, LPBoost, RUSBoost, RobustBoost, или TotalBoost.

  • Двоичные ученики (Learners) являются линейными или ядерными классификационными моделями, которые реализуют SVM. Чтобы получить апостериорные вероятности для линейных или ядерные модели классификации, реализуйте вместо этого логистическую регрессию.

Пример: 'FitPosterior',true

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

Двоичные шаблоны учащихся, заданные как разделенная разделенными запятой парами, состоящая из 'Learners' и вектор символов, строковый скаляр, объект шаблона или вектор камер объектов шаблона. В частности, можно задать двоичные классификаторы, такие как SVM, и ансамбли, которые используют GentleBoost, LogitBoost, и RobustBoost, для решения многоклассовых задач. Однако fitcecoc также поддерживает многоклассовые модели в качестве двоичных классификаторов.

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

    ЗначениеОписание
    'discriminant'Дискриминантный анализ. Для опций по умолчанию см. templateDiscriminant.
    'kernel'Классификационная модель ядра. Для опций по умолчанию см. templateKernel.
    'knn'k - ближайшие соседи. Для опций по умолчанию см. templateKNN.
    'linear'Линейная классификационная модель. Для опций по умолчанию см. templateLinear.
    'naivebayes'Наивный Бейес. Для опций по умолчанию см. templateNaiveBayes.
    'svm'SVM. Для опций по умолчанию см. templateSVM.
    'tree'Деревья классификации. Для опций по умолчанию см. templateTree.

  • Если Learners является объектом шаблона, затем каждый двоичный ученик обучается в соответствии с сохраненными опциями. Можно создать объект шаблона с помощью:

    • templateDiscriminant, для дискриминантного анализа.

    • templateEnsemble, для обучения ансамбля. Необходимо как минимум задать метод обучения (Method), количество учащихся (NLearn), и тип обучающегося (Learners). Вы не можете использовать AdaBoostM2 ансамблевый метод двоичного обучения.

    • templateKernel, для классификации ядра.

    • templateKNNдля k - ближайших соседей.

    • templateLinear, для линейной классификации.

    • templateNaiveBayesдля наивного Бейеса.

    • templateSVM, для SVM.

    • templateTree, для деревьев классификации.

  • Если Learners является вектором камер объектов шаблона, затем:

    • j камеры соответствует двоичным j обучающегося (другими словами, j столбца матрицы проекта кодирования), и вектор камеры должен иметь L длины. L - количество столбцов в матрице проекта кодирования. Для получения дополнительной информации смотрите Coding.

    • Чтобы использовать одну из встроенных функций потерь для предсказания, все двоичные ученики должны вернуть счет в той же области значений. Например, вы не можете включать двоичных учащихся SVM по умолчанию с наивными двоичными учениками Байеса по умолчанию. Первый возвращает счет в области значений (- ∞, ∞), а второй возвращает апостериорную вероятность как счет. В противном случае необходимо предоставить пользовательскую потерю в качестве указателя на функцию таким функциям, как predict и loss.

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

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

По умолчанию программа обучает учащихся с помощью шаблонов SVM по умолчанию.

Пример: 'Learners','tree'

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

свернуть все

Шаблон классификации ECOC, возвращенный как объект шаблона. Передайте t кому testckfold чтобы указать, как создать классификатор ECOC, прогнозирующую эффективность которого необходимо сравнить с другим классификатором.

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

Введенный в R2015a