Максимизация ожиданий opencv-Log Значение правдоподобия

Я оцениваю параметры GMM с помощью EM,

Когда я использую свой скрипт Matlab и запускаю код EM, я получаю одно значение "логарифмической правдоподобия"..

Однако в opencv выходные данные EM.train дают матрицу, содержащую значение логарифмической вероятности каждой выборки.

Как получить однократное логарифмическое значение правдоподобия? Нужно ли брать минимум всех значений логарифмического правдоподобия всех выборок или сумму всех значений логарифмического правдоподобия?


person ashwin shanker    schedule 30.12.2013    source источник


Ответы (1)


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

Вы можете найти хорошее объяснение в книге "Распознавание образов и машинное обучение"

person Andrey Smorodov    schedule 30.12.2013
comment
@AndreySmorodov .. У меня здесь небольшая проблема - книга мне тоже не очень помогает ... EM.train выводит логарифмическую матрицу размерности (no_of_samples*1) и матрицу вероятностей (no_of_samples*no_of_components )..... когда вы имеете в виду вероятности точек данных, я предполагаю, что мне следует использовать матрицу вероятностей и суммировать в ней все значения журнала? - person ashwin shanker; 31.12.2013
comment
Вы можете вычислить логарифмическую вероятность, как описано здесь: schraudolph.org/teach/ml03/MLmix.pdf но, насколько я знаю, значение логарифмического правдоподобия не имеет значения для пользовательской информации, оно используется только для целей оптимизации. Например, для нахождения мю или сигмы. И он оценивается для тренировочного набора, а не для каждого примера. Нет, я не имел в виду значения матрицы вероятностей, она содержит вероятности для апостериорных вероятностей каждого компонента гауссовой смеси, который вам нужен, для всей вероятности PDF, которую вы оцениваете. - person Andrey Smorodov; 31.12.2013
comment
Кстати, я только что посмотрел исходный код opencv EM, там есть строка: trainLogLikelihood = sum(trainLogLikelihoods)[0]; Я думаю, что это ответ, который вы ищете. Вам нужны суммарные значения матрицы логарифмического правдоподобия. - person Andrey Smorodov; 31.12.2013