各种密度聚类算法
dbscan密度聚类算法

dbscan密度聚类算法介绍密度聚类是一种基于数据点之间的密度关系进行聚类的算法。
其中,dbscan (Density-Based Spatial Clustering of Applications with Noise)是一种常用的密度聚类算法。
本文将对dbscan算法进行全面、详细、完整且深入地探讨。
算法原理dbscan算法通过定义数据点的邻域范围和密度阈值,将数据点划分为核心点、边界点和噪声点。
算法的基本原理如下:1.随机选择一个未被访问的数据点P。
2.如果P的邻域内的数据点数量大于等于密度阈值,则将P标记为核心点,并将P的邻域内的所有数据点加入到当前的聚类中。
3.重复以上步骤,直到没有新的核心点被找到。
4.如果P的邻域内的数据点数量小于密度阈值,则将P标记为边界点。
5.继续遍历未被访问的数据点,直到所有数据点都被访问过。
6.将所有未被访问的数据点标记为噪声点。
算法流程dbscan算法的具体流程如下:1.初始化参数:邻域范围(ε)和密度阈值(MinPts)。
2.随机选择一个未被访问的数据点P。
3.如果P的邻域内的数据点数量大于等于密度阈值,则将P标记为核心点,并将P的邻域内的所有数据点加入到当前的聚类中。
4.否则,将P标记为噪声点。
5.对于P的邻域内的每个未被访问的数据点Q:–如果Q的邻域内的数据点数量大于等于密度阈值,则将Q加入到当前的聚类中。
–如果Q未被访问过,则将Q标记为边界点,并将Q的邻域内的所有数据点加入到当前的聚类中。
6.重复步骤2-5,直到所有数据点都被访问过。
7.所有未被访问的数据点标记为噪声点。
算法优势和不足优势•dbscan算法不需要事先指定聚类的数量,能够自动发现任意形状的聚类。
•算法对噪声点具有鲁棒性,能够将噪声点识别为独立的聚类。
•dbscan算法的时间复杂度较低,适用于大规模数据集。
不足•dbscan算法对于具有不同密度的聚类效果较差。
•算法对于数据集中密度差异较大的情况,需要调整参数才能得到较好的聚类结果。
密度聚类 算法详解

Outlier Border Core Eps = 1cm MinPts = 5
11
DBSCAN(1996)
DBSCAN:一种基于高密度连通区域的基于密度的 聚类方法,该算法将具有足够高密度的区域划分为 簇,并在具有噪声的空间数据库中发现任意形状的 簇。它将簇定义为密度相连的点的最大集合;
12
Border Core
4
Eps = 1cm MinPts = 5
密度概念
直接密度可达的(Directly density reachable, DDR): 给定对 象集合D, 如果p是在q的–邻域内, 而q是核心对象, 我们说对 象p是从对象q直接密度可达的(如果q是一个核心对象,p属 于q的邻域,那么称p直接密度可达q。)
q o
由一个核心对象和其密度可达的所有对象构成一个聚类。
6
密度概念
Eg: 假设半径 Ε=3 , MinPts=3 , 点 p 的 领域中有点 {m,p,p1,p2,o}, 点 m 的 领域中有 点 {m,q,p,m1,m2}, 点 q的 领域中有 {q,m}, 点 o 的 领 域中有点 {o,p,s}, 点 s 的 领域中有点 {o,s,s1}. 那么核心对象有 p,m,o,s(q 不是核心对象,因为它对应 的 领域中点数量等于 2 ,小于 MinPts=3) ; 点 m 从点 p 直接密度可达,因为 m 在 p 的 领域内,并 且 p 为核心对象; 点 q 从点 p 密度可达,因为点 q 从点 m 直接密度可达,并 且点 m 从点 p 直接密度可达; 点 q 到点 s 密度相连,因为点 q 从点 p 密度可达,并 且 s 从点 p 密度可达。
19
基于密度的聚类和基于网格的两大聚类算法

