微信号:AlgorithmFans

介绍:算法是程序员的内功!伯乐在线旗下账号「算法爱好者」专注分享算法相关文章、工具资源和算法题,帮程序员修炼内功.

Science发表的超赞聚类算法

2016-09-02 08:12 算法爱好者

(点击上方公众号,可快速关注)


源:kemaswill   

链接:http://www.kemaswill.com/machine-learning/


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


算法思想


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


ρi=∑jχ(dij−dc)


其中


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


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


聚类过程


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



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


聚类分析


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



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


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



参考文献:


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


------------------ 推荐 ------------------


范品社推出了十几款程序员、电影、美剧和物理题材的极客T恤单件 ¥59.9、两件减¥12、四件减¥28,详见网店商品页介绍。


网店地址:https://fanpinshe.taobao.com/

淘口令:复制以下红色内容,然后打开手淘即可购买

范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

 
算法爱好者 更多文章 追妹子中的离散数学:重温 15 篇算法热文 为什么我们像驯化小狗那样驯化算法 数学之美:平方根倒数速算法中的神奇数字 0x5f3759df 数学之美:平方根倒数速算法中的神奇数字 0x5f3759df 关于寻路算法的一些思考(1):A*算法介绍
猜您喜欢 《击溃设计师的16句话》到底击溃了谁? 流氓太多,内存太少,它阻止后台运行的神器! 滴滴iOS客户端的架构演变之路丨专访滴滴出行李贤辉 淘宝技术部世界杯算法大赛赛况 知识点归纳(2)