exponenta event banner

compareHoldout

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

Описание

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

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

пример

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

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

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. По умолчанию программа проводит тест McNemar среднего значения p для сравнения точности.

пример

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

Первая классификационная модель C1 использует данные предиктора X1и вторую классификационную модель C2 использует данные предиктора X2. По умолчанию программа проводит тест McNemar среднего значения p для сравнения точности.

пример

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 указывает на то, что не отвергать нулевую гипотезу о том, что две модели имеют одинаковую прогностическую точность.

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

Загрузить 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). Поскольку размер тестового набора велик, проведите асимптотический тест McNemar и сравните результаты с тестом среднего p-значения (по умолчанию тестирование без учета затрат). Запрос на возврат значений p и коэффициентов неправильной классификации.

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 возвращает один и тот же тип меры неправильной классификации для обеих моделей.

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

Загрузить 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) имеют равную точность прогнозирования. Предоставьте матрицу затрат. Проведите асимптотический тест, тест отношения правдоподобия и тест с учетом затрат (по умолчанию при прохождении матрицы затрат). Запрос на возврат p-значений и затрат на неправильную классификацию.

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

p = 0.3334
e1 = 0.5581
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');

Figure contains an axes. The axes with title Predictor Importance contains an object of type bar.

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

[~,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
Обобщенная аддитивная модель (GAM)ClassificationGAMfitcgam
kNN ClassificationKNNfitcknn
Наивный БайесClassificationNaiveBayesfitcnb
НейросетьClassificationNeuralNetwork (с наблюдениями в строках)fitcnet
Вспомогательная векторная машина (SVM)ClassificationSVMfitcsvm
Компактный дискриминантный анализCompactClassificationDiscriminantcompact
Компактный ECOCCompactClassificationECOCcompact
Компактный ансамбль классификационных моделейCompactClassificationEnsemblecompact
Компактный GAMCompactClassificationGAMcompact
Компактный наивный БайесCompactClassificationNaiveBayescompact
Компактная нейронная сетьCompactClassificationNeuralNetworkcompact
Компактный 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

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

При указании 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]) проверяет, является ли первый набор прогнозируемых меток класса более точным, чем второй набор, проводит ли асимптотический тест McNemar и штрафует за неправильную классификацию наблюдений с истинной меткой 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

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

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

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

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

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

При указании Cost, то compareHoldout не может проводить односторонние, точные или промежуточные тесты. Необходимо также указать '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'Тест на хи-квадратИнструментарий оптимизации для внедрения quadprog(Панель инструментов оптимизации)
'likelihood'Тест отношения правдоподобияНичего

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

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

Испытание, указанное как пара, разделенная запятыми, состоящая из 'Test' и 'asymptotic', 'exact', или 'midp'.

В этой таблице представлены доступные варианты тестирования без учета затрат.

СтоимостьОписание
'asymptotic'Асимптотический тест МакНемара
'exact'Точно условный тест Макнемара
'midp' (по умолчанию)Тест McNemar среднего значения p

Дополнительные сведения см. в разделе Тесты McNemar.

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения см. в разделе Потеря классификации.

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

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

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

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

Дополнительные сведения см. в разделе Потеря классификации.

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

Ограничения

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

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

Подробнее

свернуть все

Тестирование с учетом затрат

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

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

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

Следующие определения суммируют тесты с учетом затрат. В определениях:

  • nijk и λ ^ ijk - количество и оценочная доля наблюдений тестового образца со следующими характеристиками. k - истинный класс, i - метка, назначенная первой классификационной моделью, и j - метка, назначенная второй классификационной моделью. Неизвестное истинное значение δ ^ ijk равно securityijk. Размер выборки тестового набора равен ∑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, что является числом классов.

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

    δ=∑i=1K∑j=1K∑k=1K (cki ckj) securityijk.

  • Критерий гипотезы:

    H0:δ=0H1:δ≠0.

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

