testckfold

Сравните точность двух моделей классификации повторной перекрестной проверкой

Описание

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

Можно оценить, отличается ли точность моделей классификации, или выполняет ли одна модель классификации лучше, чем другой. Доступные тесты включают 5 2 парный тест t, 5 2 парный тест F и 10 10 повторную перекрестную проверку тест t. Для получения дополнительной информации смотрите Повторные Тесты Перекрестной проверки. Ускорять расчеты, testckfold параллельные вычисления поддержек (требует лицензии Parallel Computing Toolbox™).

пример

h = testckfold(C1,C2,X1,X2) возвращает тестовое решение, которое следует из проведения 5 2 парного теста перекрестной проверки F. Нулевая гипотеза является моделями C1 классификации и C2 имейте равную точность в предсказании истинных меток класса с помощью предиктора и данных об ответе в таблицах X1 и X2H= 1 указывает, чтобы отклонить нулевую гипотезу на 5%-м уровне значения.

testckfold проводит тест перекрестной проверки путем применения C1 и C2 ко всем переменным предикторам в X1 и X2, соответственно. Истинный класс помечает в X1 и X2 должно быть то же самое. Переменная отклика называет в X1x2 , C1.ResponseName, и C2.ResponseName должно быть то же самое.

Для примеров способов сравнить модели, смотрите Советы.

пример

h = testckfold(C1,C2,X1,X2,Y) применяет полную модель классификации, или классификация обрабатывает по шаблону C1 и C2 ко всем переменным предикторам в таблицах или матрицах данных X1 и X2, соответственно. Y имя табличной переменной, соответствующее истинным меткам класса или массиву истинных меток класса.

пример

h = testckfold(___,Name,Value) использование любой из входных параметров в предыдущих синтаксисах и дополнительных опциях задано одним или несколькими Name,Value парные аргументы. Например, можно задать тип альтернативной гипотезы, тип теста или использование параллельных вычислений.

пример

[h,p,e1,e2] = testckfold(___) также возвращает p - значение для теста гипотезы (p) и соответствующие потери классификации для каждой запущенной перекрестной проверки и сгиб (e1 и e2).

Примеры

свернуть все

В каждом узле, fitctree выбирает лучший предиктор, чтобы разделить использование исчерпывающего поиска по умолчанию. В качестве альтернативы можно принять решение разделить предиктор, который приводит большую часть доказательства зависимости с ответом путем проведения тестов искривления. Этот пример статистически сравнивает деревья классификации, выращенные через исчерпывающий поиск лучших разделений и выращенные путем проведения тестов искривления со взаимодействием.

Загрузите census1994 набор данных.

load census1994.mat
rng(1) % For reproducibility

Вырастите дерево классификации по умолчанию использование набора обучающих данных, adultdata, который является таблицей. Именем переменной отклика является 'salary'.

C1 = fitctree(adultdata,'salary')
C1 = 
  ClassificationTree
           PredictorNames: {1x14 cell}
             ResponseName: 'salary'
    CategoricalPredictors: [2 4 6 7 8 9 10 14]
               ClassNames: [<=50K    >50K]
           ScoreTransform: 'none'
          NumObservations: 32561


  Properties, Methods

C1 полный ClassificationTree модель. Его ResponseName свойством является 'salary'C1 использует исчерпывающий поиск, чтобы найти, что лучший предиктор разделяет на на основе максимального усиления разделения.

Вырастите другое дерево классификации использование того же набора данных, но задайте, чтобы найти, что лучший предиктор разделяет использование теста искривления со взаимодействием.

C2 = fitctree(adultdata,'salary','PredictorSelection','interaction-curvature')
C2 = 
  ClassificationTree
           PredictorNames: {1x14 cell}
             ResponseName: 'salary'
    CategoricalPredictors: [2 4 6 7 8 9 10 14]
               ClassNames: [<=50K    >50K]
           ScoreTransform: 'none'
          NumObservations: 32561


  Properties, Methods

C2 также полный ClassificationTree модель с ResponseName равняйтесь 'salary'.

Проведите 5 2 парный тест F, чтобы сравнить точность этих двух моделей с помощью набора обучающих данных. Поскольку переменная отклика называет в наборах данных и ResponseName свойства все равны, и данные об ответе в обоих наборах равны, можно не использовать снабжение данными об ответе.

h = testckfold(C1,C2,adultdata,adultdata)
h = logical
   0

h = 0 указывает, чтобы не отклонить нулевую гипотезу что C1 и C2 имейте ту же точность на 5%-м уровне.

Проведите статистический тест, сравнивающий misclassification уровни этих двух моделей с помощью 5 2 парного теста F.

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

load fisheriris;

Создайте наивный шаблон Bayes и шаблон дерева классификации с помощью опций по умолчанию.

C1 = templateNaiveBayes;
C2 = templateTree;

C1 и C2 объекты шаблона, соответствующие наивному Бейесу и алгоритмам дерева классификации, соответственно.

Протестируйте, имеют ли эти две модели равную прогнозирующую точность. Используйте те же данные о предикторе в каждой модели. testckfold проводит 5 2, двухсторонний, соединенный тест F по умолчанию.

