常见聚类方法的介绍及其改进与评估方法
聚类方法介绍
聚类方法主要分为自上而下聚类和自下而上聚类。
自上而下聚类指的是,首先将所有的样本点一起看作一类,对这一大类不停地进行拆分;
而自下而上聚类指的是,首先把每个点自己都看成一类,这样起始会有n类,之后再逐渐合并。
1.k均值聚类方法
- 首先找到k个种子;
- 计算每个点到种子的距离,将其分到最近的种子所属的那一类;
- 重新计算k个类的重心,重复上述步骤。
- 满足设定的迭代次数,或类的重心距离变化小于阈值时停止迭代。
2.系统聚类法(自下而上)
- 首先将每一个点都看作一类;
- 找到距离最近的两个点,合并成一类;
- 再找到距离最近的两个点或两类,合并成一类,以此类推,直到最后合并为一类。
- 根据聚类的过程(谱系聚类图)以及所需要的聚类的数目得到聚类结果。
3.注意事项
因为使用欧式距离,因此要做标准化。
聚类方法的改进
1. k-means方法的优缺点
- 优点:非常快,O(KNt);很多时候局部最优也够用了。
- 缺点:
=局部最优;
=受异常值点和噪声影响大;
=受到初始值设定的影响,结果不稳定;
=当类内分布差异较大时聚类结果不佳。
2. k值的选取
其实选k的方法就是选取不停地k进行尝试之后选择类内离差平方和最小的k。
主要有碎石图法和gap statistic方法,思想类似。
- 碎石图法找损失函数最小的k;
- gap statistic方法找和期望相差最大的k。
Gap(K)=E(logDk)−logDkGap(K)=E(logD_k)-logD_kGap(K)=E(logDk)−logDk - 核函数法,低维映射到高维,增加线性可分的可能性。
3.初始值的选择方法改进
- k-means ++
k-means的初始值是随机选取的,不好;
改进方法是k-means++方法。
k-means++方法中,第一个种子随机选取,之后的每一个种子,都选择与前面的种子距离比较大的那些。 - isodata
k-means聚类过程中k不变化,不好;如果能够动态变化就好了。isodata就是这个思想。
如果某类过大(方差超过阈值),则将其拆分;
如果某两类距离过近(重心距离小于阈值),则将其合并;
如果某类拆分后的子类过小(内部元素个数小于阈值),则不拆。
聚类效果的评价
-
在进行聚类之前,需要判断数据是否可以进行聚类,即数据是否是随机分布,是否存在非随机的簇结构。
方法是:
a) 首先计算数据集中每一个点到最近点的距离,得到n个距离xix_ixi;
b) 在数据取值范围内随机生成n个点,对这随机生成的n个点中的每一个点,寻找与其距离最近的点,并分别计算距离,得到n个距离yiy_iyi;
c) 比较Σxi\Sigma{x_i}Σxi和Σyi\Sigma{y_i}Σyi之间的大小。
d) 若原始数据随机分布,则二者相差不大,H接近0.5,否则接近1。
H=Σyi/(Σxi+Σyi)H={\Sigma{y_i}}/{(\Sigma{x_i}+\Sigma{y_i})}H=Σyi/(Σxi+Σyi) -
聚类后,对聚类效果进行评价,由于是无监督学习,所以只能从聚类后的数据是否分得开入手。即是否做到了类内同质化最大,类间异质化最大。 下面的统计量基本都是基于这个思想来构造的。
-
轮廓系数
对于数据集内任意一点p,计算该点到类内其他点的平均距离a(p)a(p)a(p),计算该点到与它最近的类内点点平均距离b(p)b(p)b(p),计算下述统计量。易见统计量越大聚类效果越好,对所有点计算s(p)s(p)s(p)后求平均,即得到整体的聚类效果评估。
s(p)=(b(p)−a(p))/max(a(p),b(p))s(p)=(b(p)-a(p))/max(a(p),b(p))s(p)=(b(p)−a(p))/max(a(p),b(p)) -
R方
思想就是,看点到类内重心的距离有没有比聚类之前到整体重心的距离变小。
计算公式如下,肯定是越大越好。
R2=Σx∈D∣∣x−c∣∣2−ΣiΣx∈Ci∣∣x−ci∣∣2Σx∈D∣∣x−c∣∣2R^2=\frac{\Sigma_{x\in D}||x-c||^2-\Sigma_{i}\Sigma_{x\in C_i}||x-c_i||^2}{\Sigma_{x\in D}||x-c||^2}R2=Σx∈D∣∣x−c∣∣2Σx∈D∣∣x−c∣∣2−ΣiΣx∈Ci∣∣x−ci∣∣2 -
均方根标准偏差RMSSTD
就是计算了每个点到重心的距离,之后相当于做了归一化,对维度P做了惩罚。越小越好。
RMSSTD=ΣiΣx∈Ci∣∣x−ci∣∣2PΣi(ni−1)RMSSTD=\frac{\Sigma_{i}\Sigma_{x\in C_i}||x-c_i||^2}{P\Sigma_i(n_i-1)}RMSSTD=PΣi(ni−1)ΣiΣx∈Ci∣∣x−ci∣∣2 -
HubertΓ\GammaΓ统计量
思想和上面是反着的,上面是计算类内距离,应该是越小越好,这个统计量则是计算不同类点之间的距离,越大越好。
Γ=2n(n−1)Σx∈DΣy∈Dd(x,y)dx∈Ci,y∈Cj(ci,cj)\Gamma=\frac{2}{n(n-1)} \Sigma_{x\in D}\Sigma_{y\in D}d(x,y)d_{x\in C_i,y\in C_j}(c_i,c_j)Γ=n(n−1)2Σx∈DΣy∈Dd(x,y)dx∈Ci,y∈Cj(ci,cj)
- DOS攻击原理以及常见方法介绍
- DOS攻击原理以及常见方法介绍
- Linux使用过程中常见问题及其解决方法
- 高性能MySql进化论:常见索引类型的原理及其特点的介绍
- Windows 7 RC十大功能的详细介绍以及改进方法
- awk命令介绍和常见使用方法
- 安装WRF常见问题及其解决方法:
- 五个常见的Web应用漏洞及其解决方法
- mark 一下 unix下常见问题及其解决方法
- Word文档常见的三大问题及其解决方法(珍藏版)
- JavaScript中的bind方法及其常见应用
- 常见数据挖掘分析方法介绍
- 如何使用mysql(lamp)分离环境搭建dedecms织梦网站及apache服务器常见的403http状态码及其解决方法
- IEbug:20个常见的bug及其修复方法
- Android开发中使用照相机功能 及其常见问题解法方法
- 给Repeater控件里添加序号的5种才常见方法介绍
- 使用win8遇到的常见问题介绍与解决方法
- MySQL 常用字段类型,介绍及其建表使用方法经验分享
- Linux系统下JDK的安装及其配置方法介绍
- 详细介绍 Hibernate 泛型 DAO 及其使用方法