• OPTICS聚类算法原理


    OPTICS聚类算法原理

    基础

    OPTICS聚类算法是基于密度的聚类算法,全称是Ordering points to identify the clustering structure,目标是将空间中的数据按照密度分布进行聚类,其思想和DBSCAN非常类似,但是和DBSCAN不同的是,OPTICS算法可以获得不同密度的聚类,直接说就是经过OPTICS算法的处理,理论上可以获得任意密度的聚类。因为OPTICS算法输出的是样本的一个有序队列,从这个队列里面可以获得任意密度的聚类。

    定义

    OPTICS算法的基础有两点,

    • 参数(半径,最少点数):

    一个是输入的参数,包括:半径 ε ,和最少点数 MinPts 。

    • 定义(核心点,核心距离,可达距离,直接密度可达):

    另一个是相关概念的定义:
    核心点的定义,如果一个点的半径内包含点的数量不少于最少点数,则该点为核心点,数学描述即

    Nε(P)>=MinPts

    在这个基础上可以引出核心距离的定义,即对于核心点,距离其第 MinPtsth 近的点与之的距离

    coreDist(P)={UNDIFED, MinPtsth Distance in N(P),if N(P)<=MinPtselse

    可达距离,对于核心点P,O到P的可达距离定义为O到P的距离或者P的核心距离,即公式

    reachDist(O,P)={UNDIFED, max(coreDist(P), dist(O,P)),if N(P)<=MinPtselse

    O到P直接密度可达,即P为核心点,且P到O的距离小于半径。

    算法

    OPTICS算法的难点在于维护核心点的直接可达点的有序列表。算法的计算过程如下:

    • 输入:数据样本D,初始化所有点的可达距离和核心距离为MAX,半径 ε ,和最少点数 MinPts 。

    • 1、建立两个队列,有序队列(核心点及该核心点的直接密度可达点),结果队列(存储样本输出及处理次序)

    • 2、如果D中数据全部处理完,则算法结束,否则从D中选择一个未处理且未核心对象的点,将该核心点放入结果队列,该核心点的直接密度可达点放入有序队列,直接密度可达点并按可达距离升序排列;
    • 3、如果有序序列为空,则回到步骤2,否则从有序队列中取出第一个点;
    • 3.1 判断该点是否为核心点,不是则回到步骤3,是的话则将该点存入结果队列,如果该点不在结果队列;
    • 3.2 该点是核心点的话,找到其所有直接密度可达点,并将这些点放入有序队列,且将有序队列中的点按照可达距离重新排序,如果该点已经在有序队列中且新的可达距离较小,则更新该点的可达距离。
    • 3.3 重复步骤3,直至有序队列为空。
    • 4、算法结束。

    输出结果

    给定半径 ε ,和最少点数 MinPts ,就可以输出所有的聚类。

    计算过程为:

    给定结果队列

      • 1、从结果队列中按顺序取出点,如果该点的可达距离不大于给定半径 ε ,则该点属于当前类别,否则至步骤2;
      • 2、如果该点的核心距离大于给定半径 ε ,则该点为噪声,可以忽略,否则该点属于新的聚类,跳至步骤1;
      • 3、结果队列遍历结束,则算法结束。

    转载自:http://ddrv.cn/a/66368?unapproved=169375&moderation-hash=d65a76d583bc337cf8ee514ce3049cf6#comment-169375

  • 相关阅读:
    Java web 会话技术 cookie与session
    Spring bean的bean的三种实例化方式
    Spring基础篇——通过Java注解和XML配置装配bean(转载)
    Spring的核心api和两种实例化方式
    Spring 7种事务传播类型
    leetcode 697
    leetcode 387
    Spring_002 依赖注入方式实现
    Spring_第一个Spring入门案例IOC
    谈谈对Spring IOC的理解(转载)
  • 原文地址:https://www.cnblogs.com/tttzqf/p/12890292.html
Copyright © 2020-2023  润新知