对data的各个feature进行预处理
1. feature的选择:用相关性、基尼系数、信息熵、统计检验或是随机森林选取最为重要的特征变量
2. 如果需要,对一些特征变量进行scaling
3. 对数据进行变换:离散傅里叶变换或离散小波变换
4. 可以对数据进行降维处理,映射到低维度空间进行展示,观察数据形状,帮助选择聚类算法
降维的一些选择:
线性方法,PCA
非线性特征十分明显的数据集:流行学习(ISOMAP, LLE, MVU, Kernel PCA)
谱聚类:spectral clustering
聚类中度量相似性的方法:
1. 距离:最为常用的度量点之间相似性的方法。有很多距离的计算方法距离的各个公式其实是LP Norm(LP Space:Lebesgue可积空间)算法的一种应用。
公式:
当p=1时,该距离为Manhattan距离;p=2时,为欧式距离,等等
这里需要研究各个距离对点逼近簇中心方式的不同,并知道在何种情形下应该使用何种距离更为合适。
2. 相似系数:主要为夹角余弦与相关系数:如皮尔逊相似系数等等。
3. 核函数:把数据从低维度的空间投射至高维度空间中去。
4. DTW距离:主要运用于计算两段时间序列距离的一种方法,网上有京东运用此距离算法研究用户生命周期,并以此进行聚类的实例。
聚类算法:
1. 基于分层的聚类:
Birch:适用于大数量级,并且数据为numerical;
Rock:适用于数据为categorical feature的情况;
Chameleon:聚类效果非常高,可以在类别极其复杂的情况下仍然保持很高的准确率,但运算效率较低。
2. partition-based clustering algorithm
最基础的无疑是k-means以及其衍生出去的k-means家族算法
以下是k-means的存在的一些问题,及对应解决这些问题的衍生算法
k-means对初始值设定异常敏感,不同的初始中心也即不同的seed的运算结果会有一定的差别;> k-means++, intelligent k-means, genetic-kmeans
k-menas对噪声及离群值非常的敏感; > k-medoids, k-medians
k-menas只适用于numerical数据,不适应categorical数据; > k-modes
k-means对于非凸数据对聚类效果非常差; kernel k-means
k-menas在数据量相当大时,就越可能陷入local optimal
3. density-based clustering algoritm
最基础的是dbscan:这种基于密度的聚类方法的主要逻辑是画圈圈,所以dbscan最重要的两个参数也就是圈的最大半径与圈中最多有多少个点
dbscan对于参数的设置极为敏感,所以有了对应的OPTICS:优先对高密度区域进行搜索,然后根据高密度区域的特点进行参数设置。
4. model-based clustering algorithm
主要基于的是概率模型与神经网络模型。
概率模型:主要思想为属于同一类的数据应该属于同一种概率分布所产生。执行效率不是很高。
最为常用的为高级混合模型 GMM (EM)
神经网络模型:SOM
聚类效果的评价
1. Davies-Bouldin index 对应R中的包:clv,clusterCrit 也是基于点至中心点的距离衍生出去的一种评价方法
2. 在numerical数据集下,可以用轮廓系数来求得
3. 信息熵、F值等等