• 【数据聚类】第四章第二节1:OPTICS算法思想和算法流程


    OPTICS算法是从DBSCAN算法演化而来的基于层次密度的聚类算法,它可以解决DBSCAN算法中的参数敏感问题和不能很好处理数据中带有非均匀密度簇的问题,且OPTICS对参数不是十分敏感

    一:OPTICS算法相关定义

    (1)相关定义

    由于OPTICS算法基于DBSCAN算法,所以以下定义是共用的,这里不再给出具体描述(详见:【数据聚类】第四章第一节1:基于密度算法概述、DBSCAN算法相关概念、定义和算法流程

    • Eps邻域
    • 核心对象
    • 直接密度可达
    • 密度可达
    • 密度相连

    在OPTICS算法中需要额外引入以下两个定义

    • 核心距离(core-distance):对于 ∀ x p ∈ D \forall x_{p} \in D xpD,若 x p x_{p} xp为核心对象,那么核心距离可以定义为

    c o r e _ d i s t a n c e ( x p ) = { 未 定 义 ( 如 果 x p 不 是 核 心 对 象 ) 使 得 x p 为 核 心 对 象 的 最 小 半 径 ( 其 他 ) core\_distance(x_p{})=

    {xp使xp
    core_distance(xp)=未定义(如果xp不是核心对象)使得xp为核心对象的最小半径(其他)

    • 可达距离(reachability-distance):对于 ∀ x p , x q ∈ D \forall x_{p} ,x_{q}\in D xp,xqD x q x_{q} xq x p x_{p} xp可达距离可定义为

    r e a c h a b i l i t y _ d i s t a n c e ( x q , x p ) = { 未 定 义 ( 如 果 x p 不 是 核 心 对 象 ) m a x ( c o r e _ d i s t a n c e ( x p ) , d i s t a n c e ( x p , x q ) ) ) ( 其 他 ) reachability\_distance(x_q{},x_p{})=

    {xpmax(core_distance(xp),distance(xp,xq)))
    reachability_distance(xq,xp)=未定义(如果xp不是核心对象)max(core_distance(xp),distance(xp,xq)))(其他)

    如下图,MinPts设置为5

    • x p x_{p} xp是一个核心对象
    • x p x_{p} xp的核心距离为core_distance( x p x_{p} xp)
    • x q 1 x_{q1} xq1到点 x p x_{p} xp的可达距离是core_distance( x p x_{p} xp)
    • x q 2 x_{q2} xq2到点 x p x_{p} xp的可达距离是 r 2 r_{2} r2

    在这里插入图片描述

    (2)簇结构可视化

    基于上述定义,OPTICS算法在执行过程中可以生成一个以可达距离为纵轴,以数据点输出次序为横轴的坐标图,从中可以清晰观察到各个数据点基于密度的聚簇结构

    如下图所示,可以通过寻找每个陡峭下降区域和陡峭上升区域所构成的凹陷来发现各个簇的对应结果

    • 例如左图数据集中×形簇对应右图第一个陡峭下降区域和陡峭上升区域所构成的凹陷处

    在这里插入图片描述

    二:算法流程

    OTTICS算法和DBSCAN算法一样,仍然需要用户输入Eps和MinPts,但是它们仅仅起到辅助作用,其变化并不会对最终结果造成大的影响。算法流程如下

    如下,OPTICS算法首先会进行初始化,然后进入主循环,在循环过程中

    • 对于任意一个未标记的数据点 x p x_{p} xp,OPTICS将其标记为已访问,然后将它输出到序列order,清空当前的种子序列seeds,确定 x p x_{p} xp ξ \xi ξ邻域
    • 如果 x p x_{p} xp是一个核心对象,这时OPTICS会计算 x p x_{p} xp核心距离,并利用Update函数对种子序列及可达距离进行更新
    • 接着OPTICS会依次从种子序列中拿出一个未访问的数据点 x q x_{q} xq,将其标记为已访问,把它放到输出序列中,确定其 ξ \xi ξ邻域,如果 x q x_{q} xq为核心对象,OPTICS就会再次利用Update函数对种子序列和可达距离进行更新
    • 这个过程会不断循环直到所有数据点都被访问完为止

    在这里插入图片描述

    Update函数是OPTICS中用来更新种子序列和各个数据点可达距离的函数,对于任意一个未访问数据点 x j ∈ N ξ ( x i ) x_{j} \in N_{\xi}(x_{i}) xjNξ(xi),首先计算 x j x_{j} xj x i x_{i} xi的可达距离

    • 如果 x j x_{j} xj的可达距离没有定义:那么就将 x j x_{j} xj x i x_{i} xi的可达距离定义为 x j x_{j} xj的可达距离,并按照可达距离的大小将 x j x_{j} xj插入到种子序列中
    • 如果 x j x_{j} xj的可达距离已经存在且 x j x_{j} xj x i x_{i} xi的可达距离小于 x j x_{j} xj的可达距离:那么将 x j x_{j} xj的可达距离替换为 x j x_{j} xj x i x_{i} xi的可达距离,并按照可达距离的大小对种子序列进行升序排序

    在这里插入图片描述

  • 相关阅读:
    图数据库:释放关系的力量
    Mysql——查询sql语句练习
    群面的技巧
    二维数组的认识和使用
    MFC Windows 程序设计[140]之多样消息对话框属性页(附源码)
    贪心(5)
    《一周搞定数电》-逻辑门
    vite+vue3+ts项目搭建之集成qiankun让其成为子应用模板(vite+vue3+ts+qiankun项目)
    ICDM'23 BICE论文解读:基于双向LSTM和集成学习的模型框架
    Hyper-V虚拟机连接互联网配置教程
  • 原文地址:https://blog.csdn.net/qq_39183034/article/details/125597790