聚类和分类的区别和联系(聚类分析和分类的区别和联系)

圣诞小鹿 111 0

这是一个很有意思的问题。PCA(主成分分析)是降维方法,K-means(K均值)是聚类方法,似乎风牛马不相及。但是,果真如此吗?它们是否有内在的联系呢?

发现有用PCA聚类,可是PCA不应该是降维的方法么?

我不知道你具体发现的是哪篇用PCA聚类的论文,不过我猜你看到的可能是这篇:

Ding He. 2004. K-means Clustering via Principal Component Analysis. ranger.uta.edu/~chqding/papers/KmeansPCA1.pdf

这篇论文的主要内容是从形式上准确地描述PCA和K-means的内在联系,因此使用了大量数学公式和推导。我不打算在这里重复推导过程,感兴趣的可以直接阅读上面给出的论文。我将尝试从直观的角度形象地说明两者的联系。

首先,我们简单温习下PCA和K-means。

PCA假定我们有一些数据点,PCA的目标是找到一条线,让这条线上的点能够最大程度上“代表”原本的数据点。

聚类和分类的区别和联系(聚类分析和分类的区别和联系)-第1张图片

那么,关键在于,我们将依据什么标准寻找这条线?PCA的标准有两条(这两条实际上是等价的):

这条线上的点差异越大越好(从数学上来说,方差较大)。否则线上的点全部挤在一起,代表性显然不好。基于这条线上的点,重建原数据点的误差最小。我们可以用下面的动图演示这一点:

聚类和分类的区别和联系(聚类分析和分类的区别和联系)-第2张图片

(图片来源:CrossValidated)

上图中,红点是PCA降维后的数据点,红线为重建误差。我们可以看到,当直线对准两端的粉线时,红线的总长度最小。

那么,数学上我们如何表示红线的总长度呢?

显然,直接加起来是不行的,因为正负误差会互相抵消。

所以,很自然的,我们就想到,取绝对值或者平方后再相加,然后取平均数(方便应付新增数据点的情况)。

那么,到底是取绝对值还是取平方呢?高斯-马尔可夫定理(Gauss-Markov Theorem)提示我们,取平方比较好。

所以,概括一下,PCA需要最小化重建的均方误差(mean-squared error)。

K-meansK-means聚类,是给定一些数据点,将其分组。分组的依据是和中心点的距离。

聚类和分类的区别和联系(聚类分析和分类的区别和联系)-第3张图片

(图片来源:CrossValidated)

如果说PCA是要找一条直线的话,那么K-means就需要找中心点。中心点怎么找?最小化其他数据点和中心点的距离总和。

这个距离总和如何衡量?使用均方误差(mean-squared error),所以这一聚类方法称为K-means.

PCA和K-means的内在联系从这里我们可以看到,PCA是要找一些点(这些点在一条线上),这些点的特征可以最好地代表原数据点。而K-means是要找一些中心点,这些中心点可以最好地代表所属聚类中的点。而判定最好的标准,都是最小化均方误差,所以,从直觉上说,两者具有内在联系。

聚类和分类的区别和联系(聚类分析和分类的区别和联系)-第4张图片

(图片来源:Machine Learning Refined)

利用这一内在联系,我们可以先通过PCA计算出聚类均值(具体计算方法见Ding He的论文),然后迭代该均值,直到收敛(收敛意味着聚类完成)。

聚类和分类的区别和联系(聚类分析和分类的区别和联系)-第5张图片

(图片来源:论文)

思考我们前面提到了高斯-马尔可夫定理。熟悉机器学习的读者可能在学习线性回归的时候接触过这个定理。那么,不知道读者是否好奇,线性回归和PCA、K-means有没有什么联系?更进一步,线性回归(回归方法)、PCA(降维方法)、K-means(聚类方法)和稀疏编码(编码方法)有没有什么联系?欢迎留言告诉我你的想法。

抱歉,评论功能暂时关闭!