exponenta event banner

Изучение допущения гауссовой смеси

Дискриминантный анализ предполагает, что данные получены из гауссовой модели смеси (см. Создание модели дискриминантного анализа). Если данные получены из модели гауссовой смеси, можно ожидать, что дискриминантный анализ будет хорошим классификатором. Кроме того, линейный дискриминантный анализ по умолчанию предполагает, что все ковариационные матрицы класса равны. В этом разделе показаны методы проверки следующих допущений:

Бартлетт Тест равных ковариационных матриц для линейного дискриминантного анализа

Тест Бартлетта (см. Вставку [1]) проверяет равенство ковариационных матриц различных классов. Если ковариационные матрицы равны, тест показывает, что линейный дискриминантный анализ является подходящим. Если нет, рассмотрите возможность использования квадратичного дискриминантного анализа, установив DiscrimType аргумент пары имя-значение для 'quadratic' в fitcdiscr.

Тест Бартлетта предполагает нормальные (гауссовы) выборки, где не известны ни средства, ни ковариационные матрицы. Чтобы определить, равны ли ковариации, вычислите следующие величины:

  • Выборка ковариационных матриц для каждого класса, 1 ≤ i ≤ k, где k - число классов.

  • Объединенная ковариационная матрица Λ.

  • Статистика испытаний V:

    V = (n − k) log (| Λ |) −∑i=1k (ni 1) log (| Starti |)

    где n - общее число наблюдений, ni - число наблюдений в классе i, а | Λ | означает определитель матрицы,

  • Асимптотически, по мере того, как количество наблюдений в каждом классе ni становится большим, V распределяется приблизительно по ti2 с kd ( d + 1 )/2 степенями свободы, где d - количество предикторов (число измерений в данных ).

Тест Бартлетта состоит в том, чтобы проверить, превышает ли V заданный процентиль распределения, с kd ( d + 1 )/2 степенями свободы. Если это так, то отвергнуть гипотезу, что ковариации равны.

Бартлетт Тест равных ковариационных матриц

Проверьте, хорошо ли смоделированы данные радужки Фишера одной гауссовой ковариацией, или лучше смоделированы как гауссова смесь, выполнив тест Бартлетта равных ковариационных матриц.

Загрузить fisheriris набор данных.

load fisheriris;
prednames = {'SepalLength','SepalWidth','PetalLength','PetalWidth'};

Когда все ковариационные матрицы класса равны, подходит линейный дискриминантный анализ.

Обучите модель линейного дискриминантного анализа (тип по умолчанию) с помощью данных радужки Фишера.

L = fitcdiscr(meas,species,'PredictorNames',prednames);

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

Обучение модели квадратичного дискриминантного анализа с использованием данных радужки Фишера и статистики вычислений

Q = fitcdiscr(meas,species,'PredictorNames',prednames,'DiscrimType','quadratic');

Сохранять в качестве переменных количество наблюдений N, размерность набора данных D, количество классов Kи количество наблюдений в каждом классе Nclass.

[N,D] = size(meas)
N = 150
D = 4
K = numel(unique(species))
K = 3
Nclass = grpstats(meas(:,1),species,'numel')'
Nclass = 1×3

    50    50    50

Вычисление статистики теста V.

SigmaL = L.Sigma;
SigmaQ = Q.Sigma;
V = (N-K)*log(det(SigmaL));
for k=1:K
    V = V - (Nclass(k)-1)*log(det(SigmaQ(:,:,k)));
end
V
V = 146.6632

Вычислите значение p.

nu = K*D*(D+1)/2;
pval1 = chi2cdf(V,nu,'upper')
pval1 = 2.6091e-17

Поскольку pval1 меньше 0,05, тест Бартлетта отвергает гипотезу о равных ковариационных матрицах. Результат указывает на использование квадратичного дискриминантного анализа в отличие от линейного дискриминантного анализа.

График Q-Q

График Q-Q графически показывает, близко ли эмпирическое распределение к теоретическому распределению. Если они равны, график Q-Q лежит на линии 45 °. Если нет, график Q-Q отклоняется от линии 45 °.

Сравнение Q-Q графиков для линейных и квадратичных дискриминантов

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

Загрузить fisheriris набор данных.

load fisheriris;
prednames = {'SepalLength','SepalWidth','PetalLength','PetalWidth'};

Когда все ковариационные матрицы класса равны, подходит линейный дискриминантный анализ.

Обучение модели линейного дискриминантного анализа.

L = fitcdiscr(meas,species,'PredictorNames',prednames);

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

Обучение модели квадратичного дискриминантного анализа с использованием данных радужки Фишера.

Q = fitcdiscr(meas,species,'PredictorNames',prednames,'DiscrimType','quadratic');

Вычислите количество наблюдений, размерность набора данных и ожидаемые квантили.

[N,D] = size(meas);
expQuant = chi2inv(((1:N)-0.5)/N,D);

Вычислите наблюдаемые квантили для линейной дискриминантной модели.

