LatentDirichletAllocation python - PullRequest
       9

LatentDirichletAllocation python

0 голосов
/ 28 мая 2018

Я использую следующий код для LatentDirichletAllocation через scikit библиотеки python:

tf_vectorizer = CountVectorizer(max_df=0.95, min_df=2, stop_words='english')
tf = tf_vectorizer.fit_transform(documents)

lda_model = LatentDirichletAllocation(n_components=10, max_iter=5, 
learning_method='online', learning_offset=50.,random_state=0).fit(tf)
lda_W = lda_model.transform(tf)
lda_H = lda_model.components_

когда я печатаю форму lda_H, он возвращает (10, 236), я понимаю, 10 для номеров тем и 236 дляслова.Я хочу увидеть влияние альфы на это, поэтому я изменил приведенный выше код на:

lda_model = LatentDirichletAllocation(n_components=10,doc_topic_prior=.01, max_iter=5, 
learning_method='online', learning_offset=50.,random_state=0).fit(tf)
lda_W = lda_model.transform(tf)
lda_H = lda_model.components_

, однако я обнаружил, что альфа не влияет на слова в темах, и lda_H по-прежнему возвращает (10, 236).Интересно, почему альфа не меняет слова в теме.Я пробовал разные значения альфа, но в lda_H не наблюдается никаких изменений. Пожалуйста, любые комментарии по этому поводу.

1 Ответ

0 голосов
/ 28 мая 2018

Альфа - это параметр, который управляет формой распределения тем для каждого документа и не влияет на количество тем.Количество тем не выведено, а фиксировано зафиксировано no_topics.

Каждый документ всегда представляет собой смешанное распределение по всем темам, и alpha контролирует распределение вероятностей по всем темам для каждого документа.Мы можем установить его в соответствии с тем, ожидаем ли мы априори, что каждый документ будет относительно равномерным по всем темам, или же мы ожидаем, что большая часть вероятности будет распределена на меньший набор тем на документ.

Изменения с альфа должны отражаться в ответе на звонок transform, который вы присвоили lda_W.Это дает матрицу распределений тем для каждого документа.Он по-прежнему будет иметь ту же форму: (n_samples, n_topics), но вы должны увидеть изменения среднего разброса вероятностей для каждой строки (документа).Вы можете измерить это, например, установив пороговую вероятность и проверив число тем в документе, которые превышают эту вероятность, усредненных по всем документам, сравнивая для двух значений альфа.

Распределение тем такжевыводится как смешанное распределение по всем словам, поэтому количество слов не изменится, а скорее вероятность, присваиваемая каждому слову по теме.

Стоит дать оригинальную статью по LDA * 1014.* чтение для более подробного объяснения того, что делает алгоритм.

...