exponenta event banner

crossval

Модель многоклассовых кодов вывода с исправлением ошибок (ECOC)

Описание

пример

CVMdl = crossval(Mdl) возвращает перекрестно проверенную (секционированную) многоклассовую модель выходных кодов с исправлением ошибок (ECOC) (CVMdl) из обученной модели ECOC (Mdl). По умолчанию crossval использует 10-кратную перекрестную проверку данных обучения для создания CVMdl, a 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%, что указывает на то, что эта модель плохо обобщается. Чтобы улучшить модель, попробуйте провести обучение, используя другой метод повышения, например, SharingBoost, или другой алгоритм, например SVM.

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

свернуть все

Полная обучаемая многоклассная модель ECOC, указанная как ClassificationECOC модель обучена с fitcecoc.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Флаг перекрестной проверки «оставить один», указанный как '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