K-средства для тематического моделирования - метод локтя - PullRequest
0 голосов
/ 30 апреля 2018

Я использую K-средства для извлечения тем из текста. Я знаю, что это не лучший способ, но это всего лишь один шаг к более сложной модели. Что меня озадачивает, так это кривая локтя, которую я получаю (ниже). Как бы вы это интерпретировали? Почему внезапный всплеск около 50 К? Или метод локтя не работает при работе с текстом?

from sklearn.cluster import MiniBatchKMeans

wcse = []
for k in range(5, 100, 5):
    kmeans_model = MiniBatchKMeans(n_clusters=num_clusters, init='k-means++', n_init=1, 
                         init_size=1000, batch_size=1000, verbose=False, max_iter=1000)
    kmeans = kmeans_model.fit(X) # where X is my data
    wcse.append(kmeans_.inertia_)

#plot it
fig = plt.figure(figsize=(15, 5))
plt.plot(range(5, 100, 5), wcse)
plt.grid(True)
plt.title('Elbow curve')

enter image description here

Ответы [ 2 ]

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

Проблема в том, что k-means не стабилен на таких данных.

Запустите его 10 раз с каждым k и постройте все результаты.

K-means чувствителен к выбросам и многомерным данным. Так что это просто не работает надежно над текстом.

0 голосов
/ 30 апреля 2018

Как бы вы определили расстояние между различными темами, используя k-means?

Если вы просто используете сходство слов в качестве метрики расстояния для k-означает, что вы не получите темы, вы получите какой-то счетчик слов.

Я бы использовал скрытое выделение дирихле (LDA) для моделирования тем, существуют простые в использовании библиотеки для Python, R, Java.

...