rng(1); % For reproducibility
h = testckfold(C1,C2,meas,meas,species)
h = logical
   0

h = 0 указывает, чтобы не отклонить нулевую гипотезу, что эти две модели имеют равную прогнозирующую точность.

Проведите статистический тест, чтобы оценить, имеет ли более простая модель лучшую точность, чем более сложная модель с помощью 10 10 повторной перекрестной проверки t тест.

Загрузите ирисовый набор данных Фишера. Создайте матрицу стоимости, которая штрафует неправильную классификацию ирисовой диафрагмы setosa вдвое больше, чем неправильная классификация ирисовой диафрагмы virginica как versicolor.

load fisheriris;
tabulate(species)
       Value    Count   Percent
      setosa       50     33.33%
  versicolor       50     33.33%
   virginica       50     33.33%
Cost = [0 2 2;2 0 1;2 1 0];
ClassNames  = {'setosa' 'versicolor' 'virginica'};...
    % Specifies the order of the rows and columns in Cost

Эмпирическое распределение классов универсально, и стоимость классификации является немного неустойчивой.

Создайте два шаблона ECOC: тот, который использует линейных бинарных учеников SVM и того, который использует бинарных учеников SVM, снабженных ядром RBF.

tSVMLinear = templateSVM('Standardize',true); % Linear SVM by default
tSVMRBF = templateSVM('KernelFunction','RBF','Standardize',true);
C1 = templateECOC('Learners',tSVMLinear);
C2 = templateECOC('Learners',tSVMRBF);

C1 и C2 объекты шаблона ECOC. C1 подготовлен к линейному SVM. C2 подготовлен к SVM с обучением ядра RBF.

Протестируйте нулевую гипотезу что более простая модель (C1) самое большее так же точно как более сложная модель (C2) в терминах затрат классификации. Проведите 10 10 повторный тест перекрестной проверки. Запросите возвратить затраты misclassification и p-значения.

rng(1); % For reproducibility
[h,p,e1,e2] = testckfold(C1,C2,meas,meas,species,...
    'Alternative','greater','Test','10x10t','Cost',Cost,...
    'ClassNames',ClassNames)
h = logical
   0

p = 0.1077
e1 = 10×10

         0         0         0    0.0667         0    0.0667    0.1333         0    0.1333         0
    0.0667    0.0667         0         0         0         0    0.0667         0    0.0667    0.0667
         0         0         0         0         0    0.0667    0.0667    0.0667    0.0667    0.0667
    0.0667    0.0667         0    0.0667         0    0.0667         0         0    0.0667         0
    0.0667    0.0667    0.0667         0    0.0667    0.0667         0         0         0         0
         0         0    0.1333         0         0    0.0667         0         0    0.0667    0.0667
    0.0667    0.0667         0         0    0.0667         0         0    0.0667         0    0.0667
    0.0667         0    0.0667    0.0667         0    0.1333         0    0.0667         0         0
         0    0.0667    0.1333    0.0667    0.0667         0         0         0         0         0
         0    0.0667    0.0667    0.0667    0.0667         0         0    0.0667         0         0

e2 = 10×10

         0         0         0    0.1333         0    0.0667    0.1333         0    0.2667         0
    0.0667    0.0667         0    0.1333         0         0         0    0.1333    0.1333    0.0667
    0.1333    0.1333         0         0         0    0.0667         0    0.0667    0.0667    0.0667
         0    0.1333         0    0.0667    0.1333    0.1333         0         0    0.0667         0
    0.0667    0.0667    0.0667         0    0.0667    0.1333    0.1333         0         0    0.0667
    0.0667         0    0.0667    0.0667         0    0.0667    0.1333         0    0.0667    0.0667
    0.2000    0.0667         0         0    0.0667         0         0    0.1333         0    0.0667
    0.2000         0         0    0.1333         0    0.1333         0    0.0667         0         0
         0    0.0667    0.0667    0.0667    0.1333         0    0.2000         0         0         0
    0.0667    0.0667         0    0.0667    0.1333         0         0    0.0667    0.1333    0.0667

P-значение немного больше 0.10, который указывает, чтобы сохранить нулевую гипотезу, что более простая модель самое большее так же точна как более сложная модель. Этот результат сопоставим для любого уровня значения (Alpha) это самое большее 0.10.

e1 и e2 10 10 матрицы, содержащие misclassification затраты. Строка r соответствует запущенному r повторной перекрестной проверки. Столбец k соответствует сгибу набора тестов k в рамках конкретной запущенной перекрестной проверки. Например, элемент (2,4) из e2 0.1333. Это значение означает, что в перекрестной проверке запускаются 2, когда набор тестов является сгибом 4, предполагаемый набор тестов misclassification стоимость 0.1333.

Уменьшайте сложность модели классификации путем выбора подмножества переменных предикторов (функции) от большего набора. Затем статистически сравните точность между этими двумя моделями.

Загрузите ionosphere набор данных.

load ionosphere;

Обучите ансамбль 100 повышенных деревьев классификации с помощью AdaBoostM1 и целого набора предикторов. Смотрите меру по важности для каждого предиктора.

