mahout Spearmans Correlation java

时间:2014-06-12 14:57:10

标签: java cluster-analysis mahout

我使用mahout KMeansDriver构建群集,并希望将Spearman用作DistanceMeasure

我可以在java中找到这个算法,还是我需要自己编写?

我在网上找不到任何相关的例子。

1 个答案:

答案 0 :(得分:1)

不要将k-means用于其他距离测量。

它可能会停止收敛。

K-means 设计最小化差异。距离函数也必须最小化方差,否则会失去收敛属性。为了保证与其他距离的收敛,请参阅围绕medoids(PAM)的分区,即k-medoids。

相关度量是与k-means一起工作的距离的一个很好的例子:

考虑两个向量和绝对长矛相关:dist = 1- | r |

1 2 3 4 5
5 4 3 2 1

显然,spearman相关性为-1,这两个向量被认为是“相同的”。

然而,k-means现在将计算这两者的均值,从而产生常量向量

3 3 3 3 3

与这两个不相似(事实上,它与任何东西的相关性甚至都没有明确定义)。换句话说:均值不会使绝对相关性最小化,和 你不应该使用这个距离函数。

方差=平方欧几里德

这就是为什么你应该只使用平方欧几里德距离的k-means。

在L2归一化向量上:方差〜余弦

在查看余弦相似度的定义时很容易看出, sphere k-means的原因也适用。