【机器学习】密度聚类算法之OPTICS

一、概述

  • 前篇:聚类算法之密度聚类(DBSCAN):
  • 在DBSCAN算法中,有两个初始参数 ϵ ϵ ϵ(邻域半径)和 m i n P t s minPts minPts(邻域最小样本数)需要手动设置,并且聚类的结果对这两个参数的取值非常敏感,不同的取值将产生不同的聚类结果。
  • 为了克服DBSCAN算法这一缺点,提出了OPTICS算法(Ordering Points to identify the clustering structure)对点排序以此来确定簇结构。
  • OPTICS是DBSCAN的一个扩展算法。该算法可以让算法对半径 ϵ ϵ ϵ不再敏感。只要确定 m i n P t s minPts minPts的值,半径 ϵ ϵ ϵ的轻微变化,并不会影响聚类结果。
  • OPTICS并不显示的产生结果类簇,而是为聚类分析生成一个排序,这个排序代表了各样本点基于密度的聚类结构。换句话说,从这个排序中可以得到基于任何参数 ϵ ϵ ϵ m i n P t s minPts minPts的DBSCAN算法的聚类结果

二、核心距离与可达距离

  • 核心距离:样本点的核心距离是使得其成为核心点的最小半径,即是样本点距离其第minPts个最近的点之的距离:
  • 可达距离:对于样本点x的邻点 x 1 、 x 2 、 … x n x_1 、x_2 、…x_n x1x2xn而言,如果他们到点 x x x的距离大于核心距离,则其可达距离为该点到点 x x x的实际距离;如果小于核心距离,则其可达距离就是点 x x x的核心距离
  • 如下图所示:
    【机器学习】密度聚类算法之OPTICS_第1张图片
    其中 m i n P t s = 3 minPts=3 minPts=3,中心点为 p p p,那么 P P P点的核心距离是 d ( 1 , P ) d(1,P) d(1,P),点2的可达距离是 d ( 1 , P ) d(1,P) d(1,P),点3的可达距离也是 d ( 1 , P ) d(1,P) d(1,P),点4的可达距离则是 d ( 4 , P ) d(4,P) d(4,P)的距离

三、OPTICS算法:

  • 两个队列:种子队列结果队列

    • 种子队列用来存储当前所有没用被访问过的样本点的最小可达距离
    • 结果队列用来存储样本点的输出次序。
    • 你可以把种子队列里面放的理解为待处理的数据,而结果队列里放的是已经处理完的数据
  • 算法步骤:

    • 输入:样本集 D D D,邻域半径 ϵ ϵ ϵ,与 m i n P t s minPts minPts
    • 输出:具有可达距离信息的样本点输出排序
    • 第一步:构建结果队列(训练)
      • 这一步可以假设 ϵ = + ∞ ϵ=+∞ ϵ=+,来构建结果队列:
      • 第一步:计算每个样本点的核心距离,并根据核心距离与 ϵ ϵ ϵ(输入的常量不是 + ∞ +∞ +)的关系得到核心点的队列 Q c o r e Q_{core} Qcore
      • 第二步:任取一个核心点作为开始节点。将其标为以访问并加入结果队列 Q o r d e r Q_{order} Qorder,并将其可达距离记为其核心距离。可达距离队列记为 Q r e a c h d i s t Q_{reach_dist} Qreachdist
      • 第三步:计算其余各点相对起始节点的可达距离。并将未访问过点的可打距离放入种子队列 Q s e e d Q_{seed} Qseed
      • 第四部:循环执行下面操作,直到种子队列 Q s e e d Q_{seed} Qseed为空:
        • Q s e e d Q_{seed} Qseed中取出一个可达距离最小的样本点 q q q
        • q q q标记访问,并加入结果队列
        • 计算每个没用访问过点相对q的可达距离,如果距离变小则更新 Q s e e d Q_{seed} Qseed Q r e a c h d i s t Q_{reach_dist} Qreachdist,用小的可达距离代替大的可达距离。
    • 第二步:输出标签(预测)
      • 按照结果队列的输出顺序,变量整个样本集。
      • 如果当前样本的可达距离不大于给定半径 ϵ ϵ ϵ,则该点属于当前类别
      • 如果当前样本的可达距离大于给定半径 ϵ ϵ ϵ,则有两种情况:
        • 如果该点的核心距离大于给定半径 ϵ ϵ ϵ,则该点为噪声
        • 如果该点的核心距离不大于给定半径 ϵ ϵ ϵ,则点属于新的类
  • 将上面得到的结果队列 Q o r d e r Q_{order} Qorder和可达距离队列 Q r e a c h d i s t Q_{reach_dist} Qreachdist进行可视化。我们以可达距离为纵轴,样本点输出次序为横轴进行可视化:

    【机器学习】密度聚类算法之OPTICS_第2张图片

    • 簇在坐标轴中表述为山谷,并且山谷越深,簇越紧密
    • 黄色代表的是噪声。

参考链接

  • https://www.biaodianfu.com/optics.html
  • https://blog.csdn.net/xuanyuansen/article/details/49471807

代码链接

  • 【机器学习】密度聚类算法之OPTICS 的python实现

你可能感兴趣的:(机器学习)