crossval

Перекрестный подтвердите модель выходных кодов с коррекцией ошибок (ECOC) мультикласса

Описание

пример

CVMdl = crossval(Mdl) возвращает перекрестную подтвержденную (разделенную) модель выходных кодов с коррекцией ошибок (ECOC) мультикласса (CVMdl) из обученной модели ECOC (Mdl). По умолчанию, crossval использует 10-кратную перекрестную проверку на обучающих данных, чтобы создать CVMdl, ClassificationPartitionedECOC модель.

пример

CVMdl = crossval(Mdl,Name,Value) возвращает разделенную модель ECOC с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно задать количество сгибов или демонстрационной пропорции затяжки.

Примеры

свернуть все

Перекрестный подтвердите классификатор ECOC с бинарными учениками SVM и оцените обобщенную ошибку классификации.

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

load fisheriris
X = meas;
Y = species;
rng(1); % For reproducibility

Создайте шаблон SVM и стандартизируйте предикторы.

t = templateSVM('Standardize',true)
t = 
Fit template for classification SVM.

                     Alpha: [0x1 double]
             BoxConstraint: []
                 CacheSize: []
             CachingMethod: ''
                ClipAlphas: []
    DeltaGradientTolerance: []
                   Epsilon: []
              GapTolerance: []
              KKTTolerance: []
            IterationLimit: []
            KernelFunction: ''
               KernelScale: []
              KernelOffset: []
     KernelPolynomialOrder: []
                  NumPrint: []
                        Nu: []
           OutlierFraction: []
          RemoveDuplicates: []
           ShrinkagePeriod: []
                    Solver: ''
           StandardizeData: 1
        SaveSupportVectors: []
            VerbosityLevel: []
                   Version: 2
                    Method: 'SVM'
                      Type: 'classification'

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

Обучите классификатор ECOC и задайте порядок класса.

Mdl = fitcecoc(X,Y,'Learners',t,...
    'ClassNames',{'setosa','versicolor','virginica'});

Mdl ClassificationECOC классификатор. Можно получить доступ к его свойствам с помощью записи через точку.

Перекрестный подтвердите Mdl использование 10-кратной перекрестной проверки.

CVMdl = crossval(Mdl);

CVMdl ClassificationPartitionedECOC перекрестный подтвержденный классификатор ECOC.

Оцените обобщенную ошибку классификации.

genError = kfoldLoss(CVMdl)
genError = 0.0400

Обобщенная ошибка классификации составляет 4%, который указывает, что классификатор ECOC делает вывод довольно хорошо.

Рассмотрите arrhythmia набор данных. Этот набор данных содержит 16 классов, 13 из которых представлены в данных. Первый класс указывает, что предмет не имеет аритмии, и последний класс указывает, что состояние аритмии предмета не зарегистрировано. Другие классы являются порядковыми уровнями, указывающими на серьезность аритмии.

Обучите классификатор ECOC с пользовательским проектом кодирования, заданным описанием классов.

Загрузите arrhythmia набор данных. Преобразуйте Y к categorical переменная, и определяет количество классов.

load arrhythmia
Y = categorical(Y);
K = unique(Y); % Number of distinct classes

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

OrdMat = designecoc(11,'ordinal');
nOrdMat = size(OrdMat);
class1VSOrd = [1; -ones(11,1); 0];
class1VSClass16 = [1; zeros(11,1); -1];
OrdVSClass16 = [0; ones(11,1); -1];
Coding = [class1VSOrd class1VSClass16 OrdVSClass16,...
    [zeros(1,nOrdMat(2)); OrdMat; zeros(1,nOrdMat(2))]];

Обучите классификатор ECOC с помощью пользовательского проекта кодирования (Coding) и параллельные вычисления. Укажите, что ансамбль 50 деревьев классификации повысил использование GentleBoost.

t = templateEnsemble('GentleBoost',50,'Tree');
options = statset('UseParallel',true);
Mdl = fitcecoc(X,Y,'Coding',Coding,'Learners',t,'Options',options);
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).

Mdl ClassificationECOC модель. Можно получить доступ к его свойствам с помощью записи через точку.

Перекрестный подтвердите Mdl использование 8-кратной перекрестной проверки и параллельных вычислений.

rng(1); % For reproducibility
CVMdl = crossval(Mdl,'Options',options,'KFold',8);
Warning: One or more folds do not contain points from all the groups.

Поскольку некоторые классы имеют низкую относительную частоту, некоторые сгибы не обучают наблюдения использования от тех классов. CVMdl ClassificationPartitionedECOC перекрестная подтвержденная модель ECOC.

Оцените параллельные вычисления ошибки обобщения.

error = kfoldLoss(CVMdl,'Options',options)
error = 0.3208

Перекрестная подтвержденная ошибка классификации составляет 32%, который указывает, что эта модель не делает вывод хорошо. Чтобы улучшить модель, попробуйте обучение с помощью различного повышающего метода, такого как RobustBoost или различный алгоритм, такой как SVM.

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

свернуть все

Полный, обученный мультикласс модель ECOC в виде ClassificationECOC модель, обученная с fitcecoc.

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

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

Пример: crossval(Mdl,'KFold',3) задает использование трех сгибов в перекрестной подтвержденной модели.

Раздел перекрестной проверки в виде разделенной запятой пары, состоящей из 'CVPartition' и cvpartition объект раздела, созданный cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.

Часть данных, используемых для валидации затяжки в виде разделенной запятой пары, состоящей из 'Holdout' и скалярное значение в области значений (0,1). Если вы задаете 'Holdout',p, затем программное обеспечение завершает эти шаги:

  1. Случайным образом выберите и зарезервируйте p*100% из данных как данные о валидации, и обучают модель с помощью остальной части данных.

  2. Сохраните компактную, обученную модель в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Holdout',0.1

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

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде разделенной запятой пары, состоящей из 'KFold' и положительное целочисленное значение, больше, чем 1. Если вы задаете 'KFold',k, затем программное обеспечение завершает эти шаги:

  1. Случайным образом разделите данные в k наборы.

  2. Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.

  3. Сохраните k компактные, обученные модели в ячейках k- 1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'KFold',5

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

Флаг перекрестной проверки "Пропускает один" в виде разделенной запятой пары, состоящей из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', затем, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations свойство модели), программное обеспечение завершает эти шаги:

  1. Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.

  2. Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Leaveout','on'

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

Вызвать параллельные вычисления:

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

  • Задайте 'Options',statset('UseParallel',true).

Советы

  • Оцените прогнозирующую эффективность Mdl на перекрестных подтвержденных данных с помощью "kfold" методов и свойств CVMdl, такой как kfoldLoss.

Альтернативная функциональность

Вместо обучения модель ECOC и затем перекрестная проверка его, можно создать перекрестную подтвержденную модель ECOC непосредственно при помощи fitcecoc и определение одного из этих аргументов пары "имя-значение": 'CrossVal', 'CVPartition', 'Holdout', 'Leaveout', или 'KFold'.

Расширенные возможности

Введенный в R2014b