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

OPTICS聚类算法原理的更多相关文章

  1. Kmeans聚类算法原理与实现

    Kmeans聚类算法 1 Kmeans聚类算法的基本原理 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对 ...

  2. 【转】K-Means聚类算法原理及实现

    k-means 聚类算法原理: 1.从包含多个数据点的数据集 D 中随机取 k 个点,作为 k 个簇的各自的中心. 2.分别计算剩下的点到 k 个簇中心的相异度,将这些元素分别划归到相异度最低的簇.两 ...

  3. BIRCH聚类算法原理

    在K-Means聚类算法原理中,我们讲到了K-Means和Mini Batch K-Means的聚类原理.这里我们再来看看另外一种常见的聚类算法BIRCH.BIRCH算法比较适合于数据量大,类别数K也 ...

  4. K-Means聚类算法原理

    K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体 ...

  5. K-Means 聚类算法原理分析与代码实现

    前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经 ...

  6. 第十三篇:K-Means 聚类算法原理分析与代码实现

    前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经 ...

  7. 机器学习中K-means聚类算法原理及C语言实现

    本人以前主要focus在传统音频的软件开发,接触到的算法主要是音频信号处理相关的,如各种编解码算法和回声消除算法等.最近切到语音识别上,接触到的算法就变成了各种机器学习算法,如GMM等.K-means ...

  8. 【机器学习】:Kmeans均值聚类算法原理(附带Python代码实现)

    这个算法中文名为k均值聚类算法,首先我们在二维的特殊条件下讨论其实现的过程,方便大家理解. 第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给 ...

  9. 密度峰值聚类算法原理+python实现

    ​ 密度峰值聚类(Density peaks clustering, DPC)来自Science上Clustering by fast search and find of density peaks ...

随机推荐

  1. [linux][nginx] 常用2

    出现提示"Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address alre"的错误提示. 这 ...

  2. alfred workflow 开发

    alfred python demo

  3. vscode 使用记录

    快捷键 Cmd+P 查找最近的文件 Ctrl+cmd + P 打开命令面板 Ctrl+tab文件间切换 Ctrl+` 打开终端 Cmd +b 隐藏侧边栏 VScode对多行编辑有两种模式 第一种模式 ...

  4. jest enzyme unit test react

    1. 测试类型 单元测试:指的是以原件的单元为单位,对软件进行测试.单元可以是一个函数,也可以是一个模块或一个组件,基本特征就是只要输入不变,必定返回同样的输出.一个软件越容易些单元测试,就表明它的模 ...

  5. react: typescript toastr

    import toastr @types/toastr toastr.ts import * as toastr from "toastr" toastr.option.posit ...

  6. 在Spring Boot中配置web app

    文章目录 添加依赖 配置端口 配置Context Path 配置错误页面 在程序中停止Spring Boot 配置日志级别 注册Servlet 切换嵌套服务器 在Spring Boot中配置web a ...

  7. Spring5参考指南:IOC容器

    文章目录 为什么使用Spring5 什么是IOC容器 配置元数据 实例化容器 XML嵌套 groovy bean定义DSL 使用容器 最近在翻译Spring Framework Documentati ...

  8. POJ1651:Multiplication Puzzle(区间dp)

    Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9419 Accepted: 5850 ...

  9. Mockjs+Ajax实践

    需要完成的工作:利用mock js随机生成数据,通过ajax请求,获取这些数据并展示在网页中. 一 mock js随机生成数据 官方文档中,Mock.mock( ),可以说是mock的精髓所在. Mo ...

  10. 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)

    这里还有数据库相关的优质文章:快戳我,快戳我