2016-11-29 2 views
1

Я пытаюсь создать матрицу расстояний Jaccard и выполнять на ней K-средства, чтобы выдавать идентификаторы кластера и идентификаторы элементов в кластере. Вход для него - twet tweets. Ниже приведен код, и я не мог понять, как использовать начальные семена из файла для kmeans.Кластеризация Kmeans с использованием матрицы расстояния jaccard

install.packages("rjson" ,dependencies=TRUE) 
library("rjson") 
install.packages("jsonlite" ,dependencies=TRUE) 
library("jsonlite") 

install.packages("stringdist" ,dependencies=TRUE) 
library("stringdist") 
data <- fromJSON(sprintf("[%s]", paste(readLines(file("C:\\Users\\Yuzuru Onathoshi\\Desktop\\Assignment5_pxv142730_sxl162530\\Part2\\Input\\Tweets.json")),collapse=","))) 

t.feature <- data 
t.feature$geo<-NULL 


Jmatrix<-stringdistmatrix(t.feature$text,t.feature$text,method = "jaccard") 
colnames(Jmatrix) <- t.feature$from_user_id 
rownames(Jmatrix) <- t.feature$from_user_id 

fit <- kmeans(Jmatrix, 10) 

Jaccard Matrix Tweets Matrix

+0

Вы можете реализовать свои собственные кмэны с дистанцией jaccard, это не должно быть сложно. –

+0

@sandipan неверный. k-средства не могут сходиться для других расстояний, если только вы не замените среднее на соответствующую функцию. –

+0

@ Anony-Mousse на самом деле? есть ли для этого теоретический результат? какова математическая интуиция за этим? также, если не означает, что мы можем использовать k-медоидную функцию. Несмотря на то, что с той же оптимизационной функцией, что и kmeans (только с изменением расстояния), интуитивно я не вижу, почему она не будет сходиться. - sandipan 5 часов назад –

ответ

0

к-средство делает не использовать матрицу расстояний.

Это легко увидеть: оно не работает на попарных расстояниях, но для этого требуется только отклонение точки от центра (который обычно не является точкой вашего набора данных).

Он ожидает непрерывных числовых входных данных для кластеризации и делает не поддерживает произвольные функции расстояния.

Основная идея k-средних минимизация дисперсии (что совпадает с минимизацией эвклидовых расстояний в квадрате). Вопреки некоторым учебным пособиям и даже учебникам, k-означает действительно не свести к минимуму расстояние (минимизирует квадрат расстояние, если ваше расстояние - евклидово, но это может быть другой минимум, чем минимум минимальной дистанции). Если вы хотите, чтобы k-средство минимизировало другое расстояние, вы должны найти соответствующее «среднее», то есть функцию, которая оценивает центральную точку наименьшего расстояния. Были предложены некоторые общие заменители, например. Брошюра

Если вы выбрасываете матрицу расстояния Jaccard в k-означает, что она часто дает результат, который можно использовать, но это не то, что вы ожидаете. Вместо того, чтобы сравнивать точки по Jaccard, но вы кластерируете их по квадрату Евклида от их векторов расстояния. Легко видеть, что эти значения, если 0 точно, если точки имеют одинаковые расстояния Жаккарда для всех остальных (включая самих себя), поэтому, в частности, их расстояние по Джакарпу должно быть 0. Но если ваш набор данных неуравновешен (есть несколько кластеров с очень большим числом объекты), то они также будут иметь слишком большой вес в этом двойном пространстве.

Если вам нужны другие расстояния (и вы можете позволить вычислить матрицу расстояний), используйте иерархическую кластеризацию (HAC), а не k-означает!

+0

, но я должен использовать расстояние Jaccard, это проблема, и мне дали начальный набор центроидов, я не знаю, как их использовать. точный вопрос, над которым я работаю, - это следующая ссылка: http: //www3.nd.edu/~dwang5/courses/spring15/assignments/A2/Assignment2_SocialSensing.html – harsha

+0

kmeans дает правильную кластеризацию для матрицы jaccard тоже i имеют список центров, которые следует использовать в качестве центров для километров, но по-прежнему имеют 25 в качестве размера кластера.323906397735641088, 323906483584655360, 323906657333682176, 323907258301939713, , ......, – harsha

+0

Обратите внимание на назначение говорит «Подсказка: Обратите внимание, что твиты не имеют числовые координаты в евклидовом пространстве, вы можете думать о ** разумный способ вычислить «центроид» твитового кластера ** ». - Итак, каков ваш «разумный» способ получить кластерный центр? –

Смежные вопросы