Density-based methods:
DBSCAN中的几个定义:
E邻域:给定对象半径为E内的区域称为该对象的E邻域
核心对象:如果给定对象E邻域内的样本点数大于等于MinPts,则称该对象为核心对象
直接密度可达:对于样本集合D,如果样本点q在p的E邻域内,并且p为核心对象,那么对象q从对象p直接密度可达
密度可达:对于样本集合D,给定一串样本点p1,p2,p3,...pn, p=p1, q=pn,假如对象pi从pi-1直接密度可达,那么对象q从对象p密度可达。注意:密度可达是单向的,密度可达即可容纳同一类。
密度相连:存在样本集合D中的一点o,如果对象o到对象p和对象q都是密度可达的,那么p和q密度相连。
密度可达是直接密度可达的传递闭包,并且这种关系是非对称的。密度相连是对称关系。DBSCAN目的是找到密度相连对象的最大集合。
DBSCAN通过检查数据库中每点的r邻域来搜索簇。如果点p的r邻域包含的点多于MinPts个,则创建一个以p为核心对象的簇。然后,DBSCAN迭代的聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并。当没有新的点可以添加到任何簇时,该过程结束。
例如:假如半径E=3,MinPts=3,点p的E邻域中有点{m,p,p1,p2,o},点m的E邻域内有点{m,q,p,m1,m2},点q的E邻域内有点{q,m},点o的E邻域内有点{o,p,s},点s的邻域中有点{o,s,s1}
那么核心对象有p,m,o,s(q不是核心对象,因为它对应的E邻域中点数量等于2,小于MinPts=3)
点m从点p直接密度可达,因为m在p的E邻域内,并且p为核心对象。
点q从点p密度可达,q点从点m直接密度可达,m点从p点直接密度可达
点q到点s密度相连,因为点q从点p密度可达,并且s从点p密度可达。
1)DBSCAN聚类算法原理的基本要点:确定半径eps的值
①DBSCAN算法需要选择一种距离度量,对于待聚类的数据集中,任意两个点之间的距离,反映了点之间的密度,说明了点与点是否能够聚到同一类中。由于DBSCAN算法对高维数据定义密度很困难,所以对于二维空间中的点,可以使用欧几里德距离来进行度量。
②DBSCAN算法需要用户输入2个参数:一个参数是半径(Eps),表示以给定点P为中心的圆形邻域的范围;另一个参数是以点P为中心的邻域内最少点的数量(MinPts)。如果满足:以点P为中心、半径为Eps的邻域内的点的个数不少于MinPts,则称点P为核心点。
③DBSCAN聚类使用到一个k-距离的概念,k-距离是指:给定数据集P={p(i);i=0,1,…n},对于任意点P(i),计算点P(i)到集合D的子集S={p(1), p(2), …, p(i-1), p(i+1), …, p(n)}中所有点之间的距离,距离按照从小到大的顺序排序,假设排序后的距离集合为D={d(1), d(2), …, d(k-1), d(k), d(k+1),…,d(n)},则d(k)就被称为k-距离。也就是说,k-距离是点p(i)到所有点(除了p(i)点)之间距离第k近的距离。对待聚类集合中每个点p(i)都计算k-距离,最后得到所有点的k-距离集合E={e(1), e(2), …, e(n)}。
④根据经验计算半径Eps:根据得到的所有点的k-距离集合E,对集合E进行升序排序后得到k-距离集合E’,需要拟合一条排序后的E’集合中k-距离的变化曲线图,然后绘出曲线,通过观察,将急剧发生变化的位置所对应的k-距离的值,确定为半径Eps的值。
⑤根据经验计算最少点的数量MinPts:确定MinPts的大小,实际上也是确定k-距离中k的值,DBSCAN算法取k=4,则MinPts=4。
⑥另外,如果觉得经验值聚类的结果不满意,可以适当调整Eps和MinPts的值,经过多次迭代计算对比,选择最合适的参数值。可以看出,如果MinPts不变,Eps取得值过大,会导致大多数点都聚到同一个簇中,Eps过小,会导致一个簇的分裂;如果Eps不变,MinPts的值取得过大,会导致同一个簇中点被标记为噪声点,MinPts过小,会导致发现大量的核心点。
我们需要知道的是,DBSCAN算法,需要输入2个参数,这两个参数的计算都来自经验知识。半径Eps的计算依赖于计算k-距离,DBSCAN取k=4,也就是设置MinPts=4,然后需要根据k-距离曲线,根据经验观察找到合适的半径Eps的值。