k中的Gower和余弦距离意味着聚类

时间:2016-06-05 20:04:42

标签: r cluster-analysis

我试图了解R语言的一些基础知识。昨天,我为自己做了一个小练习:

R中的群集

到目前为止,我设法对欧几里德和曼哈顿方法进行了一些计算。

resultEuclidean <- Kmeans(myData, 6, method = "euclidean");
resultManhattan <- Kmeans(myData, 6, method = "manhattan");

我知道,我还可以应用其他距离,例如:gower或余弦。

resultGower <- Kmeans(myData, 6, method="gower");
resultCosine <- Kmeans(myData, 6, method="cosine");

问题:

不幸的是,它并不是那么简单,我仍然无法弄清楚如何将这两种方法用于kmeans聚类。有人可以对这个话题有所了解吗?

代码

# libraries
library(factoextra);
library(cluster);

install.packages("amap");
library(amap);

# dataset
data("multishapes", package = "factoextra");
myData <- multishapes;
myData$shape <- NULL;

# algorithm
resultEuclidean <- Kmeans(myData, 6, method = "euclidean");
resultManhattan <- Kmeans(myData, 6, method = "manhattan");
resultGower <- Kmeans(myData, 6, method="gower");
resultCosine <- Kmeans(myData, 6, method="cosine");

1 个答案:

答案 0 :(得分:1)

k-means最小化方差,而不是距离

一种相当普遍的误解是,k-means使距离最小化,因为它“将每个点分配到最近的质心”。但那只是k-means的一半。 K-means然后重新计算中心,最小化其他距离,但只有很少。

均值是最小二乘估计,最小化sum_d (x[d] - center[d])^2。即它最小化了欧几里德平方。

如果在将点分配到中心时也使用平方欧几里德,那么该方法将可靠地工作和收敛。

这使得严格的限制了k-means可以使用的距离(Bregman散度)。对于其他距离,存在例如PAM(在medoids周围分区),其中medoid是与所有其他集群成员具有最小距离(使用任何度量)的对象。您可以通过用medoid替换均值来将medoid概念转换为k-means。然后你得到k-medoids。