Как соотнести шумовые данные результата sklearn-DBSCAN с другими кластерами? - PullRequest
0 голосов
/ 25 сентября 2019

Я использую sklearn-DBSCAN для кластеризации моих текстовых данных.Я использовал GoogleNews-vectors-positive300.bin для создания 300 векторов предложений для каждого документа и создавал метрики размером 10000 * 300.когда я передавал метрики в DBSCAN с несколькими возможными значениями eps (от 0,2 до 3) и min_samples (от 5 до 100) с другими параметрами по умолчанию, получая количество кластеров (от 200 до 10).Как я проанализировал для всех кластеров, данные шума составляют примерно 75-80% моих данных.Есть ли способ уменьшить шум или использовать другие параметры (расстояния), чтобы уменьшить шум?Даже если я проверил с евклидовым расстоянием между 2 векторами 0,6, но оба они находятся в разных кластерах, как мне удастся собрать один кластер?

X_scaled = scaler.fit_transform(sentence_vectors)
ep = 0.3
min_sam = 10
for itr in range(1,11):
    dbscan = DBSCAN(eps=ep, min_samples = min_sam*itr)
    clusters = dbscan.fit_predict(X_scaled)

1 Ответ

0 голосов
/ 26 сентября 2019

Если вы хотите, чтобы две точки на расстоянии 0,6 находились в одном и том же кластере, то вам, возможно, придется использовать больший эпсилон (который является пороговым значением расстояния).На уровне 0,6 они должны быть в одном кластере.

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

НоВ общем, я сомневаюсь, что вы сможете получить хорошие результаты.То, как векторы предложений строятся путем усреднения векторов word2vec, убивает слишком много сигнала и добавляет много шума.А поскольку данные являются многомерными, все такие шумы являются проблемой.

...