一、k-means:在大数据的条件下,会耗费大量的时间和内存。
优化k-means的建议:
1、减少聚类的数目K。因为,每个样本都要跟类中心计算距离。
2、减少样本的特征维度。比如说,通过PCA等进行降维。
3、考察其他的聚类算法,通过选取toy数据,去测试不同聚类算法的性能。
4、hadoop集群,K-means算法是很容易进行并行计算的。
二、K-means距离的定义:
目前各种机器学习开源库,对于k-means的实现,都是基于欧式距离。如果想自定义距离,比如说用余弦相似度,那么k-means就必须要重新推导,也即需要重新实现k-means。
下面,从k-means的推导中,可以发现,在k-means当中,计算类的中心,跟距离的定义是紧密相关的。
如上所示:在k-means当中,重新计算类中心, 仅在距离定义为欧式距离的前提下,才是加和取平均。如果想用cos相似度,那么就必须要重新推导,计算类中心的方式。所以说, 一般开源库实现的k-means,都没有提供让你自定义聚类的接口。或者说,让你传进去一个距离矩阵。 </