标签:
原文是:《k-Means Clustering Is Matrix Factorization》
本博客是该论文的阅读笔记,不免有很多细节不对之处。
还望各位看官能够见谅,欢迎批评指正。
更多相关博客请猛戳:http://blog.csdn.net/cyh_24
如需转载,请附上本文链接:http://blog.csdn.net/cyh_24/article/details/50408884
论文证明了传统的K-Means算法的目标函数可以被表达成数据矩阵与其低阶数据矩阵之间差异的Frobenius范数。
简要的说,K-Means 聚类其实是一种矩阵分解问题。
K-Means的推导,我想大家都已经很清楚了,这里不细说。它的目标函数,可以定义如下:
如果能够把目标函数表达成如下形式,那么也就证明了K-Means聚类是特殊的矩阵分解问题。
先不用深究,下文会详细介绍,先注意几个变量的意义:
数据集
xi 表示矩阵X 的第j -th列向量(好像与平常的相反了);X 的第(l,j) 的元素可以写成xlj 或者(X)lj ;||x|| 表示欧式距离,||X|| 则表示矩阵的 Frobenius 范数,- 其Frobenius 范数平方形式定义如下:
||X||2=∑l,jx2lj=∑j||xj||2=∑jxTjxj=∑j(XTX)jj=tr[XTX]
假设,数据集
那么,显然可以得到:
而每行总和刚好是这个类中的样本个数:
由于
因此,
接下来,我们看目标函数的中间项。作为矩阵Frobenius范数的平方,它可以按如下方式写:
从之前的结论中,我们可以快速发现:
来看一下
在上面的推导中,我们用到了
现在的任务就是证明第二个等式。
回顾一下我们的目的,就是讲目标函数最小化, 因为已经证明了第一个等式,所以,其实也就是让
令偏导等于0,可以得到:
代入目标函数第二个等式,就证明完毕了。
我们在上面用了一大堆令人眩晕的代数表达式,终于说明了K-Means聚类问题可以被理解成是如下的受约束的矩阵分解问题:
标签:
原文地址:http://blog.csdn.net/cyh_24/article/details/50408884