compareHoldout

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

Описание

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

Можно определить, отличается ли точность моделей классификации или выполняет ли одна модель лучше, чем другой. compareHoldout может провести несколько тестовых изменений Макнемэра, включая асимптотический тест, точно-условный тест и тест mid-p-value. Для чувствительной к стоимости оценки доступные тесты включают тест хи-квадрата (требует Optimization Toolbox™), и тест отношения правдоподобия.

пример

h = compareHoldout(C1,C2,T1,T2,ResponseVarName) возвращает тестовое решение в тестирование нулевой гипотезы что обученные модели C1 классификации и C2 имейте равную точность для предсказания истинных меток класса в ResponseVarName переменная. Альтернативная гипотеза - то, что метки имеют неравную точность.

Первая модель C1 классификации использует данные о предикторе в T1, и вторая модель C2 классификации использует данные о предикторе в T2. Таблицы T1 и T2 должен содержать ту же переменную отклика, но может содержать различные наборы предикторов. По умолчанию программное обеспечение проводит mid-p-value тест Макнемэра, чтобы сравнить точность.

h= 1 указывает на отклонение нулевой гипотезы на 5%-м уровне значения. h= 0 указывает на не отклонение нулевой гипотезы на 5%-м уровне.

Следующее является примерами тестов, которые можно провести:

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

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

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

h = compareHoldout(C1,C2,T1,T2,Y) возвращает тестовое решение в тестирование нулевой гипотезы что обученные модели C1 классификации и C2 имейте равную точность для предсказания, что истинный класс маркирует Y. Альтернативная гипотеза - то, что метки имеют неравную точность.

Первая модель C1 классификации использует данные о предикторе T1, и вторая модель C2 классификации использует данные о предикторе T2. По умолчанию программное обеспечение проводит mid-p-value тест Макнемэра, чтобы сравнить точность.

пример

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

Первая модель C1 классификации использует данные о предикторе X1, и вторая модель C2 классификации использует данные о предикторе X2. По умолчанию программное обеспечение проводит mid-p-value тест Макнемэра, чтобы сравнить точность.

пример

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

пример

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

Примеры

свернуть все

Обучите два классификатора k - ближайших соседей, одно использование подмножества предикторов, используемых в другом. Проведите статистический тест, сравнивающий точность этих двух моделей на наборе тестов.

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

load carsmall

Составьте две таблицы входных данных, где вторая таблица исключает предиктор Acceleration. Задайте Model_Year как переменная отклика.

T1 = table(Acceleration,Displacement,Horsepower,MPG,Model_Year);
T2 = T1(:,2:end);

Создайте раздел, который разделяет данные в наборы обучающих данных и наборы тестов. Сохраните 30% данных для тестирования.

rng(1)  % For reproducibility
CVP = cvpartition(Model_Year,'holdout',0.3);
idxTrain = training(CVP);   % Training-set indices
idxTest = test(CVP);    % Test-set indices

CVP объект раздела перекрестной проверки, который задает наборы обучающих данных и наборы тестов.

Обучите модели ClassificationKNN с помощью T1 и T2 данные.

C1 = fitcknn(T1(idxTrain,:),'Model_Year');
C2 = fitcknn(T2(idxTrain,:),'Model_Year');

C1 и C2 обученный ClassificationKNN модели.

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

h = compareHoldout(C1,C2,T1(idxTest,:),T2(idxTest,:),'Model_Year')
h = logical
   0

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

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

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

load ionosphere

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

rng(1)                             % For reproducibility
CVP = cvpartition(Y,'holdout',0.5);
idxTrain = training(CVP);           % Training-set indices 
idxTest = test(CVP);                % Test-set indices

CVP объект раздела перекрестной проверки, который задает наборы обучающих данных и наборы тестов.

Обучите модель SVM и ансамбль 100 сложенных в мешок деревьев классификации. Для модели SVM задайте, чтобы использовать радиальное ядро основной функции и эвристическую процедуру, чтобы определить шкалу ядра.

C1 = fitcsvm(X(idxTrain,:),Y(idxTrain),'Standardize',true, ...
    'KernelFunction','RBF','KernelScale','auto');
t = templateTree('Reproducible',true);  % For reproducibility of random predictor selections
C2 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','Bag', ...
    'Learners',t);

C1 обученный ClassificationSVM модель. C2 обученный ClassificationBaggedEnsemble модель.

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

h = compareHoldout(C1,C2,X(idxTest,:),X(idxTest,:),Y(idxTest))
h = logical
   0

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

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

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

load ionosphere;

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

rng(1);                             % For reproducibility
CVP = cvpartition(Y,'holdout',0.5);
idxTrain = training(CVP);           % Training-set indices 
idxTest = test(CVP);                % Test-set indices

CVP объект раздела перекрестной проверки, который задает наборы обучающих данных и наборы тестов.

Обучите две модели SVM: тот, который использует линейное ядро (значение по умолчанию для бинарной классификации) и та, которая использует радиальное ядро основной функции. Используйте шкалу ядра по умолчанию 1.

C1 = fitcsvm(X(idxTrain,:),Y(idxTrain),'Standardize',true);
C2 = fitcsvm(X(idxTrain,:),Y(idxTrain),'Standardize',true,...
    'KernelFunction','RBF');

C1 и C2 обученный ClassificationSVM модели.

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

Asymp = zeros(4,1); % Preallocation
MidP = zeros(4,1); 

[Asymp(1),Asymp(2),Asymp(3),Asymp(4)] = compareHoldout(C1,C2,...
    X(idxTest,:),X(idxTest,:),Y(idxTest),'Alternative','greater',...
    'Test','asymptotic');
[MidP(1),MidP(2),MidP(3),MidP(4)] = compareHoldout(C1,C2,...
    X(idxTest,:),X(idxTest,:),Y(idxTest),'Alternative','greater');
table(Asymp,MidP,'RowNames',{'h' 'p' 'e1' 'e2'})
ans=4×2 table
            Asymp          MidP   
          __________    __________

    h              1             1
    p     7.2801e-09    2.7649e-10
    e1       0.13714       0.13714
    e2       0.33143       0.33143

P-значение близко к нулю для обоих тестов, представляя убедительные свидетельства, чтобы отклонить нулевую гипотезу, что более простая модель менее точна, чем более сложная модель. Неважно, что тестирует вас, задают, compareHoldout возвращает тот же тип меры по misclassification для обеих моделей.

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

Загрузите arrhythmia набор данных. Определите представления класса в данных.

load arrhythmia;
Y = categorical(Y);
tabulate(Y);
  Value    Count   Percent
      1      245     54.20%
      2       44      9.73%
      3       15      3.32%
      4       15      3.32%
      5       13      2.88%
      6       25      5.53%
      7        3      0.66%
      8        2      0.44%
      9        9      1.99%
     10       50     11.06%
     14        4      0.88%
     15        5      1.11%
     16       22      4.87%

Существует 16 классов, однако некоторые не представлены в наборе данных (например, класс 13). Большинство наблюдений классифицируется как не наличие аритмии (класс 1). Набор данных очень дискретен с неустойчивыми классами.

Объедините все наблюдения с аритмией (классы 2 - 15) в один класс. Удалите те наблюдения с неизвестным состоянием аритмии (класс 16) от набора данных.

idx = (Y ~= '16');
Y = Y(idx);
X = X(idx,:);
Y(Y ~= '1') = 'WithArrhythmia';
Y(Y == '1') = 'NoArrhythmia';
Y = removecats(Y);

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

rng(1);                             % For reproducibility
CVP = cvpartition(Y,'holdout',0.5);
idxTrain = training(CVP);           % Training-set indices 
idxTest = test(CVP);                % Test-set indices

CVP объект раздела перекрестной проверки, который задает наборы обучающих данных и наборы тестов.

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

cost = [0 1;5 0];
ClassNames = {'NoArrhythmia','WithArrhythmia'};

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

t = templateTree('Surrogate','on');
numTrees = 50;
C1 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','AdaBoostM1', ...
    'NumLearningCycles',numTrees,'Learners',t, ...
    'Cost',cost,'ClassNames',ClassNames);
C2 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','LogitBoost', ...
    'NumLearningCycles',numTrees,'Learners',t, ...
    'Cost',cost,'ClassNames',ClassNames);

C1 и C2 обученный ClassificationEnsemble модели.

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

[h,p,e1,e2] = compareHoldout(C1,C2,X(idxTest,:),X(idxTest,:),Y(idxTest),...
    'Cost',cost)
h = logical
   0

p = 0.2094
e1 = 0.5953
e2 = 0.4698

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

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

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

load ionosphere;

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

rng(1);  % For reproducibility
CVP = cvpartition(Y,'holdout',0.5);
idxTrain = training(CVP); % Training-set indices 
idxTest = test(CVP);      % Test-set indices

CVP объект раздела перекрестной проверки, который задает наборы обучающих данных и наборы тестов.

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

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

figure;
bar(predImp);
h = gca;
h.XTick = 1:2:h.XLim(2)
h = 
  Axes with properties:

             XLim: [-0.2000 35.2000]
             YLim: [0 0.0090]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [0.1300 0.1100 0.7750 0.8150]
            Units: 'normalized'

  Show all properties

title('Predictor Importance');
xlabel('Predictor');
ylabel('Importance measure');

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

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

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

C1 = fitcensemble(X(idxTrain,idx5),Y(idxTrain),'Method','AdaBoostM1',...
    'Learners',t);

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

[h,p,e1,e2] = compareHoldout(C1,C2,X(idxTest,idx5),X(idxTest,:),Y(idxTest))
h = logical
   0

p = 0.7744
e1 = 0.0914
e2 = 0.0857

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

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

свернуть все

Сначала обученная модель классификации в виде любого обученного объекта модели классификации или компактного объекта модели классификации описана в этой таблице.

Обученный тип моделиОбъект моделиВозвращенный
Дерево классификацииClassificationTreefitctree
Дискриминантный анализClassificationDiscriminantfitcdiscr
Ансамбль сложенных в мешок моделей классификацииClassificationBaggedEnsemblefitcensemble
Ансамбль моделей классификацииClassificationEnsemblefitcensemble
Мультикласс, выходные коды с коррекцией ошибок (ECOC)ClassificationECOCfitcecoc
k NN ClassificationKNNfitcknn
Наивный байесовClassificationNaiveBayesfitcnb
Машина опорных векторов (SVM)ClassificationSVMfitcsvm
Компактный дискриминантный анализCompactClassificationDiscriminantcompact
Компактный ECOCCompactClassificationECOCcompact
Компактный ансамбль моделей классификацииCompactClassificationEnsemblecompact
Компактный наивный БейесCompactClassificationNaiveBayescompact
Компактный SVMCompactClassificationSVMcompact
Компактное дерево классификацииCompactClassificationTreecompact

Вторая обученная модель классификации в виде любого обученного объекта модели классификации или компактного объекта модели классификации, который является допустимым выбором для C1.

Данные о предикторе набора тестов для первой модели классификации, C1В виде таблицы. Каждая строка T1 соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Опционально, T1 может содержать дополнительный столбец для переменной отклика. T1 должен содержать все предикторы, используемые, чтобы обучить C1. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.

T1 и T2 должен иметь одинаковое число строк и те же значения ответа. Если T1 и T2 содержите переменную отклика, используемую, чтобы обучить C1 и C2, затем вы не должны задавать ResponseVarName или Y.

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

Данные о предикторе набора тестов для второй модели классификации, C2В виде таблицы. Каждая строка T2 соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Опционально, T2 может содержать дополнительный столбец для переменной отклика. T2 должен содержать все предикторы, используемые, чтобы обучить C2. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.

T1 и T2 должен иметь одинаковое число строк и те же значения ответа. Если T1 и T2 содержите переменную отклика, используемую, чтобы обучить C1 и C2, затем вы не должны задавать ResponseVarName или Y.

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

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

Каждая строка X1 соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как предиктор или функцию). Переменные раньше обучали C1 должен составить X1.

