数据挖掘--OPTICS
OPTICS是基于DBSCAN算法的缺陷提出来的一个算法。
核心思想:为每个数据对象计算出一个顺序值(ordering)。这些值代表了数据对象的基于密度的族结构,位于同一个族的数据对象具有相近的顺序值。根据这些顺序值将全体数据对象用一个图示的方式排列出来,根据排列的结果就可以得到不同层次的族。
考察DBSCAN,可以发现,对一个恒定的MinPts值来说,取值较小时得到的聚类结果完全包含在根据较大的取值所获得的聚类结果中。
如图,当取值较小时,得到的聚类结果是C1和C2,当取值较大时,得到的聚类结果是C3。
可以看到,C1和C2是包含在C3中的。换句话说,C1、C2、C3间具有层次关系,C3可以看作是C1和C2的父亲,而C1和C2可以看作是C3的孩子。
因此,在生成族的时候,最好能够将位于不同层次上的族同时构建出来,而不是根据某个特定的值仅仅构建其中的一层。
为了同时构建不同层次上的族,数据对象应当以特定的顺序来处理。这个顺序称为族序(cluster-ordering),它决定了对象扩展时的次序。
为了使较低层次上的族(这些族的数据密度较大)能够首先构建完成,在进行对象扩展时,应该优先选择那些根据最小的取值而密度可达的对象。
基于这个思想,每个数据对象需要存储两个值,一个是核心距离(core-distance),另一个是可达距离(reach-distance)。

核心距离:给定一个数据对象集合D,两个参数和MinPts,一个对象O,如果O是一个核心对象,则O的核心距离(core-dist)是使得O能成为核心对象的最小半径值(该值小于等于)。如果O不是核心对象,则O的核心距离没有定义。

其中|rangeQuery(O, )|<MinPts表示在O的-邻域的数据对象的个数小于MinPts个,说明在这种情况下O不是一个核心对象。
反之,当O是一个核心对象时,MinPts-dist(O)表示的就是使得O的-邻域能够包含MinPts个数据对象的最小半径值。
例如,给定MinPts=5, 则表示的半径就是对象O的核心距离

可达距离:给定一个数据对象集合D,两个参数和MinPts,一个对象O,如果O是一个核心对象,则O与另一个对象p间的可达距离(reachbility-distance)是O的核心距离和O与p的欧几里得距离之间的较大值。如果O不是一个核心对象,O与p之间的可达距离没有定义。