Доступные асимптотические тесты, которые учитывают несбалансированные затраты, являются тестом хи-квадрат и тестом отношения правдоподобия.

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

    tχ2∗=∑i≠j∑k (nijk + 1 (ntest + K3) λ ^ ijk (1)) 2nijk + 1.

    Если 1 Fχ2 (tχ2∗;1) < α, то отклонить H0.

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

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

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

    Статистика теста:

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

    Если 1 Fχ2 (tLRT∗;1) < α, то отклонить H0.

    • δ ^ ijk (2) = nijkntest - неограниченный MLE для securityijk.

    • δ ^ ijk (3) = nijkntest + λ (cki − ckj) - MLE при нулевой гипотезе, что δ = 0. λ - решение

      ∑i,j,knijk (cki ckj) ntest + λ (cki − ckj) = 0.

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

Тесты McNemar

Тесты Макнемара - это тесты гипотез, которые сравнивают две пропорции популяции, решая при этом проблемы, возникающие в результате двух зависимых, согласованных пар выборок.

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

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

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

  3. Спрогнозировать метки классов с помощью тестового набора.

  4. Сведите результаты в таблицу «два на два», аналогичную этой диаграмме.

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

Коэффициенты неправильной классификации для Моделей 1 и 2 составляют δ ^ 2 = n2 •/n и λ ^ 2 = n • 2/n соответственно. Двусторонний тест для сравнения точности двух моделей

H0:π•2=π2•H1:π•2≠π2 •.

Нулевая гипотеза предполагает, что популяция проявляет маргинальную однородность, что сводит нулевую гипотезу к H0: security12 = security21. Также при нулевой гипотезе N12 ~ Биномиал (n12 + n21,0,5) [1].

Эти факты являются основой для доступных вариантов теста Макнемара: асимптотических, точно-условных и среднезначных тестов Макнемара. Следующие определения суммируют доступные варианты.

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

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

      ta1  = n12−n21n12+n21.

      Если 1 Start( |t1∗|) < α, где Startявляется стандартным гауссовым cdf, то отклонить H0.

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

      ta2  = (n12−n21) 2n12+n21.

      Если 1 Fχ2 (t2∗;m) < α, где Fχ2 (x; m) - cdf, вычисленный при x, то отклонить H0.

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

    • Общее число несогласованных пар, 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, то отклонить H0.

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

      t2∗=min (n12, n21).

      Если FBin (t2∗;nd,0.5) < α/2, то отклоните H0.

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

  • Тест среднего p-значения - статистика теста среднего p-значения McNemar и области отклонения (для уровня значимости α) являются ([32]):

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

      t1  = n12.

      Если FBin (t1∗−1;n12+n21,0.5) + 0.5fBin (t1∗;n12+n21,0.5) < α, где FBin (x; n, p) и fBin (x; n, p) являются биномиальными cdf и pdf соответственно с размером выборки n и вероятностью успеха p, оцененной при x, то отклонить H0.

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

      t2∗=min (n12, n21).

      Если FBin (t2∗−1;n12+n21−1,0.5) + 0.5fBin (t2∗;n12+n21,0.5) < α/2, то отбраковать H0.

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

Классификационные потери

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

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

  • Частота неправильной классификации, или ошибка классификации, является скаляром в интервале [0,1], представляющем долю неправильной классификации наблюдений. То есть коэффициент неправильной классификации для первой классификационной модели равен

    e1=∑j=1K∑k=1K∑i≠kπ^ijk.

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

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

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

    e1=∑j=1K∑k=1K∑i≠kπ^ijkcki,

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

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

Совет

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

    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-й ред. Джон Уайли и сыновья, Inc.: Хобокен, Нью-Джерси, 2002.

[2] Фагерлан, М.В., С. Лидерсен и П. Лааке. «Тест McNemar для двоичных согласованных пар данных: Mid-p и асимптотические лучше, чем точные условные». Методология медицинских исследований BMC. Том 13, 2013, стр. 1-8.

[3] Ланкастер, H.O. «Тесты значимости в дискретных распределениях». JASA, том 56, номер 294, 1961, стр. 223-234.

[4] McNemar, Q. «Примечание об ошибке выборки разницы между коррелированными пропорциями или процентами». Психометрика, т. 12, № 2, 1947, с. 153-157.

[5] Мостеллер, Ф. «Некоторые статистические проблемы в измерении субъективной реакции на наркотики». Биометрия, т. 8, № 3, 1952, с. 220-226.

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

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