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 objects. Axes object 1 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes object 2 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes object 3 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes object 4 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes object 5 contains 3 objects of type line. These objects represent setosa, versicolor, virginica. Axes object 6 contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

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

Создайте шаблон ECOC. Задайте, чтобы использовать one-all, кодирующего проект.

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 проводит 5 2 k-сгиб F тест, который не является соответствующим как односторонний тест. Задайте, чтобы провести 5 2 k-сгиб 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

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

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

свернуть все

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 log2KДля каждого бинарного ученика программное обеспечение случайным образом присваивает классы в положительные или отрицательные классы с по крайней мере одним из каждого типа. Для получения дополнительной информации см. Случайные Матрицы Проекта Кодирования.
'onevsall'KДля каждого бинарного ученика один класс положителен, и остальные отрицательны. Этот проект исчерпывает все комбинации положительных присвоений класса.
'ordinal'K 1Для первого бинарного ученика первый класс отрицателен, и остальные положительные. Для второго бинарного ученика первые два класса отрицательны, остальные положительные, и так далее.
'sparserandom'Случайный, но приблизительно 15 log2KДля каждого бинарного ученика программное обеспечение случайным образом присваивает классы как положительные или отрицательные с вероятностью 0.25 для каждого, и игнорирует классы с вероятностью 0.5. Для получения дополнительной информации см. Случайные Матрицы Проекта Кодирования.
'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.

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

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

Для получения дополнительной информации о форме пользовательских матриц проекта кодирования см. Пользовательские Матрицы Проекта Кодирования.

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

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

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

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

fitcecoc не поддерживает подходящие апостериорные вероятности если:

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

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

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

Типы данных: логический

Бинарный ученик обрабатывает по шаблону в виде разделенной запятой пары, состоящей из '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