Количество строк в X1 и X2 должен равняться количеству строк в Y.

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

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

Каждая строка X2 соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как предиктор или функцию). Переменные раньше обучали C2 должен составить X2.

Количество строк в X2 и X1 должен равняться количеству строк в Y.

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

Имя переменной отклика в виде имени переменной в T1 и T2. Если T1 и T2 содержите переменную отклика, используемую, чтобы обучить C1 и C2, затем вы не должны задавать ResponseVarName.

Необходимо задать ResponseVarName как вектор символов или строковый скаляр. Например, если переменная отклика хранится как T1.Response, затем задайте его как 'Response'. В противном случае программное обеспечение обрабатывает все столбцы T1 и T2, включая Response, как предикторы.

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

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

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

Когда вы задаете Y, compareHoldout обработки все переменные в матрицах X1 и X2 или таблицы T1 и T2 как переменные предикторы.

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

Количество строк в данных о предикторе должно равняться количеству строк в Y.

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

Примечание

NaNs, <undefined> значения, пустые символьные вектора (''), пустые строки (""), и <missing> значения указывают на отсутствующие значения. compareHoldout удаляет отсутствующие значения в Y и соответствующие строки X1 и X2. Кроме того, compareHoldout предсказывает классы ли X1 и X2 имейте недостающие наблюдения.

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

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

Пример: compareHoldout(C1,C2,X1,X2,Y,'Alternative','greater','Test','asymptotic','Cost',[0 2;1 0]) тесты, более ли первый набор предсказанных меток класса точен, чем второй набор, проводят асимптотический тест Макнемэра и штрафуют наблюдения неправильной классификации с истинной меткой ClassNames{1} вдвое больше, чем неправильно классифицируя наблюдения с истинной меткой ClassNames{2}.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы задаете Cost, затем compareHoldout не может провести односторонний, точный, или середина p тесты. Необходимо также задать 'Alternative','unequal','Test','asymptotic'. Для чувствительных к стоимости опций тестирования смотрите CostTest аргумент пары "имя-значение".

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

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

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

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

Чувствительный к стоимости тестовый тип в виде разделенной запятой пары, состоящей из 'CostTest' и 'chisquare' или 'likelihood'. Если вы не задаете матрицу стоимости использование Cost аргумент пары "имя-значение", compareHoldout игнорирует CostTest.

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

ЗначениеАсимптотический тестовый типТребования
'chisquare'Тест хи-квадратаOptimization Toolbox, чтобы реализовать quadprog
'likelihood'Тест отношения правдоподобия'none'

Для получения дополнительной информации смотрите Чувствительное к стоимости Тестирование.

Пример: 'CostTest','chisquare'

Протестируйте, чтобы провести в виде разделенной запятой пары, состоящей из 'Test' и 'asymptotic', 'exact', или 'midp'.

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

ЗначениеОписание
'asymptotic'Асимптотический тест Макнемэра
'exact'Точное условное выражение тест Макнемэра
'midp' (значение по умолчанию)Mid-p-value тест Макнемэра

Для получения дополнительной информации смотрите Тесты Макнемэра.

Для чувствительного к стоимости тестирования, Test должен быть 'asymptotic'. Когда вы задаете Cost аргумент пары "имя-значение" и выбирает чувствительный к стоимости тест с помощью CostTest аргумент пары "имя-значение", 'asymptotic' значение по умолчанию.

Пример: 'Test','asymptotic'

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

свернуть все

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

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

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

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

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

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

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

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

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

Для чувствительного к стоимости тестирования, e1 стоимость misclassification. Таким образом, e1 взвешенное среднее затрат misclassification, в которых веса являются соответствующими предполагаемыми пропорциями неправильно классифицированных наблюдений.

Для получения дополнительной информации смотрите Потерю Классификации.

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

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

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

Для чувствительного к стоимости тестирования, e2 стоимость misclassification. Таким образом, e2 взвешенное среднее затрат misclassification, в которых веса являются соответствующими предполагаемыми пропорциями неправильно классифицированных наблюдений.

Для получения дополнительной информации смотрите Потерю Классификации.

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

