R中k-means聚类的解释结果

机器算法验证 r 机器学习 聚类 解释 k-均值
2022-03-24 00:29:54

我使用kmeansR 的指令在 Anderson 的 iris 数据集上执行 k-means 算法。我对我得到的一些参数有疑问。结果是:

Cluster means:
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1     5.006000    3.428000     1.462000    0.246000

在这种情况下,“集群意味着”代表什么?它是集群内所有对象距离的平均值吗?

同样在最后一部分我有:

Within cluster sum of squares by cluster:
[1] 15.15100 39.82097 23.87947
 (between_SS / total_SS =  88.4 %)

那个 88.4% 的值,它的解释是什么?

2个回答

如果计算每个数据点与全局样本均值的距离平方和,则得到total_SS. 如果不是计算全局样本均值(或“质心”),而是每组计算一个(此处为三组),然后计算这三个均值与全局均值的平方距离之和,则得到between_SS. (计算时,将每个平均值与全局平均值的平方距离乘以它所代表的数据点数。)

如果没有可辨别的聚类模式,则三组的三个均值将接近全局均值,并且between_SS只是 的很小一部分total_SS这里的情况正好相反,这表明数据点在四维空间中根据物种非常整齐地聚集。

K-means不是基于距离的聚类算法

K-means 搜索最小平方和分配total_SS,即它通过将点分配给聚类中心来最小化非归一化方差 (= )。

为了使 k-means 收敛,您需要两个条件:

  • 重新分配点会减少平方和
  • 重新计算平均值会减少平方和

由于只有有限数量的组合,您不能无限减少该值,算法必须在某个点收敛到局部最优值。

每当您打算更改分配函数时,都有使算法不再终止的风险,就像狗追逐自己的尾巴一样。本质上,这两个步骤都必须就目标函数达成一致。我们确实知道算术平均值是关于平方和的最佳选择。第一步,我们可以计算i(xiμji)2对于每个平均值j并选择最小的。从技术上讲,这里没有距离计算在数学上,通过最小平方和分配等于通过接近平方欧几里得距离进行分配,这(如果您浪费 CPU 周期进行计算sqrt)等于最小欧几里得距离分配。所以将每个点分配给最接近的平均值的直觉是正确的,但不是优化问题的作用。

between_SS可能是两个平均值之间的加权平方和,以衡量聚类中心的分离程度(注意:聚类中心,它不比较实际的聚类 - 从技术上讲,聚类 Voronoi 细胞接触相邻聚类 Voronoi 细胞)。

请注意,使用 k-means,您可以通过增加 k 来提高朴素聚类质量。这里测量的质量是一个数学值,可能与用户要求不匹配。Iris 实际上是一个很好的例子,其中 k-means 经常收敛到不太令人满意的结果,即使外部信息应该正好有 3 个集群。

如果您想要k-means 的基于距离的变体,请查看k-medoids通过用中心点替换均值来确保收敛:

  • 每个对象都被分配到最近的集群(通过任意距离测量)
  • 聚类中心更新为聚类的最中心对象,即与所有其他对象的平均距离最小。

在每一步中,距离总和都会减少;组合的数量是有限的,因此算法必须在某个局部最小值处终止。