t = templateTree('MaxNumSplits',1); % Weak-learner template tree object
C = fitcensemble(X,Y,'Method','AdaBoostM1','Learners',t);
predImp = predictorImportance(C);

figure;
bar(predImp);
h = gca;
h.XTick = 1:2:h.XLim(2);
title('Predictor Importances');
xlabel('Predictor');
ylabel('Importance measure');

Идентифицируйте лучшие пять предикторов в терминах их важности.

[~,idxSort] = sort(predImp,'descend');
idx5 = idxSort(1:5);

Протестируйте, имеют ли эти две модели равную прогнозирующую точность. Задайте уменьшаемый набор данных и затем полные данные о предикторе. Используйте параллельные вычисления, чтобы ускорить расчеты.

s = RandStream('mlfg6331_64');
Options = statset('UseParallel',true,'Streams',s,'UseSubstreams',true);

[h,p,e1,e2] = testckfold(C,C,X(:,idx5),X,Y,'Options',Options)
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 12).
h = logical
   0

p = 0.4161
e1 = 5×2

    0.0686    0.0795
    0.0800    0.0625
    0.0914    0.0568
    0.0400    0.0739
    0.0914    0.0966

e2 = 5×2

    0.0914    0.0625
    0.1257    0.0682
    0.0971    0.0625
    0.0800    0.0909
    0.0914    0.1193

testckfold обработки обучили модели классификации как шаблоны, и таким образом, это игнорирует все приспособленные параметры в C. Таким образом, testckfold крест подтверждает C использование только заданных опций и данных о предикторе, чтобы оценить потери классификации из сгиба.

h = 0 указывает, чтобы не отклонить нулевую гипотезу, что эти две модели имеют равную прогнозирующую точность. Этот результат способствует более простому ансамблю.

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

свернуть все

Модель Classification обрабатывает по шаблону или обученная модель классификации, заданная как любой объект шаблона модели классификации или обученный объект модели классификации, описанный в этих таблицах.

Обработайте тип по шаблонуВозвращенный
Дерево классификацииtemplateTree
Дискриминантный анализtemplateDiscriminant
Ансамбль (повышение, укладывание в мешки и случайное подпространство)templateEnsemble
Выходные коды с коррекцией ошибок (ECOC), модель классификации мультиклассовtemplateECOC
k NN templateKNN
Наивный байесовtemplateNaiveBayes
Машина опорных векторов (SVM)templateSVM
Обученный тип моделиОбъект моделиВозвращенный
Дерево классификацииClassificationTreefitctree
Дискриминантный анализClassificationDiscriminantfitcdiscr
Ансамбль сложенных в мешок моделей классификацииClassificationBaggedEnsemblefitcensemble
Ансамбль моделей классификацииClassificationEnsemblefitcensemble
Модель ECOCClassificationECOCfitcecoc
k NN ClassificationKNNfitcknn
Наивный байесовClassificationNaiveBayesfitcnb
SVMClassificationSVMfitcsvm

Для КПД предоставьте объект шаблона модели классификации вместо обученного объекта модели классификации.

Модель Classification обрабатывает по шаблону или обученная модель классификации, заданная как любой объект шаблона модели классификации или обученный объект модели классификации, описанный в этих таблицах.

Обработайте тип по шаблонуВозвращенный
Дерево классификацииtemplateTree
Дискриминантный анализtemplateDiscriminant
Ансамбль (повышение, укладывание в мешки и случайное подпространство)templateEnsemble
Выходные коды с коррекцией ошибок (ECOC), модель классификации мультиклассовtemplateECOC
k NN templateKNN
Наивный байесовtemplateNaiveBayes
Машина опорных векторов (SVM)templateSVM
Обученный тип моделиОбъект моделиВозвращенный
Дерево классификацииClassificationTreefitctree
Дискриминантный анализClassificationDiscriminantfitcdiscr
Ансамбль сложенных в мешок моделей классификацииClassificationBaggedEnsemblefitcensemble
Ансамбль моделей классификацииClassificationEnsemblefitcensemble
Модель ECOCClassificationECOCfitcecoc
k NN ClassificationKNNfitcknn
Наивный байесовClassificationNaiveBayesfitcnb
SVMClassificationSVMfitcsvm

Для КПД предоставьте объект шаблона модели классификации вместо обученного объекта модели классификации.

Данные раньше применялись к первой полной модели классификации или шаблону, C1, заданный как числовая матрица или таблица.

Каждая строка X1 соответствует одному наблюдению, и каждый столбец соответствует одной переменной. testckfold не поддерживает многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов.

X1 и X2 должен иметь совпадающий тип данных и X1x2 Y должен иметь то же количество наблюдений.

Если вы задаете Y как массив, затем testckfold обработки все столбцы X1 как разделяют переменные предикторы.

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

Данные раньше применялись к второй полной модели классификации или шаблону, C2, заданный как числовая матрица или таблица.

Каждая строка X2 соответствует одному наблюдению, и каждый столбец соответствует одной переменной. testckfold не поддерживает многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов.

