Jak obliczyć zakłopotanie utrudnienia za pomocą Latent Dirichlet Allocation?

18

Jestem zdezorientowany, jak obliczyć zakłopotanie próby wstrzymania podczas wykonywania Latent Dirichlet Allocation (LDA). Dokumenty na ten temat wrócą nad tym, co sprawia, że ​​myślę, że brakuje mi czegoś oczywistego ...

Zakłopotanie jest postrzegane jako dobra miara wydajności dla LDA. Chodzi o to, że trzymasz próbkę wstrzymania, trenujesz LDA na pozostałych danych, a następnie obliczasz zakłopotanie wstrzymania.

Zakłopotanie można wyrazić wzorem:

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

(Zaczerpnięte z wyszukiwania obrazów w dużych bazach danych obrazów, Horster i in .)

Tutaj jest liczbą dokumentów (prawdopodobnie w próbce testowej), reprezentuje słowa w dokumencie , liczbę słów w dokumencie .w d d N d dMwddNdd

Nie jest dla mnie jasne, jak rozsądnie obliczyć , ponieważ nie mamy mieszanin tematycznych dla wyciągniętych dokumentów. Najlepiej byłoby, gdybyśmy wcześniej zintegrowali Dirichleta dla wszystkich możliwych mieszanin tematów i wykorzystali poznane wielomiani tematyczne. Obliczenie tej całki nie wydaje się jednak łatwym zadaniem.p(wd)

Alternatywnie, możemy spróbować nauczyć się optymalnej kombinacji tematów dla każdego wyciągniętego dokumentu (biorąc pod uwagę nasze wyuczone tematy) i wykorzystać to do obliczenia zakłopotania. Byłoby to wykonalne, jednak nie jest tak trywialne, jak sugerują dokumenty takie jak Horter i in. I Blei i in., I nie od razu jest dla mnie jasne, że wynik będzie równoważny z powyższym idealnym przypadkiem.

drevicko
źródło

Odpowiedzi:

17

To jest rzeczywiście coś, co często się przesadza.

Niektóre osoby robią coś nieco bezczelnego: trzymają część słów w każdym dokumencie i dają przewidujące prawdopodobieństwa tych przetrzymywanych słów, biorąc pod uwagę mieszanki dokumentów i tematów. Nie jest to oczywiście idealne, ponieważ nie ocenia wydajności żadnych przetrzymywanych dokumentów.

Aby zrobić to poprawnie z wyciągniętymi dokumentami, zgodnie z sugestią, musisz „wcześniej zintegrować Dirichleta dla wszystkich możliwych mieszanin tematycznych”. http://people.cs.umass.edu/~wallach/talks/evaluation.pdf opisuje kilka metod radzenia sobie z tą nieco nieprzyjemną całką. Właśnie zamierzam sam to wdrożyć, więc powodzenia!

Matt
źródło
3
Dzięki za pogłębienie tego pytania! Wallach i wsp.
Napisali
1
Bez obaw. Odkryłem, że w zestawie narzędzi do modelowania tematów MALLET jest trochę kodu dla metody Wallacha od lewej do prawej, jeśli z przyjemnością skorzystasz z ich implementacji LDA, to jest to łatwe zwycięstwo, chociaż nie wydaje się super łatwe do uruchomienia na zestawie tematów poznanych gdzie indziej z innego wariantu LDA, i właśnie tego chcę. Skończyło się na tym, że zaimplementowałem estymator w stylu Chib na podstawie ich kodu Matlaba, który podali jako przewodnik, chociaż musiałem rozwiązać kilka problemów, daj mi znać, jeśli chcesz kod.
Matt
Cześć @Matt, czy można podać mi kod Matlab do oceny problemów na LDA? Dzięki
księżniczka persji
@princessofpersia Myślę, że autor naprawił problem, o którym wspomniałem z kodem Matlab, patrz tutaj: homepages.inf.ed.ac.uk/imurray2/pub/09etm
Matt
0

Wiemy, że parametry LDA są szacowane na podstawie Wnioskowania Zmiennego. Więc

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|α,β)

użytkownik32509
źródło
1
Myślę, że można poprawić odpowiedź, aby uzyskać bardziej szczegółowe informacje na temat tego, jak faktycznie obliczyć zakłopotanie na zestawie testowym.
Momo,