Я использую эту реализацию GSDMM python для кластеризации набора данных текстовых сообщений. GSDMM быстро сходится (около 5 итераций) в соответствии с исходным документом. У меня тоже есть сходимость к определенному количеству кластеров, но на каждой итерации передается еще очень много сообщений, поэтому очень много сообщений все равно меняют свой кластер.
Мой вывод выглядит так:
In stage 0: transferred 9511 clusters with 150 clusters populated
In stage 1: transferred 4974 clusters with 138 clusters populated
In stage 2: transferred 2533 clusters with 90 clusters populated
….
In stage 34: transferred 1403 clusters with 47 clusters populated
In stage 35: transferred 1410 clusters with 47 clusters populated
In stage 36: transferred 1430 clusters with 48 clusters populated
In stage 37: transferred 1463 clusters with 48 clusters populated
In stage 38: transferred 1359 clusters with 48 clusters populated
В исходной статье на рис. 3 показана та же закономерность, но количество кластеров практически постоянно.
Чего я не могу понять, так это того, сколько сообщений их набора данных все еще передается. Насколько я понимаю, это число должно быть как можно меньше, в лучшем случае равно нулю (чтобы каждое сообщение «нашло» правильный кластер). Таким образом, количество кластеров может сходиться, но это мало что говорит о качестве алгоритма/кластеров. Правильно ли я понимаю?
Также возможно, что мои данные недостаточно хороши для правильной кластеризации.
K=600
, переходя кN=47-48
кластеру. Я думаю, это нормально, что он не сходится к определенному числу, просто могут быть некоторые сообщения, которые хорошо вписываются в несколько кластеров. Вы также можете увидеть это поведение на рисунке TweetSet, он немного перемещается. Мои гиперпараметры после некоторого поиска по сетке с длительным временем выполнения: альфа =0.01, beta=0.05
. Для K я думаю, важно просто, чтобы он был достаточно большим. - person simon   schedule 11.06.2020alpha=0.05, beta=0.01
- person simon   schedule 11.06.2020mgp.score
, где вы можете увидеть, насколько алгоритм уверен в назначении входного текста кластеру. Я использую среднее значение того, насколько алгоритм уверен во всех входных документах, чтобы сравнить различные гиперпараметры. Это метрика, которую я придумал сам, потому что у меня были такие же проблемы, как и у вас :) Я также обсуждаю подобные вещи в этот пост - person simon   schedule 13.06.2020log-likelihood
,u-mass
иtopic coherence
для LDA, но не был очень доволен результатами. Что ты используешь? - person simon   schedule 22.06.2020