Ограничения

  • compareHoldout не сравнивает модели ECOC, состоявшие из линейных или моделей классификации ядер (то есть, ClassificationLinear или ClassificationKernel объекты модели). Сравнить ClassificationECOC модели, состоявшие из линейных или моделей классификации ядер, используйте testcholdout вместо этого.

  • Точно так же compareHoldout не сравнивает ClassificationLinear или ClassificationKernel объекты модели. Чтобы сравнить эти модели, используйте testcholdout вместо этого.

Больше о

свернуть все

Чувствительное к стоимости тестирование

Проведите cost-sensitive testing, когда стоимость misclassification будет неустойчивой. Путем проведения чувствительного к стоимости анализа можно объяснить неустойчивость стоимости, когда вы обучаете модели классификации и когда вы статистически сравниваете их.

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

Затраты Misclassification являются часто неустойчивыми в приложениях. Например, рассмотрите предметы классификации на основе набора предикторов в две категории: здоровый и больной. Неправильная классификация больного предмета как здоровые положения опасность для жизни предмета. Однако неправильная классификация здорового предмета как больной обычно вызывает некоторое неудобство, но не создает значительную опасность. В этой ситуации вы присваиваете затраты misclassification, таким образом, что неправильная классификация больного предмета как здоровый является более дорогостоящей, чем неправильная классификация здорового предмета как больной.

Определения, которые следуют, обобщают чувствительные к стоимости тесты. В определениях:

  • nijk и π^ijk номер и оцененная пропорция демонстрационных тестом наблюдений со следующими характеристиками. k является истинным классом, i является меткой, присвоенной первой моделью классификации, и j является меткой, присвоенной второй моделью классификации. Неизвестное истинное значение π^ijk πijk. Объем выборки набора тестов i,j,knijk=ntest. Кроме того, i,j,kπijk=i,j,kπ^ijk=1.

  • cij является относительной стоимостью присвоения метки j к наблюдению с истинным классом i. cii = 0, cij ≥ 0, и, для по крайней мере одного (i, j) пара, cij> 0.

  • Все индексы берут целочисленные значения от 1 до K, который является количеством классов.

  • Ожидаемое различие в misclassification затратах на две модели классификации

    δ=i=1Kj=1Kk=1K(ckickj)πijk.

  • Тест гипотезы

    H0:δ=0H1:δ0.

    Доступные чувствительные к стоимости тесты подходят для двустороннего тестирования.

Доступными асимптотическими тестами, которые обращаются к неустойчивым затратам, является chi-square test и likelihood ratio test.

  • Тест хи-квадрата — тестовая статистическая величина хи-квадрата основана на Пирсоне и Неймановой тестовой статистике хи-квадрата, но с поправочным коэффициентом Лапласа, чтобы составлять любой nijk = 0. Тестовая статистическая величина

    tχ2=ijk(nijk+1(ntest+K3)π^ijk(1))2nijk+1.

    Если 1Fχ2(tχ2;1)<α, затем отклоните H 0.

    • π^ijk(1) оцениваются путем минимизации tχ2 при ограничении, что δ = 0.

    • Fχ2(x;1) χ 2 cdf с одной степенью свободы, оцененной в x.

  • Тест отношения правдоподобия — тест отношения правдоподобия основан на Nijk, которые являются биномиальными случайными переменными с объемом выборки ntest и вероятность успеха πijk. Случайные переменные представляют случайное число наблюдений с: истинный класс k, метка i, присвоенная первой моделью классификации и меткой j, присвоен второй моделью классификации. Совместно, распределение случайных переменных является многочленом.

    Тестовая статистическая величина

    tLRT=2log[P(i,j,kNijk=nijk;ntest,π^ijk=π^ijk(2))P(i,j,kNijk=nijk;ntest,π^ijk=π^ijk(3))].

    Если 1Fχ2(tLRT;1)<α, затем отклоните H 0.

    • π^ijk(2)=nijkntest неограниченный MLE πijk.

    • π^ijk(3)=nijkntest+λ(ckickj) MLE по нулевой гипотезе что δ = 0. λ является решением

      i,j,knijk(ckickj)ntest+λ(ckickj)=0.

    • Fχ2(x;1) χ 2 cdf с одной степенью свободы, оцененной в x.

