Science上发表的超赞聚类算法

作者(Alex Rodriguez, Alessandro Laio)提出了一种很简洁优美的聚类算法, 可以识别各种形状的类簇, 并且其超参数很容易确定.

算法思想

该算法的假设是类簇的中心由一些局部密度比较低的点围绕, 并且这些点距离其他有高局部密度的点的距离都比较大. 首先定义两个值: 局部密度 ρi 以及到高局部密度点的距离 δi :

ρi=jχ(dijdc)

其中

χ(x)={10ifx<0otherwise ,

dc 是一个截断距离, 是一个超参数. 所以 ρi 相当于距离点 i 的距离小于 dc 的点的个数. 由于该算法只对 ρi 的相对值敏感, 所以对 dc 的选择比较鲁棒, 一种推荐做法是选择 dc 使得平均每个点的邻居数为所有点的1%-2%.

δi=minj:ρj>ρi(dij)

对于密度最大的点, 设置 δi=maxj(dij) . 注意只有那些密度是局部或者全局最大的点才会有远大于正常的相邻点间距.

聚类过程

那些有着比较大的局部密度 ρi 和很大的 δi 的点被认为是类簇的中心. 局部密度较小但是 δi 较大的点是异常点.在确定了类簇中心之后, 所有其他点属于距离其最近的类簇中心所代表的类簇. 图例如下:

Screen Shot 2014-06-28 at 下午09.26.59

左图是所有点在二维空间的分布, 右图是以 ρ 为横坐标, 以 δ 为纵坐标, 这种图称作决策图(decision tree). 可以看到, 1和10两个点的 ρi δi 都比较大, 作为类簇的中心点. 26, 27, 28三个点的 δi 也比较大, 但是 ρi 较小, 所以是异常点.

聚类分析

在聚类分析中, 通常需要确定每个点划分给某个类簇的可靠性. 在该算法中, 可以首先为每个类簇定义一个边界区域(border region), 亦即划分给该类簇但是距离其他类簇的点的距离小于 dc 的点. 然后为每个类簇找到其边界区域的局部密度最大的点, 令其局部密度为 ρh . 该类簇中所有局部密度大于 ρh 的点被认为是类簇核心的一部分(亦即将该点划分给该类簇的可靠性很大), 其余的点被认为是该类簇的光晕(halo), 亦即可以认为是噪音. 图例如下

Screen Shot 2014-06-28 at 下午09.27.11

A图为生成数据的概率分布, B, C二图为分别从该分布中生成了4000, 1000个点. D, E分别是B, C两组数据的决策图(decision tree), 可以看到两组数据都只有五个点有比较大的 ρi 和很大的 δi . 这些点作为类簇的中心, 在确定了类簇的中心之后, 每个点被划分到各个类簇(彩色点), 或者是划分到类簇光晕(黑色点). F图展示的是随着抽样点数量的增多, 聚类的错误率在逐渐下降, 说明该算法是鲁棒的.

最后展示一下该算法在各种数据分布上的聚类效果, 非常赞.

Screen Shot 2014-06-28 at 下午09.27.22

参考文献:

[1]. Clustering by fast search and find of density peak. Alex Rodriguez, Alessandro Laio

转载:http://www.kemaswill.com/machine-learning/science%E5%8F%91%E8%A1%A8%E7%9A%84%E8%B6%85%E8%B5%9E%E8%81%9A%E7%B1%BB%E7%AE%97%E6%B3%95/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值