X1 и X2 должен иметь совпадающий тип данных и X1x2 Y должен иметь то же количество наблюдений.

Если вы задаете Y как массив, затем testckfold обработки все столбцы X2 как разделяют переменные предикторы.

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

Истинные метки класса, заданные как категориальное, символ, или массив строк, логический или числовой вектор, массив ячеек из символьных векторов, или вектор символов или скаляр строки.

  • Для вектора символов или скаляра строки, X1 и X2 должны быть таблицы, их переменные отклика должны иметь то же имя и значения и Y должно быть общее имя переменной. Например, если X1.Labels и X2.Labels переменные отклика, затем Y 'Labels' и X1.Labels и X2.Labels должно быть эквивалентным.

  • Для всех других поддерживаемых типов данных, Y массив истинных меток класса.

    • Если Y символьный массив, затем каждый элемент должен соответствовать одной строке массива.

    • X1x2 Y должен иметь то же количество наблюдений (строки).

  • Если оба из этих операторов верны, то можно не использовать предоставление Y.

    • X1 и X2 таблицы, содержащие ту же переменную отклика (значения и имя).

    • C1 и C2 полные модели классификации, содержащие ResponseName свойства, задающие переменную отклика, называют в X1 и X2.

    Следовательно, testckfold использует переменную распространенного ответа в таблицах. Например, если переменными отклика в таблицах является X1.Labels и X2.Labels, и значения C1.ResponseName и C2.ResponseName 'Labels', затем вы не должны предоставлять Y.

Типы данных: categorical | char | string | logical | single | double | cell

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

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

Пример: 'Alternative','greater','Test','10x10t','Options',statsset('UseParallel',true) задает, чтобы протестировать, более ли первый набор первых предсказанных меток класса точен, чем второй набор, чтобы провести 10 10 t тест и использовать параллельные вычисления в перекрестной проверке.

Тестовый уровень значения гипотезы, заданный как разделенная запятой пара, состоящая из 'Alpha' и скалярное значение в интервале (0,1).

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

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

Альтернативная гипотеза, чтобы оценить, заданный как разделенная запятой пара, состоящая из 'Alternative' и одно из перечисленных в таблице значений.

ЗначениеАльтернативное описание гипотезыПоддерживаемые тесты
'unequal' (значение по умолчанию)Для предсказания Y, набор прогнозов, следующих из C1 примененный X1 и C2 примененный X2 имейте неравную точность.'5x2F', '5x2t', и '10x10t'
'greater'Для предсказания Y, набор прогнозов, следующих из C1 примененный X1 более точно, чем C2 примененный X2. '5x2t' и '10x10t'
'less'Для предсказания Y, набор прогнозов, следующих из C1 примененный X1 менее точно, чем C2 примененный X2.'5x2t' и '10x10t'

Для получения дополнительной информации на поддерживаемых тестах, смотрите Test.

Пример: 'Alternative','greater'

Отметьте идентифицирующие категориальные предикторы в первых данных о предикторе набора тестов (X1), заданный как разделенная запятой пара, состоящая из 'X1CategoricalPredictors' и одно из следующего:

  • Числовой вектор с индексами от 1 через p, где p количество столбцов X1.

  • Логический вектор длины p, где true запись означает что соответствующий столбец X1 категориальная переменная.

  • 'all', значение всех предикторов является категориальным.

Спецификация X1CategoricalPredictors является соответствующим если:

  • По крайней мере один предиктор является категориальным и C1 дерево классификации, ансамбль деревьев классификации, модели ECOC или наивной модели классификации Бейеса.

  • Все предикторы являются категориальными и C1 модель классификации NN k.

Если вы задаете X1CategoricalPredictors для любого другого случая, затем testckfold выдает ошибку. Например, функция не может обучить учеников SVM, использующих категориальные предикторы.

Значением по умолчанию является [], который указывает, что нет никаких категориальных предикторов.

Пример: 'X1CategoricalPredictors','all'

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

Отметьте идентифицирующие категориальные предикторы во вторых данных о предикторе набора тестов (X2), заданный как разделенная запятой пара, состоящая из 'X2CategoricalPredictors' и одно из следующего:

  • Числовой вектор с индексами от 1 через p, где p количество столбцов X2.

  • Логический вектор длины p, где true запись означает что соответствующий столбец X2 категориальная переменная.

  • 'all', значение всех предикторов является категориальным.

Спецификация X2CategoricalPredictors является соответствующим если:

  • По крайней мере один предиктор является категориальным и C2 дерево классификации, ансамбль деревьев классификации, модели ECOC или наивной модели классификации Бейеса.

  • Все предикторы являются категориальными и C2 модель классификации NN k.

Если вы задаете X2CategoricalPredictors для любого другого случая, затем testckfold выдает ошибку. Например, функция не может обучить учеников SVM, использующих категориальные предикторы.

Значением по умолчанию является [], который указывает, что нет никаких категориальных предикторов.

Пример: 'X2CategoricalPredictors','all'

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

Имена классов, заданные как разделенная запятой пара, состоящая из 'ClassNames' и категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. Необходимо установить ClassNames использование типа данных Y.

