Dpeak算法

基本假设:聚类中心周围都是密度比其低的点,同时这些点距离该聚类中心的距离相比于其他聚类中心来说是最近的。

    密度最大值算法可以看成是基于kmeans和dbscan算法的一种拓展,主要优势在于确定簇中心和排除异常值。

    首先给定一个半径范围r,然后对我们所有的样本,计算它的r邻域内的样本数目记作它的局部密度记作rho,第二步,计算每个样本到密度比它高的点的距离的最小值记作sigma,有了这两个参数就可以进行我们下一步的筛选工作了,具体分成以下四种情况:

1、 rho很小,sigma很大。这个样本周围的样本量很小,但是到比它密度大的点的距离还挺远的,这说明啥,它是个远离正常样本的异常值啊,在偏僻的小角落里搞自己的小动作啊,果断踢了它呀。

2 、rho很大,sigma也很大。这个样本周围样本量很大,并且要找到比它密度还大的点要好远好远,这说明这个点是被众星环绕的啊,它就是这个簇的王,我们往往把它确定为簇中心。

3 、rho很小,sigma也很小。样本周围的样本量很小,但要找到样本密度比它大的点没多远就有,说明这个点是一个处在边缘上的点,往往是一个簇的边界。

4 、rho很大,sigma很小。该样本周围的样本量很大,但是密度比它还大的居然也不远,这种情况只会发生在你处在了簇中心的旁边时,很可惜,也许你是这个簇的核心成员,但你做不了这个簇的王。

    好的,基于每个样本的rho和sigma,我们大概就能确定它们各自的所扮演的角色了,我们把大反派异常值从样本中剔除,然后把我们找到的rho和sigma都很大的点作为簇中心,再利用K-Means或者DBSCAN算法进行聚类就能得到相对比较好的结果。或者,当确定了聚类中心后,某个点的类别被设定为与“离它最近,且密度比它大”的点相同的类别。可以看出,与DBSCAN类似,此聚类算法在选择所属类别时也有“传递”的概念在,因此理想情况下可以对任意形状的数据进行聚类。

例子,如下图所示:

    对于左图,计算每个样本的ρi和δi。

    1,发现1号样本和10号样本的ρi和δi都大,那就可以怀疑:这两个点难道是聚类中心?答案很明显:是。这样一来就找到聚类中心了,之后用DBCSAN算法正常聚类就可以了。

     2,样本28、26、27的ρi很小δi却很大,那就可以怀疑:这三个难道是异常点?答案也很明显:是。

可以聚以下图形:

 

自己的思考:

    本质是找到空间内的密度极大值点。还是和dbscan有区别,个人感觉dbscan是他的一种特殊情况,即他是半径等于后面帅选半径,密度不限就会退化为等同密度和半径的dbscan,这样他和另一个算法有异曲同工之妙-optics。

    相比dbscan更难调,参数更多;好处是不一定在密度不满足点就断掉(前期半径和后面的半径和密度分离,一共三个参数、而不是dbscan的两个参数)。

    对于我们的业务,这个可以使用faiss加速,问题是三个阈值的选择,因为离群点也是我们的一类。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TigerZ*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值