由于p1和O之间的距离a小于对象O的核心距离,即dist(p1, O) < core-dist(O),所以p1和O之间的可达距离就是对象O的核心距离。即reach-dist(p1, O) = core-dist(O)= 。
由于p2和O之间的欧几里得距离b大于对象O的核心距离,即dist(p2, O) > core-dist(O),所以p2和O之间的可达距离就是p2和O之间的欧几里得距离。即reach-dist(p2, O) = dist(p2, O)。
OPTICS算法的工作过程
- 第一个阶段计算每个对象的核心距离和可达距离,生成族序;
- 采用和DBSCAN算法类似的工作过程。同样从任意一个数据对象p开始,如果p是一个核心对象,则根据输入的两个参数和MinPts,提取所有从p直接密度可达的数据对象,计算它们的核心距离和可达距离,并将它们放入待处理队列Q中。
- 接下来,算法从Q中选取一个具有最小可达距离值的对象q进行进一步的扩展。同样,首先检查q是否是核心对象,如果是,则根据输入参数和MinPts,提取所有从q直接密度可达的数据对象,计算它们的核心距离和可达距离,并将它们放入待处理队列Q中。如果q不是核心对象,则什么都不做。
- 需要注意的是,对q进行扩展时,还需要对队列Q中的数据对象的可达距离进行更新,保证其存储的是到最近的核心对象的距离。算法一直进行到所有的数据对象都被处理过为止。
- 第二个阶段进行聚类,在聚类的过程中,只需要用到第一阶段所生成的对象之间的族序信息,不再需要其它的信息。
- 根据第一阶段所生成的族序和特定的i(0i )值,生成相应的族。具体过程是:根据族序逐个处理每一个对象。
- 对任一对象p,首先看p的可达距离是否大于i。如果是,则说明在p之前所处理过的对象,没有一个对象到p是可达的。(这是因为,如果某个对象到p可达的话,p的可达距离不可能大于i)。因此,如果p的可达距离大于i的话,需要进一步考察p的核心距离。
- 如果p的核心距离小于i,则说明p是一个核心对象,这时创建一个新族
- 否则,将p标记为噪声。
- 如果p的可达距离小于等于i的话,则直接将p标记为当前族。
数据挖掘--OPTICS的更多相关文章
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...
- 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...
- [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...
- 跟我一起数据挖掘(23)——C4.5
C4.5简介 C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类.C4.5的目 ...
- ITTC数据挖掘平台介绍(四) 框架改进和新功能
本数据挖掘框架在这几个月的时间内,有了进一步的功能增强 一. 超大网络的画布显示虚拟化 如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下: ...
- ITTC数据挖掘平台介绍(五) 数据导入导出向导和报告生成
一. 前言 经过了一个多月的努力,软件系统又添加了不少新功能.这些功能包括非常实用的数据导入导出,对触摸进行优化的画布和画笔工具,以及对一些智能分析的报告生成模块等.进一步加强了平台系统级的功能. 马 ...
- ITTC数据挖掘系统(六)批量任务,数据查看器和自由文档
这一次带来了一系列新特新,同时我们将会从商业智能的角度讨论软件的需求 一. 批量任务向导 一个常用的需求是完成处理多个任务,可能是同一个需求以不同的参数完成多次,这类似批量分析某一问题:或者是不同的需 ...
- ITTC数据挖掘平台介绍(七)强化的数据库, 虚拟化,脚本编辑器
一. 前言 好久没有更新博客了,最近一直在忙着找工作,目前差不多尘埃落定.特别期待而且准备的都很少能成功,反而是没怎么在意的最终反而能拿到,真是神一样的人生. 言归正传,一直以来,数据挖掘系统的数据类 ...
- 【十大经典数据挖掘算法】PageRank
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 我特地把PageRank作为[十大经 ...
随机推荐
- MySQL数据库(一)索引
索引的作用是操作数据库时避免全表扫描. 索引的机制 B Tree与B+Tree索引 B(blance) 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点. 根节点至少有两个子节点 ...
- stl源码学习(版本2.91)--list
stl源码学习(版本2.91)--list 一,阅读list()构造函数的收获 1,默认构造函数的作用和被调用的时机 struct no{ no(int i){} //no(){ // std::co ...
- 让Windows的文件名区分大小写
背景 最近在Linux官网下载了Linux内核,下载下来的是一个后缀为.tar.xz的压缩包,于是在毫不知情的情况下随随便便解压了,解压过程中出现了很多问题. 其中一个问题就是在Windows下,不区 ...
- Linux文件基本命令
Linux文件基本命令学习 操作技巧: 输入文件/目录/命令的前几个字母之后,按下tab键,则自动补全 按上/下,回滚曾经用过的命令 不想执行命令使用:crtl + c 基础命令: ls(查看) 基础 ...
- 29.Java基础_接口
接口的成员特点
- 【bzoj1941】[Sdoi2010]Hide and Seek(kd-tree)
bzoj 题意: 给出\(n\)个点,对于每个点,\(d_i\)等于距离其最远的点的距离减去距离最近的点的距离.这里的距离为曼哈顿距离. 求\(min\{d_i\}\). 思路: 考虑直接对每个点暴力 ...
- unittest执行顺序,使用unittest.main()按照test开头,由0-9,A-Z,a-z的顺序执行; 可使用TestSuite类的addTest方法改变执行顺序;
import unittestclass Study(unittest.TestCase): # def setUp(self): # print('start') # def tearDown(se ...
- scrapy爬虫具体案例详细分析
scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...
- c# WF 第4节 窗体的事件
本节内容: 1:事件是什么? 2:窗体事件在哪可以找到 3:事件有哪些 1:事件是什么? 2:窗体事件在哪里 第一种: 第二种: 3:事件有哪些
- 巡风视图函数源码学习--view.py
记录一下巡风扫描器view.py这个脚本里的视图函数的学习,直接在代码里面做的注释,里面有一些print 代码是为了把数据打印出来小白我自己加的,勿怪勿怪.可能存在一些理解错误和不到位的地方,希望大佬 ...