Если ClassNames символьный массив, затем каждый элемент должен соответствовать одной строке массива.

Используйте ClassNames к:

  • Задайте порядок любой размерности входного параметра, которая соответствует порядку класса. Например, используйте ClassNames задавать порядок размерностей Cost.

  • Выберите подмножество классов для тестирования. Например, предположите что набор всех отличных имен классов в Y {'a','b','c'}. Обучаться и тестовые модели с помощью наблюдений от классов 'a' и 'c' только, задайте 'ClassNames',{'a','c'}.

Значением по умолчанию является набор всех отличных имен классов в Y.

Пример: 'ClassNames',{'b','g'}

Типы данных: single | double | logical | char | string | cell | categorical

Стоимость классификации, заданная как разделенная запятой пара, состоящая из 'Cost' и квадратная матрица или массив структур.

  • Если вы задаете квадратную матрицу Cost, затем Cost(i,j) стоимость классификации точки в класс j если его истинным классом является i. Таким образом, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Чтобы задать класс заказывают для соответствующих строк и столбцов Cost, дополнительно задайте ClassNames аргумент пары "имя-значение".

  • Если вы задаете структуру S, затем S должен иметь два поля:

    • S.ClassNames, который содержит имена классов как переменную совпадающего типа данных как Y. Можно использовать это поле, чтобы задать порядок классов.

    • S.ClassificationCosts, который содержит матрицу стоимости со строками и столбцами, упорядоченными как в S.ClassNames

Для чувствительного к стоимости использования тестирования, testcholdout.

Это - лучшая практика предоставить ту же матрицу стоимости, используемую, чтобы обучить модели классификации.

Значением по умолчанию является Cost(i,j) = 1 если i ~= j, и Cost(i,j) = 0 если i = j.

Пример: 'Cost',[0 1 2 ; 1 0 2; 2 2 0]

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

Функция потерь, заданная как разделенная запятой пара, состоящая из 'LossFun' и 'classiferror', 'binodeviance', 'exponential', 'hinge', или указатель на функцию.

  • В следующей таблице перечислены доступные функции потерь.

    ЗначениеФункция потерь
    'binodeviance'Биномиальное отклонение
    'classiferror'Ошибка классификации
    'exponential'Экспоненциальная потеря
    'hinge'Потеря стержня

  • Задайте свою собственную функцию с помощью обозначения указателя на функцию.

    Предположим тот n = size(X,1) объем выборки и существует K уникальные классы. Ваша функция должна иметь подпись lossvalue = lossfun(C, S, W, Стоимость), где:

    • Выходной аргумент lossvalue скаляр.

    • lossfun имя вашей функции.

    • C n- K логическая матрица со строками, указывающими, которые классифицируют соответствующее наблюдение, принадлежит. Порядок следования столбцов соответствует порядку класса в ClassNames аргумент пары "имя-значение".

      Создайте C установкой C(p,q) = 1 если наблюдение p находится в классе q, для каждой строки. Установите все другие элементы строки p к 0.

    • S n- K числовая матрица баллов классификации. Порядок следования столбцов соответствует порядку класса в ClassNames аргументы в виде пар имя-значение матрица баллов классификации.

    • W n- 1 числовой вектор весов наблюдения. Если вы передаете W, программное обеспечение нормирует веса, чтобы суммировать к 1.

    • Cost K- K числовая матрица затрат классификации. Например, Cost = ones(K) - eye(K) задает стоимость 0 для правильной классификации и стоимости 1 для misclassification.

    Задайте свое использование функции 'LossFun', @lossfun.

Опции параллельных вычислений, заданные как разделенная запятой пара, состоящая из 'Options' и массив структур, возвращенный statset. Эти опции требуют Parallel Computing Toolbox. testckfold использование 'Streams''UseParallel' , и 'UseSubtreams' поля .

Эта таблица суммирует доступные параметры.

ОпцияОписание
'Streams'

RandStream объектный массив или массив ячеек таких объектов. Если вы не задаете Streams, программное обеспечение использует поток по умолчанию или потоки. Если вы задаете Streams, используйте отдельный объект кроме тех случаев, когда следующее верно:

  • У вас есть открытый параллельный пул.

  • UseParallel true.

  • UseSubstreams false.

В этом случае используйте массив ячеек одного размера с параллельным пулом. Если параллельный пул не открыт, то программное обеспечение пытается открыть одно (в зависимости от ваших настроек), и Streams должен предоставить один поток случайных чисел.

'UseParallel'Если у вас есть Parallel Computing Toolbox, то можно вызвать пул рабочих установкой 'UseParallel',true.
'UseSubstreams'Установите на true вычислить в параллели с помощью потока, заданного 'Streams'. Значением по умолчанию является false. Например, установите Streams к типу, позволяющему подпотоки, такой as'mlfg6331_64' или 'mrg32k3a'.

Пример: 'Options',statset('UseParallel',true)

Типы данных: struct

Априорные вероятности для каждого класса, заданного как разделенная запятой пара, состоящая из 'Prior' и 'empirical', 'uniform', числовой вектор или структура.

Эта таблица суммирует доступные параметры для установки априорных вероятностей.

ЗначениеОписание
'empirical'Априорные вероятности класса являются частотами родственника класса в Y.
'uniform'Все априорные вероятности класса равны 1/K, где K является количеством классов.
числовой векторКаждый элемент является априорной вероятностью класса. Задайте порядок с помощью ClassNames аргумент пары "имя-значение". Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1.
структура

Структура S с двумя полями:

  • S.ClassNames содержит имена классов как переменную того же типа как Y.

  • S.ClassProbs содержит вектор соответствующих априорных вероятностей. Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1.

Пример: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',[1,2])

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

Протестируйте, чтобы провести, заданный как разделенная запятой пара, состоящая из 'Test' и один из него следующее: '5x2F', '5x2t', '10x10t'.

ЗначениеОписаниеПоддерживаемая альтернативная гипотеза
'5x2F' (значение по умолчанию)5 2 парный тест F. Подходящий для двухстороннего тестирования только.'unequal'
'5x2t'5 2 парный тест t'unequal', 'less', 'greater'
'10x10t'10 10 повторная перекрестная проверка тест t'unequal', 'less', 'greater'

Для получения дополнительной информации на доступных тестах, смотрите Повторные Тесты Перекрестной проверки. Для получения дополнительной информации на поддерживаемых альтернативных гипотезах, смотрите Alternative.

Пример: 'Test','10x10t'

Уровень многословия, заданный как разделенная запятой пара, состоящая из 'Verbose' и 0, 1, или 2. Verbose управляет суммой диагностической информации, которую программное обеспечение отображает в Командном окне во время обучения каждого сгиба перекрестной проверки.

Эта таблица суммирует доступные опции уровня многословия.

ЗначениеОписание
0Программное обеспечение не отображает диагностическую информацию.
1Программное обеспечение отображается, диагностика обменивается сообщениями каждый раз, когда это реализует новую запущенную перекрестную проверку.
2Программное обеспечение отображается, диагностика обменивается сообщениями каждый раз, когда это реализует новую перекрестную проверку, запущенную, и каждый раз, когда это обучается на конкретном сгибе.

Пример: 'Verbose',1

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

Веса наблюдения, заданные как разделенная запятой пара, состоящая из 'Weights' и числовой вектор.

Размер Weights должен равняться количеству строк X1. Программное обеспечение взвешивает наблюдения в каждой строке X с соответствующим весом в Weights.

Программное обеспечение нормирует Weights суммировать до значения априорной вероятности в соответствующем классе.

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

Примечания:

  • testckfold обработки обучили модели классификации как шаблоны. Поэтому это игнорирует все приспособленные параметры в модели. Таким образом, testckfold перекрестный подтверждает использование только опции, заданные в модели и данных о предикторе.

  • Повторные тесты перекрестной проверки зависят при условии, что тестовые статистические данные асимптотически нормальны по нулевой гипотезе. Очень неустойчивые матрицы стоимости (например, Cost= [0 100;1 0] ) и очень дискретные распределения ответа (то есть, большинство наблюдений находится в небольшом количестве классов), может нарушить асимптотическое предположение нормальности. Для чувствительного к стоимости тестирования используйте testcholdout.

  • NaNs, <undefined> значения, пустые символьные вектора (''), пустые строки (""), и <missing> значения указывают на недостающие значения данных.

    • Для обработки отсутствующих значений в X1 и X2, см. соответствующую модель классификации учебная страница ссылки на функцию: fitctree, fitcdiscr, fitcensemble, fitcecoc, fitcknn, fitcnb, или fitcsvm.

    • testckfold удаляет отсутствующие значения в Y и соответствующие строки X1 и X2.

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

свернуть все

Результат испытаний гипотезы, возвращенный как логическое значение.

h = 1 указывает на отклонение нулевой гипотезы в Alpha уровень значения.

h = 0 указывает на отказ отклонить нулевую гипотезу в Alpha уровень значения.

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

p- теста, возвращенного как скаляр в интервале [0,1]. p вероятность, что случайная тестовая статистическая величина, по крайней мере, как экстремальное значение как наблюдаемая тестовая статистическая величина, учитывая, что нулевая гипотеза верна.

testckfold оценки p использование распределения тестовой статистической величины, которая меняется в зависимости от типа теста. Для получения дополнительной информации на тестовой статистике, смотрите Повторные Тесты Перекрестной проверки.

Потери классификации, возвращенные как числовая матрица. Строки e1 соответствуйте запущенной перекрестной проверке, и столбцы соответствуют тестовому сгибу.

testckfold применяет первые данные о предикторе набора тестов (X1) к первой модели классификации (C1) оценить первый набор меток класса.

e1 подводит итог точность первого набора класса помечает предсказание истинных меток класса (Y) для каждой запущенной перекрестной проверки и сворачиваются. Значение элементов e1 зависит от типа потери классификации.

Потери классификации, возвращенные как числовая матрица. Строки e2 соответствуйте запущенной перекрестной проверке, и столбцы соответствуют тестовому сгибу.

