Дискриминантный анализ принимает, что данные прибывают из смешанной гауссовской модели (см. Модель Дискриминантного анализа Создания). Если данные, будет казаться, прибудут из смешанной гауссовской модели, можно ожидать, что дискриминантный анализ будет хорошим классификатором. Кроме того, линейный дискриминантный анализ по умолчанию принимает, что все ковариационные матрицы класса равны. Этот раздел показывает методы, чтобы проверять эти предположения:
Тест Бартлетта (см. Поле [1]), равенство проверок ковариационных матриц различных классов. Если ковариационные матрицы равны, тест указывает, что линейный дискриминантный анализ является соответствующим. В противном случае рассмотрите использование квадратичного дискриминантного анализа, установив DiscrimType
пара "имя-значение" к 'quadratic'
в fitcdiscr
.
Тест Бартлетта принимает нормальные (Гауссовы) выборки, где ни средние значения, ни ковариационные матрицы не известны. Чтобы определить, равны ли ковариации, вычислите следующие количества:
Матрицы выборочной ковариации в классе σi, 1 ≤ i ≤ k, где k является количеством классов.
Объединенный - в ковариационной матрице σ.
Тестовая статистическая величина V:
где n является общим количеством наблюдений, и ni является количеством наблюдений в классе, i, и | Σ | означает определитель матрицы Σ.
Асимптотически, как количество наблюдений в каждом классе ni становится большим, V распределяется приблизительно χ 2 с kd (d + 1)/2 степени свободы, где d является количеством предикторов (количество размерностей в данных).
Тест Бартлетта должен проверять, превышает ли V данную процентиль χ 2 распределения с kd (d + 1)/2 степени свободы. Если это делает, то отклоняет гипотезу, что ковариации равны.
Проверяйте, моделируются ли ирисовые данные Фишера хорошо одной Гауссовой ковариацией, или было ли лучше смоделировать его как Гауссову смесь.
Тест Бартлетта решительно отклоняет гипотезу равных ковариационных матриц. Если pval
был больше 0.05
, тест не отклонил бы гипотезу. Результат показывает, чтобы использовать квадратичный дискриминантный анализ, в противоположность линейному дискриминантному анализу.
График Q-Q графически показывает, является ли эмпирическое распределение близко к теоретическому распределению. Если эти два равны, график Q-Q находится на линии на 45 °. В противном случае график Q-Q отклоняется от линии на 45 °.
Для линейного дискриминантного анализа используйте одну ковариационную матрицу во всех классах.
load fisheriris; prednames = {'SepalLength','SepalWidth','PetalLength','PetalWidth'}; L = fitcdiscr(meas,species,'PredictorNames',prednames); N = L.NumObservations; K = numel(L.ClassNames); mahL = mahal(L,L.X,'ClassLabels',L.Y); D = 4; expQ = chi2inv(((1:N)-0.5)/N,D); % expected quantiles [mahL,sorted] = sort(mahL); % sorted obbserved quantiles figure; gscatter(expQ,mahL,L.Y(sorted),'bgr',[],[],'off'); legend('virginica','versicolor','setosa','Location','NW'); xlabel('Expected quantile'); ylabel('Observed quantile'); line([0 20],[0 20],'color','k');
В целом, соглашение между ожидаемыми и наблюдаемыми квантилями хорошо. Посмотрите на правильную половину графика. Отклонение графика от линии на 45 ° вверх указывает, что данные имеют хвосты, более тяжелые, чем нормальное распределение. Справа существует три возможных выбросов: два наблюдения от класса 'setosa'
и одно наблюдение от класса 'virginica'
.
Как показано в Тесте Бартлетта Равных Ковариационных матриц для Линейного дискриминантного анализа, данные не совпадают с одной ковариационной матрицей. Восстановите вычисления для квадратичного дискриминанта.
load fisheriris; prednames = {'SepalLength','SepalWidth','PetalLength','PetalWidth'}; Q = fitcdiscr(meas,species,'PredictorNames',prednames,'DiscrimType','quadratic'); Nclass = [50 50 50]; N = L.NumObservations; K = numel(L.ClassNames); mahQ = mahal(Q,Q.X,'ClassLabels',Q.Y); expQ = chi2inv(((1:N)-0.5)/N,D); [mahQ,sorted] = sort(mahQ); figure; gscatter(expQ,mahQ,Q.Y(sorted),'bgr',[],[],'off'); legend('virginica','versicolor','setosa','Location','NW'); xlabel('Expected quantile'); ylabel('Observed quantile for QDA'); line([0 20],[0 20],'color','k');
График Q-Q показывает лучшее соглашение между наблюдаемыми и ожидаемыми квантилями. Существует только один кандидат выброса от класса 'setosa'
.
Тест эксцесса Mardia (см. Mardia [2]) является альтернативой исследованию графика Q-Q. Это дает числовой подход к решению, если данные совпадают со смешанной гауссовской моделью.
В тесте эксцесса Mardia вы вычисляете M, среднее значение четвертой степени расстояния Mahalanobis данных из средних значений класса. Если данные нормально распределены с постоянной ковариационной матрицей (и таким образом подходит для линейного дискриминантного анализа), M асимптотически распределяется как нормальный со средним d (d + 2) и отклонение 8d (d + 2)/n, где
d является количеством предикторов (количество размерностей в данных).
n является общим количеством наблюдений.
Тест Mardia является двухсторонним: проверяйте, достаточно ли M близок к d (d + 2) относительно нормального распределения отклонения 8d (d + 2)/n.
Проверяйте, нормально распределены ли ирисовые данные Фишера приблизительно и для линейного и для квадратичного дискриминантного анализа. Согласно Тесту Бартлетта Равных Ковариационных матриц для Линейного дискриминантного анализа, данные не нормальны для линейного дискриминантного анализа (ковариационные матрицы отличаются). Проверяйте, что Графики Q-Q для Линейных и Квадратичных Дискриминантов показывают, что данные хорошо моделируются смешанной гауссовской моделью с различными ковариациями в классе. Проверяйте эти заключения с тестом эксцесса Mardia:
load fisheriris; prednames = {'SepalLength','SepalWidth','PetalLength','PetalWidth'}; L = fitcdiscr(meas,species,'PredictorNames',prednames); mahL = mahal(L,L.X,'ClassLabels',L.Y); D = 4; N = L.NumObservations; obsKurt = mean(mahL.^2); expKurt = D*(D+2); varKurt = 8*D*(D+2)/N; [~,pval] = ztest(obsKurt,expKurt,sqrt(varKurt))
pval = 0.0208
Тест Mardia указывает, чтобы отклонить гипотезу, что данные нормально распределены.
Продолжение примера с квадратичным дискриминантным анализом:
Q = fitcdiscr(meas,species,'PredictorNames',prednames,'DiscrimType','quadratic'); mahQ = mahal(Q,Q.X,'ClassLabels',Q.Y); obsKurt = mean(mahQ.^2); [~,pval] = ztest(obsKurt,expKurt,sqrt(varKurt))
pval = 0.7230
Поскольку pval
высоко, вы приходите к заключению, что данные сопоставимы с многомерным нормальным распределением.
[1] Поле, G. E. P. Общая Теория Распределения для Класса Критериев Вероятности. Biometrika 36 (3), стр 317–346, 1949.
[2] Mardia, K. V. Меры многомерной скошенности и эксцесса с приложениями. Biometrika 57 (3), стр 519–530, 1970.