Понимание "оценки", возвращаемого scikit-learn KMeans

Я применил кластеризацию в наборе текстовых документов (около 100). Я преобразовал их в Tfidf векторы с помощью TfIdfVectorizer и поставил векторы в качестве входных данных в scikitlearn.cluster.KMeans(n_clusters=2, init='k-means++', max_iter=100, n_init=10). Теперь, когда я

model.fit()
print model.score()

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

Он служит моей основной цели - найти, какой набор документов похож, но может ли кто-нибудь помочь мне понять, что именно означает это значение model.score() для соответствия? Как я могу использовать это значение для оправдания моих результатов?

Ответ 1

В документации говорится:

Returns:    
score : float
Opposite of the value of X on the K-means objective.

Чтобы понять, что это значит, вам нужно взглянуть на алгоритм k-средних. То, что k-означает, по существу, - это найти кластерные центры, которые минимизируют сумму расстояний между образцами данных и связанными с ними кластерными центрами.

Это двухэтапный процесс, когда (a) каждый образец данных связан с его ближайшим центром кластера, (b) скорректированы центры кластеров в центре всех связанных с ними образцов. Эти шаги повторяются до тех пор, пока не будет выполнен критерий (максимальное изменение итераций/мин между двумя последними итерациями).

Как вы можете видеть, между образцами данных и связанными с ними кластерными центрами остается расстояние, и целью нашей минимизации является расстояние (сумма всех расстояний).

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

Из документации я бы ожидал, что все значения будут отрицательными. Если вы наблюдаете как отрицательные, так и положительные значения, возможно, это больше, чем оценка.

Интересно, как вы получили идею кластеризации в два кластера, хотя.

Ответ 3

Слово, выбранное в документации, немного сбивает с толку. Он говорит: "Напротив значения Х на цели К-средних". Это означает отрицание цели K-средних.

Цель K-средних

Цель в K-средних состоит в том, чтобы уменьшить сумму квадратов расстояний точек от их соответствующих центроидов кластера. У этого есть другие имена как функция ошибки J-Squared, J-оценка или сумма квадратов в пределах кластера. Это значение говорит о внутренней когерентности кластеров. (Чем меньше, тем лучше)

Целевая функция может быть непосредственно получена из следующего метода.

model.inertia_