我正在使用mahoutKMeansDriver
构建集群,并希望Spearman
用作DistanceMeasure
。
我可以在Java中找到该算法还是需要自己编写算法?
我在网络上找不到任何示例。
K-装置被设计来最小化方差。您的距离函数还必须使方差最小化,否则将失去收敛属性。为了确保与其他距离的会聚,请参阅围绕medoid(PAM)或k-medoids分区。
相关度量是不适用于k均值的距离的一个很好的例子:
考虑两个向量和绝对Spearman相关性:dist = 1- | r |
1 2 3 4 5
5 4 3 2 1
显然,斯皮尔曼相关性是-1,并且这两个向量被认为是“相同的”。
但是,k均值现在将计算这两个值的平均值,从而得出常数向量
3 3 3 3 3
这与这两者不一样(实际上,它与任何事物的相关性甚至都没有得到很好的定义)。换句话说:平均值不会使绝对相关最小化,并且您不应该使用此距离函数。
这就是为什么只应使用平方欧几里德距离的k均值的原因。
当查看余弦相似度的定义以及球形k均值也起作用的原因时,很容易看出这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句