testckfold применяет вторые данные о предикторе набора тестов (X2) к второй модели классификации (C2) оценить второй набор меток класса.

e2 подводит итог точность второго набора класса помечает предсказание истинных меток класса (Y) для каждой запущенной перекрестной проверки и сворачиваются. Значение элементов e2 зависит от типа потери классификации.

Больше о

свернуть все

Повторные тесты перекрестной проверки

Форма Repeated cross-validation tests тестовая статистическая величина для сравнения точности двух моделей классификации путем объединения различий в классификации потерь, следующих из повторной перекрестной проверки данных. Повторные тесты перекрестной проверки полезны, когда объем выборки ограничивается.

Провести R-by-K тест:

  1. Случайным образом разделите (расслоенный классом) наборы данных предиктора и истинные метки класса в наборы K, времена R. Каждое деление называется run, и каждый набор в рамках запуска называется fold. Каждый запуск содержит полное, но разделенный, наборы данных.

  2. Для запусков r = 1 через R, повторите эти шаги для k = 1 через K:

    1. Резервный сгиб k как набор тестов, и обучает две модели классификации с помощью их соответствующих наборов данных предиктора на остающемся K – 1 сгиб.

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

    3. Оцените потерю классификации путем сравнения двух наборов предполагаемых меток к истинным меткам. Обозначить ecrk как потеря классификации, когда набор тестов является сгибом k в запущенном r модели c классификации.

    4. Вычислите различие между потерями классификации этих двух моделей:

      δ^rk=e1rke2rk.

    В конце запуска существуют потери классификации K на модель классификации.

  3. Объедините результаты шага 2. Для каждого r = 1 через R:

    • Оцените средние значения в сгибе различий и их среднее значение: δ¯r=1Kk=1Kδ^kr.

    • Оцените полное среднее значение различий: δ¯=1KRr=1Rk=1Kδ^rk.

    • Оцените отклонения в сгибе различий: sr2=1Kk=1K(δ^rkδ¯r)2.

    • Оцените среднее значение различий в сгибе: s¯2=1Rr=1Rsr2.

    • Оцените полное демонстрационное отклонение различий: S2=1KR1r=1Rk=1K(δ^rkδ¯)2.

    Вычислите тестовую статистическую величину. Все поддерживаемые тесты, описанные здесь, принимают, что, под H 0, предполагаемые различия независимы и приблизительно нормально распределены со средним значением 0 и конечным отклонением единого стандарта. Однако эти тесты нарушают предположение независимости, и таким образом, статистические тестом распределения являются аппроксимированными.

    • Для R = 2, тест является парным тестом. Двумя поддерживаемыми тестами является парный t и тест F.

      • Тестовая статистическая величина для парного теста t

        tpaired=δ^11s¯2.

        tpaired имеет t - распределение со степенями свободы R по нулевой гипотезе.

        Уменьшать эффекты корреляции между предполагаемыми различиями, количеством δ^11 занимает числитель, а не δ¯.

        5 2 парные тесты t могут быть немного консервативны [4].

      • Тестовая статистическая величина для парного теста F

        Fpaired=1RKr=1Rk=1K(δ^rk)2s¯2.

        Fpaired имеет распределение F со степенями свободы R и RK.

        5 2 парный тест F имеет сопоставимую силу к 5 2 тест t, но более консервативен [1].

    • Для R> 2, тест является повторным тестом перекрестной проверки. Тестовая статистическая величина

      tCV=δ¯S/ν+1.

      tCV имеет распределение t со степенями свободы ν. Если различия были действительно независимы, то ν = RK – 1. В этом случае параметр степеней свободы должен быть оптимизирован.

      Для 10 10 повторной перекрестной проверки тест t, оптимальные степени свободы между 8 и 11 ([2] и [3]). testckfold использование ν = 10.

Преимущество повторных тестов перекрестной проверки по парным тестам состоит в том, что результаты - больше повторяемое [3]. Недостаток - то, что они требуют высоких вычислительных ресурсов.

Потеря классификации

Classification losses указывает на точность модели классификации или набор предсказанных меток. В общем случае для матрицы фиксированных затрат, уменьшения точности классификации, когда потеря классификации увеличивается.

testckfold возвращает потери классификации (см. e1 и e2) в соответствии с альтернативной гипотезой (то есть, неограниченные потери классификации). В определениях, которые следуют:

  • Потери классификации фокусируются на первой модели классификации. Потери классификации для второй модели подобны.

  • ntest является объемом выборки набора тестов.

  • I (x) является функцией индикатора. Если x является истинным оператором, то I (x) = 1. В противном случае, I (x) = 0.

  • p^1j предсказанное присвоение класса модели 1 классификации для наблюдения j.

  • yj является истинной меткой класса наблюдения j.

  • Binomial deviance имеет форму

    e1=j=1ntestwjжурнал(1+exp(2yjf(Xj)))j=1ntestwj

    где:

    • yj = 1 для положительного класса и-1 для отрицательного класса.

    • f(Xj) счет классификации.

    Биномиальное отклонение имеет связи с максимизацией биномиальной функции правдоподобия. Для получения дополнительной информации на биномиальном отклонении, см. [5].

  • Exponential loss похож на биномиальное отклонение и имеет форму

    e1=j=1ntestwjexp(yjf(Xj))j=1ntestwj.

    yj и f(Xj) примите те же формы здесь как в биномиальной формуле отклонения.

  • Hinge loss имеет форму

    e1=j=1nwjmax {0,1yjf(Xj)}j=1nwj,

    yj и f(Xj) примите те же формы здесь как в биномиальной формуле отклонения.

    Потеря стержня линейно штрафует за неправильно классифицированные наблюдения и связана с целевой функцией SVM, используемой в оптимизации. Для получения дополнительной информации о потере стержня см. [5].

  • Misclassification rate или ошибка классификации, является скаляром в интервале [0,1] представление пропорции неправильно классифицированных наблюдений. Таким образом, misclassification уровень для первой модели классификации

    e1=j=1ntestwjI(p^1jyj)j=1ntestwj.