Тесты Макнемэра

McNemar Tests является тестами гипотезы, которые сравнивают две пропорции населения при решении проблем, следующих из двух зависимых, совпадающих парных выборок.

Один способ сравнить прогнозирующую точность двух моделей классификации:

  1. Разделите данные в наборы обучающих данных и наборы тестов.

  2. Обучите обе модели классификации с помощью набора обучающих данных.

  3. Предскажите метки класса с помощью набора тестов.

  4. Обобщите результаты в two-two таблице, похожей на этот рисунок.

    nii является количеством согласующихся пар, то есть, количеством наблюдений, что обе модели классифицируют тот же путь (правильно или неправильно). nij, ij, является количеством противоречащих пар, то есть, количеством наблюдений, что модели классифицируют по-другому (правильно или неправильно).

misclassification уровни для Моделей 1 и 2 π^2=n2/n и π^2=n2/n, соответственно. Двухсторонний тест для сравнения точности этих двух моделей

H0:π2=π2H1:π2π2.

Нулевая гипотеза предполагает, что население показывает крайнюю однородность, которая уменьшает нулевую гипотезу до H0:π12=π21. Кроме того, по нулевой гипотезе, N 12 ~ Биномов (n 12 + n 21 0.5) [1].

Эти факты являются основанием для доступных тестовых вариантов Макнемэра: asymptotic, exact-conditional и mid-p-value тесты Макнемэра. Определения, которые следуют, обобщают доступные варианты.

  • Асимптотический — асимптотическая тестовая статистика Макнемэра и области отклонения (для уровня значения α):

    • Для односторонних тестов тестовая статистическая величина

      ta1=n12n21n12+n21.

      Если 1Φ(|t1|)<α, где Φ является стандартным Гауссовым cdf, затем отклоните H 0.

    • Для двухсторонних тестов тестовая статистическая величина

      ta2=(n12n21)2n12+n21.

      Если 1Fχ2(t2;m)<α, где Fχ2(x;m) χm, 2 cdf, оцененные в x, затем отклоняют H 0.

    Асимптотический тест требует теории большой выборки, а именно, Гауссова приближения к биномиальному распределению.

    • Общее количество противоречащих пар, nd=n12+n21, должен быть больше 10 ([1], Ch. 10.1.4).

    • В общем случае асимптотические тесты не гарантируют номинальное покрытие. Наблюдаемая вероятность ложного отклонения нулевой гипотезы может превысить α, как предложено в исследованиях симуляции в [18]. Однако асимптотический тест Макнемэра выполняет хорошо в терминах статистической степени.

  • Точное условное выражение — точное условное выражение тестовая статистика Макнемэра и области отклонения (для уровня значения α) ([36], [38]):

    • Для односторонних тестов тестовая статистическая величина

      t1=n12.

      Если FBin(t1;nd,0.5)<α, где FBin(x;n,p) бином cdf с объемом выборки n и вероятность успеха, p, оцененный в x, затем отклоняет H 0.

    • Для двухсторонних тестов тестовая статистическая величина

      t2=min(n12,n21).

      Если FBin(t2;nd,0.5)<α/2, затем отклоните H 0.

    Точно-условный тест всегда достигает номинального покрытия. Исследования симуляции в [18] предполагают, что тест консервативен, и затем покажите, что тест испытывает недостаток в статистической степени по сравнению с другими вариантами. Для маленьких или очень дискретных тестовых выборок рассмотрите использование теста mid-p-value ([1], Ch. 3.6.3).

  • Тест Mid-p-valuemid-p-value тестовая статистика Макнемэра и области отклонения (для уровня значения α) ([32]):

    • Для односторонних тестов тестовая статистическая величина

      t1=n12.

      Если FBin(t11;n12+n21,0.5)+0.5fBin(t1;n12+n21,0.5)<α, где FBin(x;n,p) и fBin(x;n,p) бином cdf и PDF, соответственно, с объемом выборки n и вероятность успеха p, оцененный в x, затем отклоняет H 0.

    • Для двухсторонних тестов тестовая статистическая величина

      t2=min(n12,n21).

      Если FBin(t21;n12+n211,0.5)+0.5fBin(t2;n12+n21,0.5)<α/2, затем отклоните H 0.

    Тест mid-p-value обращается к сверхконсервативному поведению точно-условного теста. Исследования симуляции в [18] демонстрируют, что этот тест достигает номинального покрытия и имеет хорошую статистическую силу.

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