DENCLUE:基于密度分布函数的聚类
2
DBSCAN
基于密度的簇是密度相连的点的集合 主要思想
寻找被低密度区域分离的高密度区域 只要临近区域的密度(单位大小上对象或数据点的数
目)超过某个阈值,就继续聚类
13
OPTICS:通过点排序识别聚类结构
数据集的排序可以用图形描述,有助于可视化和理解数据集 中聚类结构,例如下图是一个简单的二维数据集的可达图。 其中三个高斯“凸起”反映数据集中比较稠密的部分。
14
OPTICS:通过点排序识别聚类结构
Step 1:有序种子队列初始为空.结果队列初始为空 ; Step 2:如果所有点处理完毕.算法结束;否则选择一个未处理对象( 即不在结果队列中)放人有序种子队列: Step 3:如果有序种子队列为空,返回Step 2,否则选择种子队列中的 第一个对象P进行扩张: Step 3.1:如果P不是核心节点.转Step 4;否则,对P 的E邻域内任一 未扩张的邻居q 进行如下处理 Step 3.1.1:如果q已在有序种子队列中且从P到 q的可达距离小于旧值 ,则更新q的可达距离,并调整q到相应位置以保证队列的有序性; Step 3.1.2:如果q不在有序种f队列中,则根据P 到q的可达距离将其插 入有序队列; Step 4:从有序种子队列中删除P.并将P写入结果队列中,返回Step 3
Step4 否则(即p为核心对象),给 Neps(p)中的所有对象打上一个新的类标签 newid,然后将这些对象压入堆栈的Seeds中; Step5 让CurrentObject = Seeds.top;然后检索属于Neps(CurrentObject) 的 所有对象;如果| Neps(CurrentObject) |>MinPts,则剔除已经打上标记的 对象,将余下的未分类对象打上类标签newid,然后压入堆栈; Step6 Seeds.pop,判断Seeds是否为空,是,则执行Step1 ,否则执行Step5。
常用聚类算法(基于密度的聚类算法

常⽤聚类算法(基于密度的聚类算法前⾔:基于密度聚类的经典算法 DBSCAN(Density-Based Spatial Clustering of Application with Noise,具有噪声的基于密度的空间聚类应⽤)是⼀种基于⾼密度连接区域的密度聚类算法。
DBSCAN的基本算法流程如下:从任意对象P 开始根据阈值和参数通过⼴度优先搜索提取从P 密度可达的所有对象,得到⼀个聚类。
若P 是核⼼对象,则可以⼀次标记相应对象为当前类并以此为基础进⾏扩展。
得到⼀个完整的聚类后,再选择⼀个新的对象重复上述过程。
若P是边界对象,则将其标记为噪声并舍弃缺陷:如聚类的结果与参数关系较⼤,导致阈值过⼤容易将同⼀聚类分割,或阈值过⼩容易将不同聚类合并固定的阈值参数对于稀疏程度不同的数据不具适应性,导致密度⼩的区域同⼀聚类易被分割,或密度⼤的区域不同聚类易被合并DBSCAN(Density-Based Spatial Clustering of Applications with Noise)⼀个⽐较有代表性的基于密度的聚类算法。
与层次聚类⽅法不同,它将簇定义为密度相连的点的最⼤集合,能够把具有⾜够⾼密度的区域划分为簇,并可在有“噪声”的空间数据库中发现任意形状的聚类。
基于密度的聚类⽅法是以数据集在空间分布上的稠密度为依据进⾏聚类,⽆需预先设定簇的数量,因此特别适合对于未知内容的数据集进⾏聚类。
⽽代表性算法有:DBSCAN,OPTICS。
以DBSCAN算法举例,DBSCAN⽬的是找到密度相连对象的最⼤集合。
1.DBSCAN算法⾸先名词解释:ε(Eps)邻域:以给定对象为圆⼼,半径为ε的邻域为该对象的ε邻域核⼼对象:若ε邻域⾄少包含MinPts个对象,则称该对象为核⼼对象直接密度可达:如果p在q的ε邻域内,⽽q是⼀个核⼼对象,则说对象p从对象q出发是直接密度可达的密度可达:如果存在⼀个对象链p1 , p2 , … , pn , p1=q, pn=p, 对于pi ∈D(1<= i <=n), pi+1 是从 pi 关于ε和MinPts直接密度可达的,则对象p 是从对象q关于ε和MinPts密度可达的密度相连:对象p和q都是从o关于ε和MinPts密度可达的,那么对象p和q是关于ε和MinPts密度相连的噪声: ⼀个基于密度的簇是基于密度可达性的最⼤的密度相连对象的集合。
常用聚类算法介绍

常用聚类算法介绍
聚类算法是一种无监督学习方法,旨在将数据集中的对象分成不同的组或簇,使得同一簇内的对象相似度较高,而不同簇的对象相似度较低。
根据不同的分类标准和应用场景,聚类算法可以分为多种类型。
1、K均值聚类:是最知名的聚类算法之一,通过将数据集划分为K个簇,并为每个簇计算一个中心点(即该簇所有成员的平均值),以此来表示每个簇的特征。
K均值算法简单易懂,但在处理非球形分布的数据集时可能会遇到问题。
2、层次聚类:包括凝聚型和分裂型两种方式。
凝聚型从单个对象开始,逐步合并最近的两个对象形成一个新的簇,直到所有对象都在同一个簇中;分裂型则是从所有对象作为一个大簇开始,逐步将其分割成更小的簇。
层次聚类适用于需要可视化簇结构或探索数据内部关系的场景。
3、基于密度的聚类:如DBSCAN算法,它通过识别数据点的密度连接来发现任意形状的簇。
这种方法不依赖于预先指定的簇数量,能够有效处理噪声和异常值。
4、基于网格的聚类:通过在特征空间中定义一个网格,然后统计每个网格单元内的数据点数量来进行聚类。
这种方法适用于数据分布较为均匀的情况。
5、基于模型的聚类:如高斯混合模型(GMM),它假设数据是由多个高斯分布混合而成的。
通过最大化数据点属于各个高斯分布的概率来估计模型参数,进而实现聚类。
6、谱聚类:利用图论中的概念,将数据点视为图中的顶点,通过构建一个拉普拉斯矩阵来反映顶点间的相似度,从而实现聚类。
7、均值漂移聚类:与K均值类似,但不需要预先指定簇的数量。
它通过迭代地寻找数据点的密度峰值来确定簇中心,适用于发现数据中的自然结构。
密度峰值聚类算法

密度峰值聚类算法
GPCL算法(Generalized peak clustering algorithm)是一种基于密度峰值进行核聚类分析的数据挖掘技术,该算法由季宾浩等人提出。
通过分析样本空间中的密度峰值,从而把一系列的样本特征变量聚类,根据簇的形状进行划分类,也可认为是一个基于密度的聚类技术。
GPCL算法的围绕着核,将输入空间分裂成相互独立的子空间,当它们包含少量元素时,可以确定空间内遍布分布。
该算法通过以下步骤实现聚类:
(1)从输入空间中的每个点开始,启动一对对象的密度峰值搜索,记为“密度峰值对”;
(2)为每一密度峰值对建立有限的核区域;
(3)把输入空间的每个点分配给一个核,输入空间被分成多个含有有限元素的独立块;
(4)计算所有核区域的压缩度,并确定重叠阈值;
(5)将空间分为不重叠的K个核。
GPCL算法属于局部密度聚类,主要作用是在一定范围内(采用核标准化后)按
照某种逻辑搜索数据的分布特征,从而使得聚类的过程结果更准确,适用于在大数据集中搜索分类数据近似相同的点。
此外,GPCL算法可以用于考察海量数据中点到点之间的“密封”密度关系,可以更好地捕获异常点。
各种密度聚类算法

各种密度聚类算法密度聚类是一种非参数化的聚类算法,它可以根据样本之间的密度信息将数据点聚集成簇。
与传统的基于距离的聚类算法(如K-means)不同,密度聚类算法可以自动识别出不同形状和大小的簇,适用于处理高维、非线性、噪声较多的数据。
以下是几种常见的密度聚类算法:1. DBSCAN(Density-Based Spatial Clustering of Applications with Noise):DBSCAN是一种基于密度的聚类算法,通过根据密度划分核心对象、边界对象和噪声对象来形成簇。
DBSCAN使用两个参数,即邻域半径ε和最小邻域点数MinPts,可以在不同的数据集上找到具有不同形状和大小的簇。
2. OPTICS(Ordering Points to Identify the Clustering Structure):OPTICS是对DBSCAN的改进,它针对DBSCAN需要事先设定参数的问题进行了改进。
OPTICS通过计算每个点与其邻域点之间的距离来构建一个邻域距离的有序列表,从而识别出密度相似的簇。
OPTICS还引入了核心距离和可达距离的概念,可以更好地识别不同密度的簇。
3. DENCLUE(DENsity-based CLUstEring):DENCLUE是一种基于密度梯度的聚类算法,它假设样本的分布在高密度区域具有概率较大,并利用样本之间的密度梯度信息来聚类。
DENCLUE使用高斯核函数来估计样本的密度,并通过不断更新密度梯度来逐步聚类。
DENCLUE可以处理具有多个密度峰值的数据集。
4. GDBSCAN(Generalized Density-Based Spatial Clustering of Applications with Noise):GDBSCAN是对DBSCAN的改进,它通过在DBSCAN中引入参数来调整密度阈值来解决DBSCAN对密度参数的敏感性问题。
GDBSCAN可以对密度变化较大的数据集进行聚类,并可以灵活地调整簇的形状和大小。
大数据环境下的密度聚类算法

大数据环境下的密度聚类算法在大数据环境下,密度聚类算法是一种用于发现高密度数据区域的有效工具。
密度聚类算法基于数据点之间的密度,将数据点划分为不同的簇,每个簇内的数据点相对密集而簇间的数据点相对稀疏。
本文将介绍几种常用的大数据环境下的密度聚类算法,包括DBSCAN、OPTICS和HDBSCAN。
一、DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise)DBSCAN算法是一种基于密度的聚类算法,它通过确定数据点的密度来划分簇。
它的核心思想是,对于每个数据点,如果其邻域内的数据点数量大于等于事先指定的阈值,则将其归为一个簇。
而不满足这个条件的数据点将被视为噪声或边界点。
DBSCAN算法的优点在于可以发现任意形状的簇,对噪声和离群点具有一定的鲁棒性。
然而,在处理大规模数据时,DBSCAN算法的效率较低。
二、OPTICS算法(Ordering Points To Identify the Clustering Structure)OPTICS算法是一种改进的密度聚类算法,它通过构建一个数据点的可及性图来发现簇结构。
可及性图中的X轴表示数据点排序,Y轴表示数据点的核心距离,通过分析可及性图,可以确定簇的边界和样本点的密度。
OPTICS算法的优点在于可以发现任意形状的簇,并且不需要预先指定阈值。
然而,对于具有高维数据和大规模数据的情况下,OPTICS算法的效率也不够高。
三、HDBSCAN算法(Hierarchical Density-Based Spatial Clusteringof Applications with Noise)HDBSCAN算法是一种层次化的密度聚类算法,它通过构建一棵树状结构来发现数据的聚类结构。
HDBSCAN算法可以自动识别不同密度级别的簇,并将数据点分配到合适的簇中。
HDBSCAN算法的优点在于可以处理任意形状的簇,并且自动确定簇的个数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一,什么是聚类?聚类: - 将一个对象的集合分割成几个类,每个类内的对象之间是相似的,但与其他类的对象是不相似的。
评判聚类好坏的标准: 1 ,能够适用于大数据量。
2 ,能应付不同的数据类型。
3 ,能够发现不同类型的聚类。
4 ,使对专业知识的要求降到最低。
5 ,能应付脏数据。
6 ,对于数据不同的顺序不敏感。
7 ,能应付很多类型的数据。
8 ,模型可解释,可使用。
二,聚类所基于的数据类型。
聚类算法通常基于“数据矩阵”和“ Dissimilarity矩阵”。
怎么样计算不同对象之间的距离?1 ,数值连续的变量(体重,身高等):度量单位的选取对于聚类的结果的很重要的。
例如将身高的单位从米变为尺,将体重的单位从公斤变为磅将对聚类的结果产生很大的影响。
为了避免出现这种情况,我们必须将数据标准化:将数据中的单位“去掉”。
A, 计算绝对背离度。
B, 计算标准量度。
下面我们考虑怎样来计算两个对象之间的差异。
1 ,欧几里得距离。
2 ,曼哈顿距离。
这两种算法有共同之处: d(i,j)>=0,d(i,i)=0,d(i,j)=d(j,i),d(i,j)=<d(i,h)+d(h,j) 。
3 , Minkowski 距离。
这是上述两种算法的通式。
并且对于不同的变量,我们可以给它赋于不同的 weight.2 ,二元数据变量:如果还是用上面的方法来计算的话,肯定会出现错误。
这儿分两种情况,对称的与非对称的。
3 , Nominal 变量: ( 例如红,黄,绿,蓝….)4 , ordinal 变量(例如科长,处长,局长…. )5 , ratio-scaled 变量:6, 以上几种混合的变量(多数情况是这样的):三,分割的的方法。
1,K 均值算法:给定类的个数 K ,将 n 个对象分到 K 个类中去,使得类内对象之间的相似性最大,而类之间的相似性最小。
缺点:产生类的大小相差不会很大,对于脏数据很敏感。
改进的算法: k—medoids 方法。
这儿选取一个对象叫做 mediod 来代替上面的中心的作用,这样的一个 medoid 就标识了这个类。
步骤:1,任意选取 K 个对象作为 medoids (O1,O2,…Oi…Ok )。
以下是循环的:2,将余下的对象分到各个类中去(根据与 medoid 最相近的原则);3,对于每个类( Oi )中,顺序选取一个 Or ,计算用 Or 代替 Oi 后的消耗— E ( Or )。
选择 E 最小的那个 Or 来代替 Oi 。
这样 K 个 medoids就改变了,下面就再转到 2 。
4,这样循环直到 K 个 medoids 固定下来。
这种算法对于脏数据和异常数据不敏感,但计算量显然要比 K 均值要大,一般只适合小数据量。
2 , C lara 算法。
上次课提到 K-medoids 算法不适合于大数据量的计算。
这次课我们介绍 Clara 算法,这是一种基于采用的方法,它能够处理大量的数据。
Clara 算法的思想就是用实际数据的抽样来代替整个数据,然后再在这些抽样的数据上利用 K-medoids 算法得到最佳的 medoids 。
Clara 算法从实际数据中抽取多个采样,在每个采样上都用 K-medoids 算法得到相应的(O1,O2…Oi…Ok ),然后在这当中选取 E 最小的一个作为最终的结果。
Clara 算法的效率取决于采样的大小,一般不太可能得到最佳的结果。
在 Clara 算法的基础上,我们提出了 Clarans 的算法,与 Clara 算法不同的是:在 Clara 算法寻找最佳的 medoids 的过程中,采样都是不变的。
而Clarans 算法在每一次循环的过程中所采用的采样都是不一样的。
与上次课所讲的寻找最佳 medoids 的过程不同的是,必须人为地来限定循环的次数。
四,层次聚类层次聚类,就是把所有的记录层次聚类可以分为两种:凝聚的方式和分割的方式,取决于聚类层次结构的形成是自顶向下的还是自底向上的。
凝聚的方式:这是一种至底向上的方法,将每一条记录看作一个类,然后根据一些规则将他们聚合成越来越大的类,直到满足一些预先设定的条件。
大多数的层次聚类方法属于这一类。
分割的方式:这种自顶向下的方法是一个与凝聚的方式相反的过程,将整个数据库作为一个大的类,然后按照一些规则将这个类分成小的类,直到满足一些预定的条件,例如类的数目到了预定值,最近的两个类之间的最小距离大于设定值。
例 3 :图 5 给出了对于集合 {a,b,c,d,e} 层次聚类两种方式的聚类过程。
从这个图我们可以看出,凝聚的方式是将每一个记录看作一个类,再按照一定的规则逐步将这些类合并。
举个例子,如果类 C1 和类 C2 之间的距离小于预定的最小距离,那么他们就会被合并为一个类,这儿两个类的距离是由两个类中距离最近的一对记录来确定的。
分割的方式则是先将所有的记录作为一个大的类,然后再根据一些规则将它进行分割,例如最近的两个记录之间的距离。
无论凝聚的方式还是分割方式,用户都可以根据自己的要求来设定所得类的个数。
层次聚类虽然比较简单,但是在选择凝聚或者分割点的时候经常会遇到一些困难,这个是非常关键的,因为一旦记录被凝聚或者分割以后,下一步的工作是建立在新形成的类的基础之上的。
因此,如果其中任何一步没有做好的话,就会影响最终聚类的结果。
这个方法并不是太好,因为要牵涉到很大数量的类和记录。
一个比较有前途的能够提高聚类质量的方向是将层次聚类和其它的聚类结合起来进行,下面我们会介绍一些这样的方法:1,叫做“Birth”,它首先把层次聚类的形成过程到结果看作一棵树,然后再用其他的聚类方法来进行修剪。
2 ,叫做“ Cure ”,他用一定数量的记录来代表一个类,然后将他们缩为类的中心。
3 ,叫做“ Rock ” , 它是基于类之间的联系将类合并。
4 ,叫做“ Chameleon ”,在层次聚类中寻找自动的模式。
1, Birch: 这是一种综合的层次聚类的方法,它介绍了两个概念,聚类特征和聚类特征树,它们是用来表示聚类的。
这些结构能够帮助聚类方法能运行得更快,能够处理大数据量。
下面我们来看一下上面提到的结构,一个聚类特征是由关于记录子集的三重总概变量组成。
假设在一个子类中有 N 个记录,那么这个子类的聚类特征就是CF=(N,LS,SS), 其中 LS 是 N 个点(记录)的直线相加, SS 是 N 个点的平方和相加。
一个聚类特征本质上是对于给定的子类的统计和,它记录了衡量一个子类的最关键的部分,用存储统计值代替了存储整个类的记录,提高了存储的效率。
一个聚类特征树是一个垂直平衡树,它为一个层次聚类存了各个步骤的聚类特征。
图 8.6 给出了一个例子,我们约定一个“非叶子节点”是有“孩子”的 , 这个“非叶子节点”记录了它的孩子的聚类特征。
一个聚类特征有两个变量——“分枝要素 B ”和“门限 T ”, B 限定了每个“非叶子节点”最多含有的孩子的个数, T 限定了存在叶节点的子类的最大半径,这两个参数影响了最后产生的树的大小。
那么“ Birch ”是怎样工作的呢? 1 ,它扫描整个数据库一次,建立一个初始化的聚类特征树。
2 ,它用一个聚类算法来聚合这些叶节点。
在第一阶段,聚类特征树随着记录一个一个的加入而自动形成的:一个记录被放入那个离它最近的叶节点(类)中去。
如果放入以后这个子类的半径大于门限值 T 的话,那么这个叶节点就会被分割。
这个放入的信息也会传递到根节点中去。
聚类特征树的大小可以通过调节参数来改变,如果要存储的树需要的内存超过了主内存,那就要减小门限值重新建立一棵树,这个重建过程并不需要将整个记录扫描一次。
而是建立在老的树的叶节点的基础之上的。
因此,建立一个树记录需要被扫描一次,此外还有一些方法进一步扫描记录以提高聚类特征树的质量,当树建好以后,我们可以在第二阶段用其他的聚类算法了。
Birch 算法用可利用的资源产生最好的聚类,给定一限定的主内存,一个很重要的考虑是尽量减少从 I/O 请求所需要的时间。
Birch 算法用了多种聚类的技术,对数据库的一次扫描产生一个基本好的聚类,一次或者更多的附加扫描能够提高聚类的质量。
Birch 的效果怎么样?由于每一个节点只能有一定数量的“孩子”,实际产生的聚类特征树并不是自然生成的聚类。
而且,如果聚类生成的类不成球形的话,这种算法就运用得很好,因为它用半径或者直径来控制类的边界。
2, Cure:大多数的算法或者只能用于球状类和有相似大小的类上面,或者无法解决特例的问题。
Cure 算法则能够解决这些问题。
Cure 采用一种很新颖的层次聚类算法,这种方法是介于“基于中心”和“基于记录”的方法之间的。
一定数量的记录被选中,而不是用中心或者一个记录来代替整个类。
那些能代表这个类的几个记录 , 首先在一个类中选择几个较为分散的记录作为代表整个类的记录,然后用一个特别的 Fraction 将他们压缩到类的中心。
在每一步,那些有最大相似度的类就会被合并。
由于用了多个记录来代表类,使得这种算法能够很好地对付非球状的的类以及一些例外的情况结构。
那么,在大数据量的情况下能够在不牺牲聚类质量的情况下,对付大数据量进行得很好。
为了对付大数据量, Cure 用了随机抽取和分割的方法 :1,选取有 s 个记录的采样。
2,将这 s 个采样分割成 p 个部分,每个有 s/p 个记录。
3,将 s 个记录分成 s/pq 个类。
4,通过随机采样去除那些特例的情况。
5,将这些类进行聚类,五,基于密度的方法 :1,DBSCAN:这个方法将密度足够大的那部分记录组成类,这儿定义了几个新的名词:1,对于给定的记录,我们称在其半径 e 范围内的一个记录为这个记录的 e- 邻居。
2,如果一个记录的 e- 邻居个数超过一个最小值, MinPts 那么我们就将这个记录称做中心记录。
3,一个记录的集合 D, 我们说一个记录 p 是记录 q 的“ Directly density-reachable ”记录,如果 p 是 q 的 e- 邻居, ` 并且 q 是个中心记录。
4,对于这样的一个链p1,p2,…pn ,如果, p1=q,pn=p, 且 Pi+1 是 pi 的“ Directly density-reachable ”,那么我们就将 p 称做 q 的“ density-reachable ”。
5, 如果 p,q 都是一个记录 o 的“ density-reachable ”,那么就称 p,q “ density-connected ”。
根据上面的定义,我们怎样来发现类呢?首先扫描一下数据库,计算每一个点(记录)的 e- 邻居的个数,如果一个记录的 e- 邻居的个数大于一个门限值,那么就将这个记录叫做中心记录,这样一个新的以这个记录为中心的类就产生了。