选择适当的相似性度量并评估k均值聚类模型的有效性

use*_*556 4 cluster-analysis machine-learning k-means unsupervised-learning

我已经实现了k-means聚类来确定300个对象中的聚类.我的每个物体都有大约30个维度.使用欧几里德度量计算距离.

我需要知道

  1. 我如何确定我的算法是否正常工作?我不能有一个图表来说明我的算法的正确性.
  2. 欧几里德距离是计算距离的正确方法吗?如果我有100个维度而不是30个怎么办?

dou*_*oug 12

OP中的两个问题是单独的主题(即答案中没有重叠),因此我将尝试一次一个地回答它们与列表中的第1项.

我如何确定我的[聚类]算法是否正常工作?

像其他无监督的ML技术一样,k-means缺乏一个很好的诊断测试选择来回答诸如"k-means返回的聚类分配对于k = 3或k = 5更有意义?"这样的问题.

尽管如此,还是有一项广泛接受的测试可以产生直观的结果并且可以直接应用.此诊断指标仅为此比率:

质心间分离 /簇内方差

随着此比率的值增加,群集结果的质量也会提高.

这很直观.这些指标中的第一个是每个群集与其他群集相隔多远(根据群集中心测量)?

但是单独的质心间分离并不能说明整个故事,因为两个聚类算法可以返回具有相同的质心间分离的结果,尽管一个明显更好,因为聚类"更紧"(即更小的半径); 换句话说,簇边缘有更多的分离.第二个指标 - 群内方差 - 说明了这一点.这只是每个群集计算的均值方差.

总之,质心间分离与簇内方差比率是一种快速,一致且可靠的技术,用于比较来自不同聚类算法的结果,或比较来自在不同可变参数下运行的相同算法的结果 - 例如,迭代次数,距离度量的选择,质心的数量(k的值).

期望的结果是紧密(小)簇,每个簇远离其他簇.

计算很简单:

用于质心间分离:

  • 计算聚类中心之间的成对距离; 然后

  • 计算这些距离的中位数.

对于群内方差:

  • 对于每个群集,计算给定群集中每个数据点与其群集中心的距离; 下一个

  • (对于每个聚类)计算距上述步骤的距离序列的方差; 然后

  • 平均这些方差值.


这是我对第一个问题的回答.这是第二个问题:

欧几里德距离是计算距离的正确方法吗?如果我有100个维度而不是30个怎么办?

首先,一个简单的问题 - 随着尺寸/特征的增加,欧几里德距离是一个有效的指标吗?

欧氏距离是完全可扩展的 - 适用于二维或两千.对于任何一对数据点:

  • 从元素中减去它们的特征向量,

  • 对结果向量中的每个项目进行平方,

  • 得出结果,

  • 取该标量的平方根.

在这个计算序列中没有任何地方涉及规模.

但是,欧几里德距离是否适合您的问题的相似度量,取决于您的数据.例如,它是纯数字(连续)吗?或者它是否也有离散(分类)变量(例如,性别?M/F)如果您的某个维度是"当前位置"而200个用户中,100个具有值"旧金山"而另外100个具有"旧金山"波士顿",你不能说,平均而言,你的用户来自堪萨斯州的某个地方,但这就是欧几里德距离的作用.

无论如何,由于我们对此一无所知,我只会给您一个简单的流程图,以便您可以将其应用于您的数据并确定适当的相似性指标.

为您的数据确定适当的相似性指标:

在此输入图像描述