use*_*556 4 cluster-analysis machine-learning k-means unsupervised-learning
我已经实现了k-means聚类来确定300个对象中的聚类.我的每个物体都有大约30个维度.使用欧几里德度量计算距离.
我需要知道
dou*_*oug 12
OP中的两个问题是单独的主题(即答案中没有重叠),因此我将尝试一次一个地回答它们与列表中的第1项.
我如何确定我的[聚类]算法是否正常工作?
像其他无监督的ML技术一样,k-means缺乏一个很好的诊断测试选择来回答诸如"k-means返回的聚类分配对于k = 3或k = 5更有意义?"这样的问题.
尽管如此,还是有一项广泛接受的测试可以产生直观的结果并且可以直接应用.此诊断指标仅为此比率:
质心间分离 /簇内方差
随着此比率的值增加,群集结果的质量也会提高.
这很直观.这些指标中的第一个是每个群集与其他群集相隔多远(根据群集中心测量)?
但是单独的质心间分离并不能说明整个故事,因为两个聚类算法可以返回具有相同的质心间分离的结果,尽管一个明显更好,因为聚类"更紧"(即更小的半径); 换句话说,簇边缘有更多的分离.第二个指标 - 群内方差 - 说明了这一点.这只是每个群集计算的均值方差.
总之,质心间分离与簇内方差的比率是一种快速,一致且可靠的技术,用于比较来自不同聚类算法的结果,或比较来自在不同可变参数下运行的相同算法的结果 - 例如,迭代次数,距离度量的选择,质心的数量(k的值).
期望的结果是紧密(小)簇,每个簇远离其他簇.
计算很简单:
用于质心间分离:
计算聚类中心之间的成对距离; 然后
计算这些距离的中位数.
对于群内方差:
对于每个群集,计算给定群集中每个数据点与其群集中心的距离; 下一个
(对于每个聚类)计算距上述步骤的距离序列的方差; 然后
平均这些方差值.
这是我对第一个问题的回答.这是第二个问题:
欧几里德距离是计算距离的正确方法吗?如果我有100个维度而不是30个怎么办?
首先,一个简单的问题 - 随着尺寸/特征的增加,欧几里德距离是一个有效的指标吗?
欧氏距离是完全可扩展的 - 适用于二维或两千.对于任何一对数据点:
从元素中减去它们的特征向量,
对结果向量中的每个项目进行平方,
得出结果,
取该标量的平方根.
在这个计算序列中没有任何地方涉及规模.
但是,欧几里德距离是否适合您的问题的相似度量,取决于您的数据.例如,它是纯数字(连续)吗?或者它是否也有离散(分类)变量(例如,性别?M/F)如果您的某个维度是"当前位置"而200个用户中,100个具有值"旧金山"而另外100个具有"旧金山"波士顿",你不能说,平均而言,你的用户来自堪萨斯州的某个地方,但这就是欧几里德距离的作用.
无论如何,由于我们对此一无所知,我只会给您一个简单的流程图,以便您可以将其应用于您的数据并确定适当的相似性指标.
为您的数据确定适当的相似性指标:

| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |