templateECOC

Выходной шаблон ученика кода с коррекцией ошибок

Синтаксис

t = templateECOC()
t = templateECOC(Name,Value)

Описание

пример

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 = combnk(1:d,2);

figure;
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

На основе 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(1,:)),meas,species,...
    'Alternative','greater','Test','5x2t')
h = logical
   0

pValue = 0.8940

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

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

свернуть все

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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.

  • Для всех индексов столбца i, j, таким образом, что 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