exponenta event banner

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.

На основе диаграммы рассеяния, 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:C1≥C2H1: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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

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

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

СтоимостьЧисло двоичных учениковОписание
'allpairs' и 'onevsone'К (К - 1 )/2Для каждого двоичного ученика один класс является положительным, другой отрицательным, и программное обеспечение игнорирует восстановление.
'binarycomplete'2 (К 1) − 1Эта конструкция разбивает классы на все бинарные комбинации и не игнорирует никакие классы. Для каждого двоичного ученика все назначения класса: -1 и 1 хотя бы с одним положительным и отрицательным классом в назначении.
'denserandom'Случайный, но приблизительно 10 log2KДля каждого двоичного ученика программное обеспечение случайным образом распределяет классы в положительные или отрицательные классы, по крайней мере один из каждого типа. Дополнительные сведения см. в разделе Матрицы проектирования произвольного кодирования.
'onevsall'KДля каждого двоичного ученика один класс является положительным, а остальные - отрицательными. Эта конструкция исчерпывает все комбинации положительных назначений классов.
'ordinal'К - 1Для первого двоичного ученика первый класс отрицательный, а остальные положительные. Для второго двоичного ученика первые два класса отрицательные, остальные положительные и так далее.
'sparserandom'Случайный, но примерно 15 log2KДля каждого двоичного ученика программа случайным образом назначает классы как положительные или отрицательные с вероятностью 0,25 для каждого и игнорирует классы с вероятностью 0,5. Дополнительные сведения см. в разделе Матрицы проектирования произвольного кодирования.
'ternarycomplete'(3K 2 (K + 1) + 1 )/2Эта конструкция разбивает классы на все троичные комбинации. Все назначения классов: 0, -1, и 1 с по меньшей мере одним положительным и одним отрицательным классами в назначении.

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

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

    СтоимостьНазначение класса Dichotomous
    –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

Типы данных: 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 матрицы дизайна кодирования), и вектор ячейки должен иметь длину LL - количество столбцов в матрице дизайна кодирования. Для получения более подробной информации см. Coding.

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

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

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

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

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

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

свернуть все

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

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

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