Советы

  • Примеры способов сравнить модели включают:

    • Сравните точность простой модели классификации и более сложной модели путем передачи того же набора данных о предикторе.

    • Сравните точность двух различных моделей с помощью двух различных наборов предикторов.

    • Выполните различные типы Выбора признаков. Например, можно сравнить точность модели, обученной с помощью набора предикторов с точностью одного обученного на подмножестве или различного набора предикторов. Можно произвольно выбрать набор предикторов или использовать метод выбора признаков как PCA или последовательный выбор признаков (см. pca и sequentialfs).

  • Если оба из этих операторов верны, то можно не использовать предоставление Y.

    • X1 и X2 таблицы, содержащие переменную отклика, и используют то же имя переменной отклика.

    • C1 и C2 полные модели классификации, содержащие равный ResponseName свойства (например, strcmp(C1.ResponseName,C2.ResponseName)= 1 ).

    Следовательно, testckfold использует переменную распространенного ответа в таблицах.

  • Один способ выполнить нечувствительный к стоимости выбор признаков:

    1. Создайте шаблон модели классификации, который характеризует первую модель классификации (C1).

    2. Создайте шаблон модели классификации, который характеризует вторую модель классификации (C2).

    3. Задайте два набора данных предиктора. Например, задайте X1 как полный набор предиктора и X2 как уменьшаемый набор.

    4. Введите testckfold(C1,C2,X1,X2,Y,'Alternative','less'). Если testckfold возвращает 1, затем существует достаточно доказательства, чтобы предположить, что модель классификации, которая использует меньше предикторов, выполняет лучше, чем модель, которая использует полный набор предиктора.

    В качестве альтернативы можно оценить, существует ли значительная разница между точностью этих двух моделей. Чтобы выполнить эту оценку, удалите 'Alternative','less' спецификация на шаге 4. testckfold проводит двухсторонний тест и h = 0 указывает, что существует недостаточно доказательства, чтобы предложить различие в точности этих двух моделей.

  • Тесты подходят для misclassification потери классификации уровней, но можно задать другие функции потерь (см. LossFun). Ключевые предположения - то, что предполагаемые потери классификации независимы и нормально распределены со средним значением 0 и конечным общим отклонением по двухсторонней нулевой гипотезе. Потери классификации кроме misclassification уровня могут нарушить это предположение.

  • Очень дискретные данные, неустойчивые классы и очень неустойчивые матрицы стоимости могут нарушить предположение нормальности о различиях в классификации потерь.

Алгоритмы

Если вы задаете, чтобы провести 10 10 повторную перекрестную проверку тест t с помощью 'Test','10x10t', затем testckfold использование 10 степеней свободы для распределения t, чтобы найти критическую область и оценить p - значение. Для получения дополнительной информации см. [2] и [3].

Альтернативы

Используйте testcholdout:

  • Для наборов тестов с большими объемами выборки

  • Чтобы реализовать варианты Макнемэра тестируют, чтобы сравнить две точности модели классификации

  • Для чувствительного к стоимости тестирования с помощью теста хи-квадрата или отношения правдоподобия. Тест хи-квадрата использует quadprog, который требует лицензии Optimization Toolbox™.

Ссылки

[1] Alpaydin, E. “Объединенный 5 x 2 CV F Тест для Сравнения Контролируемых Алгоритмов обучения Классификации”. Нейронный Расчет, Издание 11, № 8, 1999, стр 1885–1992.

[2] Bouckaert. R. “Выбирая Между Двумя Алгоритмами обучения На основе Калиброванных Тестов”. Международная конференция по вопросам Машинного обучения, 2003, стр 51–58.

[3] Bouckaert, R. и Э. Франк. “Оценивая Replicability Тестов Значения для Сравнения Алгоритмов обучения”. Усовершенствования в Открытии Знаний и Анализе данных, 8-й Тихом-океане-азиатской Конференции, 2004, стр 3–12.

[4] Dietterich, T. “Аппроксимируйте статистические тесты для сравнения контролируемых алгоритмов обучения классификации”. Нейронный Расчет, Издание 10, № 7, 1998, стр 1895–1923.

[5] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, 2-го Эда. Нью-Йорк: Спрингер, 2008.

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

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