聚类和降维有什么区别与联系?

论坛 期权论坛 期权     
匿名用户1024   2021-5-30 16:29   10844   5
我现在在做聚类相关的问题,发现有用PCA聚类,可是PCA不应该是降维的方法么?所以不太清楚聚类和降维的区别与联系?
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
有关回应  16级独孤 | 2021-5-30 16:29:23
发现有用PCA聚类
猜想你指的是Chris Ding和Xiaofeng He在ICML '04发表的论文K-means clustering via principal component analysis
这篇论文是通过PCA进行K均值聚类,其基本直觉是K均值聚类和主成分分析(PCA)具有内在的联系。

图片来源:CrossValidated上面是PCA的示意图。其中每个蓝色数据点代表一个观测,X轴和Y轴分别对应该数据点的两个特征。PCA的目标就是构建一个新特征(图中的黑线),将所有数据点投影到这个新特征直线上(红点)。寻找这条最佳直线的标准为:
  • 数据点投影(红点)在直线上分布得越分散越好(即方差越大越好)。
  • 根据数据点投影(红点)重建原始特征(蓝色数据点)的误差总和(红点和蓝点之间的红色连接线长度总和)越小越好。
上述两者是等价的。所以,PCA过程可以看成是黑线调整自己的朝向,以最小化红色连接线的平方长度之和(取平方以避免正负项相互抵消)。
现在我们再来看K均值聚类。K均值聚类首先随机初始化K个聚类中心点,然后通过计算数据点到中心点的距离(常用的是欧几里得距离)将数据点归入相应聚类。不断迭代选择聚类中心点,最小化聚类中每个点到中心点的距离平方和,以找出最优中心点。

图片来源:Towards Data Science因此,PCA是要寻找一些点(这些点位于同一直线上),这些点能够最好地代表原本的数据点。而K均值则是需要寻找一些中心点,这些中心点能够最好地代表所属聚类中的点。而判断“最好”的具体标准,都是最小化原数据点到新点的距离平方和。这正是两者之间的内在联系。

Machine Learning Refined, Figure 9.3回到Ding & He的论文,其基本思路是先通过PCA过程计算出聚类均值,然后迭代该均值,直到收敛(也就是聚类求解过程完成)。具体的数学推导过程见Ding & He的论文,篇幅所限,这里将不列出了。
当然,以上只是说明PCA降维和K均值聚类具有内在联系,也就是一种降维的具体方法和另一种聚类的具体方法之间的联系,并不能推广到一般意义上的降维和聚类。不过,基于上面的思路,其实可以想一想,线性回归(回归方法)、PCA(降维方法)、K均值(聚类方法)、稀疏编码(编码方法)之间有没有什么内在联系?
3#
有关回应  16级独孤 | 2021-5-30 16:29:24
降维和聚类之间还是存在很多联系的。大多数情况下,降维是为聚类服务的。
降维的目的主要有两个:
1.是为了更好地适应模型。特别是在样本较少的数据集上,如果维度过高导致样本在空间上分布稀疏,很容易造成过拟合(当然有SVM等算法来解决这一问题)。解决这一问题的方法有两个:一个是借助正则(如LASSO等)来限制模型的复杂度;另一个就是降维来改变空间维度上的稀疏分布。
2.避免维度灾难的问题。在维度过高的时候,如果采用常见的距离度量方法(如欧式距离等)度量空间样本上的距离,就会陷入维度灾难,也即大部分样本间的距离会被压缩到很小的范围内,以致无法区分。解决这一问题的方法也有两个:一个是优化距离度量方法,在计算过程中压缩;另一个就是降维,通过损失部分信息以达到规避维度过高的问题。
聚类的思路主要是两种:一个是常规的(kmeans,层次距离,dbscan等,都是需要定义距离的),一个是图上的聚类(是基于连通关系的)。对于第一种聚类而言,距离的定义很关键,而我们的数据通常是高维的,而修改距离度量算法的普适性又不强,和场景强关联,所以很多时候都会采用降维的方法来解决。
在可视化领域降维和聚类都是很关键的研究方向,比如sne或t-sne算法,在解决可视化问题的同时,也为降维和聚类开启了一个新的研究方向。

4#
有关回应  16级独孤 | 2021-5-30 16:29:25
降维能用来聚类,但聚类肯定不仅仅是降维。降维算法其实还蛮多,像什么k-means之类有非常多成熟的算法,基本上就只要调一下库就行了。但是聚类算法通常没有办法说哪种算法更好,算法的采用就是取决于数据模型,数据量大小,计算能力等等因素,特别庞杂,而且变体非常多。黑猫白猫,能抓老鼠就是好猫,几种算法多测测看哪种算法更符合要求就用哪种算法。你可以直接用python的 scikit-learn做做实验,大部分的成熟算法都是直接调用可以了,测试一下会有比较直观的感受,纯算法做久了会很麻木而且缺失方向。
5#
有关回应  16级独孤 | 2021-5-30 16:29:26
联系:聚类是对类别变量做降维的方法之一。
区别:降维是在数据预处理时为了防止过拟合时常用的方法,聚类是在整个数据集上按一个定义的拓扑距离进行分组的过程。
6#
有关回应  16级独孤 | 2021-5-30 16:29:27
聚类是一种降维方式,降维是个更大的概念
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP