Как улучшить производительность LDA (скрытое выделение дирихле) в Sci-Kit Learn? - PullRequest
0 голосов
/ 10 июня 2018

Я использую LDA для данных, связанных со здоровьем.В частности, у меня есть ~ 500 документов, которые содержат интервью продолжительностью около 5-7 страниц.Хотя я не могу вдаваться в детали данных или результатов из-за сохранения целостности / конфиденциальности данных, я опишу результаты и пройду процедуру, чтобы дать лучшее представление о том, что я делаю и где я могу улучшить.

Для результатов я выбрал 20 тем и вывел 10 слов по теме.Хотя 20 было несколько произвольным, и у меня не было четкого представления о большом количестве тем, это казалось хорошим количеством, учитывая объем данных и то, что все они связаны со здоровьем.Тем не менее, результаты выявили две проблемы: 1) неясно, какие темы были, так как слова в каждой теме не обязательно совпадают или рассказывают историю, и 2) многие слова из разных тем перекрываются, и было несколькослова, которые встречаются в большинстве тем.

С точки зрения того, что я сделал, я сначала предварительно обработал текст.Я преобразовал все в нижний регистр, удалил знаки препинания, удалил ненужные кодировки, специфичные для набора документов под рукой.Затем я размечал документы, лемматизировал слова и выполнял tf-idf.Я использовал возможности склеарна tf-idf и в процессе инициализации tf-idf я указал настраиваемый список стоп-слов, которые нужно удалить (который добавлен в набор стоп-слов nltk).Я также установил max_df на 0,9 (неясно, что такое хорошее число, я просто поиграл с разными значениями), min_df на 2 и max_features на 5000. Я попробовал и tf-idf, и мешок слов (count vectorizer), но я нашелtf-idf, чтобы дать немного более четкие и более четкие темы при анализе вывода LDA.После того, как это было сделано, я запустил модель LDA.Я установил количество тем равным 20, а количество итераций - 5.

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

  • Что-то явно не так или я что-то упустил.Есть ли у вас какие-либо предлагаемые значения / исследования для любого из параметров, которые я описал выше?
  • Насколько подробным я должен быть придирчивым при фильтрации потенциальных доменных слов?
  • Как определить большое количество тем и итераций на этапе LDA?
  • Как я могу проверить производительность, кроме качественного сравнения результатов?

Я ценю все идеи и вклад.Я совершенно новичок в области тематического моделирования, и хотя я прочитал несколько статей, мне есть чему поучиться!Спасибо!

1 Ответ

0 голосов
/ 11 июня 2018

Как определить большое количество тем и итераций на этапе LDA?

Это самый сложный вопрос в алгоритмах кластеризации, таких как LDA.Существует метрика, которая может определить, какое число кластеров является лучшим https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/topic_coherence_tutorial.ipynb

По моему опыту, оптимизация этой метрики путем настройки количества тем, итераций или других гиперпараметров не обязательно даст вам интерпретируемые темы.

Как я могу проверить производительность, кроме качественного сравнения результатов?

Опять же, вы можете использовать вышеуказанную метрику для проверки производительности, но я также нашел полезную визуализациюиз тем http://nbviewer.jupyter.org/github/bmabey/pyLDAvis/blob/master/notebooks/pyLDAvis_overview.ipynb

Это не только дает вам гистограммы тем, но также показывает, насколько разделены темы, что также может помочь в определении оптимального количества тем.

В моих исследованиях яне использовал scikit, а скорее gensim .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...