Как рассчитать растерянность несогласных с латентным распределением Дирихле?

18

Я запутался в том, как рассчитать растерянность несдерживаемой пробы при выполнении скрытого распределения дирихле (LDA). Бумаги на эту тему очень легки, заставляя меня думать, что я упускаю что-то очевидное ...

Недоумение считается хорошим показателем производительности для LDA. Идея состоит в том, что вы сохраняете выборку несогласных, обучаете свой LDA остальным данным, а затем рассчитываете сложности удерживающих.

Недоумение можно определить по формуле:

per(Dtest)=exp{d=1Mlogp(wd)d=1MNd}

(Взято из поиска изображений в крупномасштабных базах данных изображений, Horster et al .)

Здесь M - количество документов (предположительно в тестовом образце), wd - слова в документе d , Nd - количество слов в документе d .

Мне не ясно, как разумно рассчитать p(wd) , так как у нас нет тематических смесей для выдаваемых документов. В идеале, мы должны интегрироваться поверх Dirichlet для всех возможных тематических смесей и использовать изученные нами многочлены. Однако вычисление этого интеграла не кажется легкой задачей.

В качестве альтернативы, мы могли бы попытаться выучить оптимальное сочетание тем для каждого выдвинутого документа (учитывая наши изученные темы) и использовать его для расчета недоумения. Это было бы выполнимо, однако это не так тривиально, как, по-видимому, предлагают такие документы, как Хортер и др., И Блей и др., И мне не сразу ясно, что результат будет эквивалентен идеальному случаю, описанному выше.

drevicko
источник

Ответы:

17

Это действительно то, что часто скрывают.

Некоторые люди делают что-то немного дерзкое: протягивают пропорции слов в каждом документе и дают, используя предиктивные вероятности этих выдвинутых слов, с учетом сочетаний «документ-тема», а также сочетаний «тема-слово». Это, очевидно, не идеально, так как не оценивает производительность по каким-либо документам.

Для правильной работы с выдвинутыми документами, как и было предложено, вам необходимо «интегрироваться поверх Dirichlet для всех возможных тем». http://people.cs.umass.edu/~wallach/talks/evaluation.pdf рассматривает несколько методов решения этого слегка неприятного интеграла. Я просто собираюсь попытаться реализовать это на самом деле, так что удачи!

Matt
источник
3
Спасибо за углубление в этот вопрос! Уоллах и др. Также имеют документ об оценках тематических моделей: Методы оценки для тематических моделей
drevicko
1
Не стоит беспокоиться. Я обнаружил, что есть некоторый код для метода Уоллаха слева направо в наборе инструментов моделирования тем MALLET, если вы счастливы использовать их реализацию LDA, это - легкая победа, хотя не кажется, что запустить ее на множестве из тем, изученных в другом месте из другого варианта LDA, что я и хочу сделать. В итоге я реализовал оценщик в стиле Chib из их статьи, используя код matlab, который они предоставляют в качестве руководства, хотя мне пришлось решить несколько проблем, дайте мне знать, если вам нужен код.
Мэтт
Привет @Matt можно ли передать мне код Matlab для оценки недоумения на LDA? Спасибо
принцесса Персии
@princessofpersia Я думаю, что автор исправил проблему, на которую я ссылался с помощью кода Matlab, см. здесь: homepages.inf.ed.ac.uk/imurray2/pub/09etm
Мэтт
0

Мы знаем, что параметры LDA оцениваются с помощью вариационного вывода. Так

logp(w|α,β)=E[logp(θ,z,w|α,β)]E[logq(θ,z)]+D(q(θ,z)||p(θ,z))

D(q(θ,z)||p(θ,z))=0logp(w|α,β)=E[logp(θ,z,w|α,β)]E[logq(θ,z)]

logp(w|α,β)

user32509
источник
1
Я думаю, что можно улучшить ответ, чтобы быть более точным в том, как на самом деле рассчитать недоумение на тестовом наборе.
Момо