Classification losses указывает на точность модели классификации или набор предсказанных меток. Две потери классификации являются misclassification уровнем и стоимостью.

compareHoldout возвращает потери классификации (см. e1 и e2) в соответствии с альтернативной гипотезой (то есть, неограниченные потери классификации). nijk является количеством демонстрационных тестом наблюдений с: истинный класс k, метка i, присвоенная первой моделью классификации и меткой j, присвоен второй моделью классификации. Соответствующая предполагаемая пропорция π^ijk=nijkntest. Объем выборки набора тестов i,j,knijk=ntest. Индексы взяты от 1 до K, количества классов.

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

    e1=j=1Kk=1Kikπ^ijk.

    Для misclassification уровня второй модели классификации (e 2), переключите индексы i и j в формуле.

    Точность классификации уменьшается как misclassification повышения ставки к 1.

  • misclassification cost является неотрицательным скаляром, который является мерой качества классификации относительно значений заданной матрицы стоимости. Его интерпретация зависит от заданных затрат на misclassification. Стоимость misclassification является взвешенным средним затрат на misclassification (заданный в матрице стоимости, C), в котором веса являются соответствующими предполагаемыми пропорциями неправильно классифицированных наблюдений. misclassification, стоивший за первую модель классификации,

    e1=j=1Kk=1Kikπ^ijkcki,

    где ckj является стоимостью классификации наблюдения в класс j, если его истинным классом является k. Для misclassification стоимости второй модели классификации (e 2), переключите индексы i и j в формуле.

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

Советы

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

    1. Обучите первую модель классификации (C1) использование полного предиктора установлено.

    2. Обучите вторую модель классификации (C2) использование уменьшаемого предиктора установлено.

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

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

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

  • Чувствительные к стоимости тесты выполняют числовую оптимизацию, которая требует дополнительных вычислительных ресурсов. Тест отношения правдоподобия проводит числовую оптимизацию косвенно путем нахождения корня множителя Лагранжа в интервале. Для некоторых наборов данных, если корень находится близко к контурам интервала, то метод может перестать работать. Поэтому, если вы имеете лицензию Optimization Toolbox, рассматриваете проведение чувствительного к стоимости теста хи-квадрата вместо этого. Для получения дополнительной информации смотрите CostTest и чувствительное к стоимости тестирование.

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

Чтобы непосредственно сравнить точность двух наборов меток класса в предсказании набора истинных меток класса, используйте testcholdout.

Ссылки

[1] Agresti, A. Анализ категориальных данных, 2-й Эд. John Wiley & Sons, Inc.: Хобокен, NJ, 2002.

[2] Fagerlan, M.W., С. Лидерсен и П. Лаак. “Тест Макнемэра для Бинарных Данных Совпадающих Пар: середина p и Асимптотический Лучше, Чем Точное Условное выражение”. BMC Медицинская Методология Исследования. Издание 13, 2013, стр 1–8.

[3] Ланкастер, H.O. “Тесты значения в Дискретных распределениях”. JASA, Издание 56, Номер 294, 1961, стр 223–234.

[4] Макнемэр, Q. “Примечание по Ошибке Выборки Различия Между Коррелироваными Пропорциями или Процентами”. Psychometrika, Издание 12, Номер 2, 1947, стр 153–157.

[5] Mosteller, F. “Некоторые Статистические проблемы в Измерении Субъективного Ответа на Наркотики”. Биометрика, Издание 8, Номер 3, 1952, стр 220–226.

Смотрите также

|

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

Для просмотра документации необходимо авторизоваться на сайте