【问题标题】:Kmeans clustering using jaccard distance matrix使用 Jaccard 距离矩阵进行 Kmeans 聚类
【发布时间】:2017-04-13 00:42:30
【问题描述】:

我正在尝试创建 Jaccard 距离矩阵并对其执行 K-means 以给出集群 ID 和集群中元素的 ID。它的输入是推特推文。以下是代码,我不明白如何将文件中的初始种子用于 kmeans。

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距离实现自己的kmeans,应该不难。
  • @sandipan 不正确。 k-means 可能不会在其他距离处收敛,除非您还用适当的函数替换了均值。
  • @Anony-Mousse 真的吗?有什么理论结果吗?它背后的数学直觉是什么?如果不意味着我们可以使用类似 k-medoid 的功能。尽管具有与 kmeans 相同的优化功能(仅更改距离度量),但直观地我看不出它为什么不会收敛。 – 桑迪潘 5 小时前
  • 是的,PAM/k-medoids 的存在是因为均值仅优化最小二乘……这就是数学直觉:均值不会最小化任意距离函数。它可能会使集群在距离上更糟

标签: r twitter cluster-analysis k-means tweets


【解决方案1】:

k-means 不使用距离矩阵

这很容易看出:它不适用于成对距离,但它只需要一个点与 中心 的偏差(这通常不是数据集中的一个点)。

它需要连续的数值输入数据进行聚类,并且支持任意距离函数。

k-means 的核心思想是最小化方差(这与最小化平方欧几里得距离相同)。与一些教程甚至教科书相反,k-means 实际上 not 最小化距离(如果您的距离是欧几里得,它会最小化 squared 距离;但这可能是不同的最小值比最小距离最小值)。如果您希望 k-means 最小化另一个距离,您必须找到一个合适的“均值”,即估计最小距离中心点的函数。已经提出了一些通用替代品,例如帕姆。

如果您将 Jaccard 距离矩阵转换为 k-means,它通常会产生一些有用的结果,但这不是您所期望的。不是通过 Jaccard 比较点,而是您通过距离向量的平方欧几里得对它们进行聚类。很容易看出,如果点与所有其他点(包括它们自己)具有相同的 Jaccard 距离,则该值恰好为 0,因此特别是它们的 Jaccard 距离必须为 0。但是如果您的数据集不平衡(有些集群有很多物体)那么它们在这个对偶空间中也会有太大的重量。

如果您需要其他距离(并且有能力计算距离矩阵),请使用层次聚类 (HAC) 而不是 k-means!

【讨论】:

  • 但我必须使用 Jaccard 距离,这就是问题所在,我得到了一组初始质心,我不知道如何使用它们。我正在处理的确切问题是以下链接:www3.nd.edu/~dwang5/courses/spring15/assignments/A2/…
  • kmeans 也为 jaccard 矩阵提供了正确的聚类,我有一个中心列表,应该用作 kmeans 的中心,但仍然有 25 个作为集群大小 .323906397735641088, 323906483584655360, 323906657333682176, 3293710738 , ,......,
  • 注意作业显示“提示:注意推文在欧几里得空间中没有数字坐标,您可能想想一个合理的方法来计算推文的“质心”集群。” - 那么,您获得集群中心的“明智”方式是什么?
  • 如何在 kmeans 上计算 SSE。
  • SSE,误差平方和的定义是平方和欧几里得距离。同样,您需要将其替换为 Jaccard,就像平均值一样。
猜你喜欢
  • 2011-04-13
  • 2014-07-09
  • 2021-11-27
  • 1970-01-01
  • 2016-07-28
  • 2012-03-17
  • 2019-02-05
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多