LatentDirichletAllocation python
Я использую следующий код для 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 ответ
Альфа - это параметр, который управляет формой распределения тем для каждого документа и не влияет на количество тем. Количество тем не выводится, а фиксируется априори no_topics
,
Каждый документ всегда представляет собой смешанное распределение по всем темам, и alpha контролирует распределение вероятностей по всем темам для каждого документа. Мы можем установить его в соответствии с тем, ожидаем ли мы априори, что каждый документ будет относительно равномерным по всем темам, или же мы ожидаем, что большая часть вероятности будет распределена на меньший набор тем на документ.
Изменения с альфа должны отражаться в доходе от transform
звонок, который вы назначили lda_W
, Это дает матрицу распределений тем для каждого документа. Это все еще будет той же формы: (n_samples, n_topics)
, но вы должны увидеть изменения среднего разброса вероятностей для каждой строки (документа). Вы можете измерить это, например, установив пороговую вероятность и проверив количество тем в документе, которые превышают эту вероятность, усредненных по всем документам, сравнивая для двух значений альфа.
Распределение тем также подразумевается как смешанное распределение по всем словам, поэтому количество слов не изменится, а скорее вероятность, назначаемая каждому слову по теме.
Стоит прочитать оригинальную статью о LDA, чтобы получить более подробное объяснение того, что делает алгоритм.