原文链接
聚类算法介绍
聚类是将数据对象的集合分成相似的对象类的过程。使得同一个簇(或类)中的对象之间具有较高的相似性,而不同簇中的对象具有较高的相异性。按照聚类的尺度,聚类方法可被分为以下三种:基于距离的聚类算法、基于密度的聚类方法、基于互连性的聚类算法。其中基于距离的聚类算法是用各式各样的距离来衡量数据对象之间的相似度。基于密度的聚类算法主要是依据合适的密度函数等。基于互连性的聚类算法通常基于图或超图模型,将高度连通的对象聚为一类。
本文介绍的是Alex Rodriguez和Alessandro Laio在Science上发表的《》所提出的一种新型的基于密度的聚类算法。
算法思想
该算法的假设类簇的中心由一些局部密度比较低的点围绕, 并且这些点距离其他有高局部密度的点的距离都比较大.首先定义两个值:局部密度ρi以及到高局部密度点的距离δi,这两个值仅仅取决于两点之间的距离dij,且该距离满足三角不等式
其中dc是一个截断距离, 是一个超参数.所以ρi相当于距离点i的距离小于dc的点的个数.由于该算法只对ρi的相对值敏感,
所以对dc的选择比较鲁棒, δi用于描述点i到其他较高密度点之间的最小距离:对于密度最大的点, 设置δi=maxj(dij).只有那些密度是局部或者全局最大的点才会远大于正常的相邻点间距.因此聚类中心被视为是δi值异常最大的点。
聚类过程
那些有着比较大的局部密度ρi和很大的δi的点被认为是类簇的中心. 局部密度较小但是δi较大的点是异常点.在确定了类簇中心之后, 所有其他点属于距离其最近的类簇中心所代表的类簇.具体的聚类过程可以从图1中看到,A图标识二维空间内的28个点,可以看到1和10两个点的密度最大,因此1和10被定义为聚类中心。右图是以ρi和为横坐标, 以δi为纵坐标, 这种图称作决策图。其中9和10两个点ρi值相似,但δi值却差异很大,因此9被归为点1的类簇,而10被归为另一类簇。所以,只有较高δi值和相对较高ρi值的点才会被视为聚类中心。26, 27, 28三个点的δi也比较大, 但是ρi较小, 所以是异常点.
聚类中心确定之后,剩余点被分配给与其具有较高密度的最近邻居相同的类簇。与其他迭代优化的聚类算法不同,类簇分配在单个步骤中执行。在聚类分析中, 通常需要确定每个点划分给某个类簇的可靠性. 在该算法中, 可以首先为每个类簇定义一个边界区域(border region), 亦即划分给该类簇但是距离其他类簇的点的距离小于dc的点. 然后为每个类簇找到其边界区域的局部密度最大的点, 令其局部密度为 . 该类簇中所有局部密度大于 的点被认为是类簇核心的一部分(亦即将该点划分给该类簇的可靠性很大), 其余的点被认为是该类簇的光晕, 亦即可以认为是噪音
图A表示点分布,其中包含非球形点集和双峰点集。B和C分别表示4000和1000个点按照A中模式的分布,其中点根据其被分配的不同类簇着色,黑色的点属于类簇光晕。D和E是对应的决策图,而F表示的是不同点量下不正确聚类点的比率,误差线代表平均值的标准差
聚类结果
图3是分别利用点集和Olivetti脸部图片集的聚类结果
算法特点
算法具有以下特点:
A. 该算法是一种基于密度的聚类算法,核心思想是认为类簇的中心由一些局部密度比较低的点围绕, 并且这些点距离其他有高局部密度的点的距离都比较大。
B. 该算法将非聚类中心点的聚类过程分离成一个单独的进程。使得聚类中心的选择和非聚类点的归类分离开来,增大了聚类精度。
C. 该算法适用于图片、非球形点集的聚类。