случайные точки при визуализации вложений word2ve c с использованием TSNE - PullRequest
1 голос
/ 27 января 2020

Я создал модель word2ve c и визуализировал первые n похожих слов для конкретного термина, используя TSNE и matplotlib. Что я не понимаю, так это то, что когда я запускаю его несколько раз, одни и те же слова отображаются в разных позициях, даже если слова и векторы одинаковы каждый раз. Почему это так? У меня есть ощущение, что это связано с тем, как TSNE уменьшает размерность векторов. Если это так, то действительно ли надежно использовать этот метод визуализации, поскольку он будет отличаться каждый раз?

model = Word2Vec.load("a_w2v_model")

topn_words_list = [x[0] for x in model.wv.most_similar("king",topn=3)]
topn_vectors_list = model[topn_words_list]

tsne = TSNE(n_components=2, verbose=1, perplexity=27, n_iter=300)
Y = tsne.fit_transform(topn_vectors_list)

fig, ax = plt.subplots()
ax.plot(Y[:, 0], Y[:, 1], 'o')
ax.set_yticklabels([]) #Hide ticks
ax.set_xticklabels([]) #Hide ticks

for i, word in enumerate(topn_words_list):
    plt.annotate(word, xy=(Y[i, 0], Y[i, 1]))
plt.show()

Ответы [ 2 ]

1 голос
/ 27 января 2020

TSNE является недетерминированной техникой уменьшения размерности c. Следовательно, при разных прогонах с одними и теми же гиперпараметрами могут получаться разные выходные данные, но они могут быть очень похожими. TSNE является очень популярной техникой уменьшения размерности благодаря эффективному использованию нелинейных данных и способности сохранять локальные и глобальные структуры, что делает его очень надежным. Но эти графики могут быть хитрыми и вводящими в заблуждение, чтобы интерпретировать без надлежащей настройки hyperparmenter.

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

0 голосов
/ 03 марта 2020

Как упомянул @Nischal Sanil, T-SNE является недетерминированной c техникой уменьшения размерности. Вот почему есть параметр random_state в TSNE реализации sklearn.

Следовательно, чтобы каждый раз получать один и тот же результат, установите random_state в какое-то значение.

...