|
根据自己的想法写的一个算法。具体思想如下:
给定一个数据集A,数据点个数是m,维度是n。
1 对矩阵A在数据点个数上利用PCA思想进行降维。寻找出具有代表性的p个数据点组成矩阵B,数据点个数是p,维度是n。
2 将A中每一个数据点与B中每一个数据点做映射。利用欧式距离来表示两个数据点的相似度,A中的每一个数据点都用B中的一个数据点代表(距离最小)。
3 对B在维度上利用PCA进行降维。寻找具有代表性的r个维度组成矩阵C,数据点是p,维度是r。
4 对C进行聚类。聚类结果也就是B中p个数据点的聚类结果,然后利用A到B的映射矩阵,对A中每一个数据点a进行分配标签,如果B中的数据点b代表数据点a,那么a的标签就是b的标签。
由于PCA并不能对稀疏矩阵进行处理,所以算法的最大缺点是不能用于稀疏矩阵。实验在图片数据集Yale上进行,模拟时簇的个数设为k,k在[30,40]之间;聚类算法kmeans的迭代次数一定,设为10000.实验结果如下图(横轴表示k的取值)。
从实验上看,想法很差,k变化时,准确率(CR)、NMI、RI的值恒定而且很低,还不如原生态的kmeans。
从实验的中间结果来看,经过两次PCA操作后,大部分的数据点被分到同一个簇中,造成结果很差。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 00:32
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社