obsL = mahal(L,L.X,'ClassLabels',L.Y);
[obsL,sortedL] = sort(obsL);

Постройте график Q-Q для линейного дискриминанта.

figure;
gscatter(expQuant,obsL,L.Y(sortedL),'bgr',[],[],'off');
legend('virginica','versicolor','setosa','Location','NW');
xlabel('Expected quantile');
ylabel('Observed quantile for LDA');
line([0 20],[0 20],'color','k');

Figure contains an axes. The axes contains 4 objects of type line. These objects represent virginica, versicolor, setosa.

Ожидаемые и наблюдаемые квантили несколько сходятся. Отклонение графика от линии 45 ° вверх указывает на то, что данные имеют более тяжелые хвосты, чем нормальное распределение. На сюжете показаны три возможных выпадения наверху: два наблюдения из класса'setosa' и одно наблюдение из класса 'virginica'.

Вычислите наблюдаемые квантили для квадратичной дискриминантной модели.

obsQ = mahal(Q,Q.X,'ClassLabels',Q.Y);
[obsQ,sortedQ] = sort(obsQ);

Постройте график Q-Q для квадратичного дискриминанта.

figure;
gscatter(expQuant,obsQ,Q.Y(sortedQ),'bgr',[],[],'off');
legend('virginica','versicolor','setosa','Location','NW');
xlabel('Expected quantile');
ylabel('Observed quantile for QDA');
line([0 20],[0 20],'color','k');

Figure contains an axes. The axes contains 4 objects of type line. These objects represent virginica, versicolor, setosa.

График Q-Q для квадратичного дискриминанта показывает лучшее согласие между наблюдаемым и ожидаемым квантилями. На графике показан только один возможный выброс из класса 'setosa'. Данные радужки Фишера лучше смоделировать как гауссову смесь с ковариационными матрицами, которые не обязательно должны быть равными по классам.

Мардия Куртоз Тест многомерной нормальности

Тест Mardia kurtosis (см. Mardia [2]) является альтернативой исследованию графика Q-Q. Это дает численный подход к решению, соответствуют ли данные гауссовой модели смеси.

В тесте Mardia kurtosis вы вычисляете M, среднее значение четвертой мощности расстояния Махаланобиса данных из класса означает. Если данные нормально распределены с постоянной ковариационной матрицей (и, таким образом, пригодны для линейного дискриминантного анализа), М асимптотически распределяется как нормальное со средним d ( d + 2) и дисперсией 8d  (d + 2 )/n, где

  • d - количество предикторов (количество измерений в данных).

  • n - общее число наблюдений.

Тест Мардии является двухсторонним: проверьте, достаточно ли близко М к d ( d + 2) относительно нормального распределения дисперсии 8d  (d + 2 )/n.

Тест Мардии Куртоз на линейные и квадратичные дискриминанты

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

Загрузить fisheriris набор данных.

load fisheriris;
prednames = {'SepalLength','SepalWidth','PetalLength','PetalWidth'};

Когда все ковариационные матрицы класса равны, подходит линейный дискриминантный анализ.

Обучение модели линейного дискриминантного анализа.

L = fitcdiscr(meas,species,'PredictorNames',prednames);

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

Обучение модели квадратичного дискриминантного анализа с использованием данных радужки Фишера.

Q = fitcdiscr(meas,species,'PredictorNames',prednames,'DiscrimType','quadratic');

Вычислите среднее и дисперсию асимптотического распределения.

[N,D] = size(meas);
meanKurt = D*(D+2)
meanKurt = 24
varKurt = 8*D*(D+2)/N
varKurt = 1.2800

Вычислите значение p для теста Мардии куртоза на линейной дискриминантной модели.

mahL = mahal(L,L.X,'ClassLabels',L.Y);
meanL = mean(mahL.^2);
[~,pvalL] = ztest(meanL,meanKurt,sqrt(varKurt))
pvalL = 0.0208

Поскольку pvalL меньше 0,05, тест Мардии куртоза отвергает гипотезу о том, что данные нормально распределены с матрицей постоянной ковариации.

Вычислите значение p для теста Mardia kurtosis на квадратичной дискриминантной модели.

mahQ = mahal(Q,Q.X,'ClassLabels',Q.Y);
meanQ = mean(mahQ.^2);
[~,pvalQ] = ztest(meanQ,meanKurt,sqrt(varKurt))
pvalQ = 0.7230

Поскольку pvalQ больше 0,05, данные согласуются с многомерным нормальным распределением.

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

Ссылки

[1] Вставка, G.E. P «Общая теория распределения для класса критериев правдоподобия». Биометрика 36, № 3-4 (1949): 317-46. https://doi.org/10.1093/biomet/36.3-4.317.

[2] Мардия, К. В. «Меры многомерного перекоса и куртоза с применением». Биометрика 57, № 3 (1970): 519-30. https://doi.org/10.1093/biomet/57.3.519.

См. также

Функции

Объекты

Связанные темы