Если я вас правильно понял, вы хотите назначить новый, неизвестный, Datapoint либо класс 1 или 2 с дескрипторами для каждого класса (в данном случае среднего вектор и ковариационная матрица), найденный gmdistribution.fit.
Увидев этот новый datapoint, позвоните ему x, вы должны спросить себя, что такое p (modeldata1 | x) и p (modeldata2 | x), и который когда-либо один из них является самым высоким, вы должны назначить x.
Итак, как вы их найдете? Вы просто применить правило Байеса и выбрать, какой-либо один является самым крупным из:
p(modeldata1 | x) = p(x|modeldata1)p(modeldata1)/p(x)
p(modeldata1 | x) = p(x|modeldata2)p(modeldata2)/p(x)
Здесь вам не нужно вычислить р (х), как это одно и то же в каждом уравнении.
Итак, теперь вы оцениваете априорные р (modeldata1) и р (modeldata2) по количеству учебных пунктов от каждого класса (или использовать некоторую данную информацию), а затем рассчитать
p(x|modeldata1)=1/((2pi)^d/2 * sqrt(det(Sigma1)))*exp(0.5*(x-mu1)/Sigma1*(x-mu1))
где d
является размерность ваших данных, Sigma
- это матрица корреляций, а mu
- средний вектор. Затем вас попросят p (data | modeldata1). (Не забудьте также использовать p (modeldata1) и p (modeldata2), когда вы выполняете классификацию).
Я знаю, что это было немного неясно, но, надеюсь, оно может помочь вам с шагом в правильном направлении.
EDIT: Лично я нахожу визуализацию, такую как приведенная ниже (берет из Распознавания образов Теодоридисом и Кутрумбасом). Здесь у вас есть две гауссовские смеси с некоторыми перьями и разными ковариационными матрицами. Синяя область - это то место, где вы бы выбрали один класс, в то время как серая область будет выбрана другой.
Правильно, но дело в том, что я могу найти вероятность (или, точнее, nlogliklihood) с самим Matlab. Однако эти цифры на самом деле не придают мне значения. Кажется, им нужна нормализация, которую я не могу понять. – Louis
Как вы это понимаете? Какой диапазон чисел вы обычно получаете? Имейте в виду, что вы не можете ожидать, что p (x | y) (распределение вероятности) будет находиться в [0, 1] в непрерывном случае. – Vidar
Если я предполагаю, что предыдущий p (modeldata1) = p (modeldata2), а p (x) не имеет значения, поскольку он будет иметь такой же эффект на p (modeldata1 | x) и p (modeldata2 | x). Тогда я могу основать свое решение на nlogn? Я думаю, что ваша точка зрения - это именно моя путаница. P (x | y) не обязательно должно быть [0 до 1], но это еще один случай, если (p1 | x)> (p2 | x), то у меня есть большая вероятность, что выбрать p1 над p2 вправо?(Надеюсь, я поставил свою точку зрения) – Louis