DBSCAN算法详解

news/2024/5/20 6:03:04 标签: 算法, 聚类, 机器学习

Density-based Clustering

第二种类型的聚类算法叫做“密度聚类”,即基于密度的聚类。这一类模型是根据样本之间的紧密程度进行聚类,通过样本的密度来考虑样本之间的可连接性。其中,DBSCAN是最为著名的密度聚类模型。DBSCAN基于一组“邻域”参数 ( ϵ ,   M i n P t s ) (\epsilon, \ MinPts) (ϵ, MinPts)来刻画样本之间的紧密程度,给定数据集 D = { x 1 , x 2 , … , x n } D=\{x_1,x_2,\dots,x_n\} D={x1,x2,,xn},有以下几个重要概念:

  • ϵ \epsilon ϵ-邻域:对于 x j ∈ D x_j\in D xjD,其 ϵ \epsilon ϵ-邻域是数据集 D D D中所有与 x j x_j xj距离不大于 ϵ \epsilon ϵ的样本,即 N ϵ ( x j ) = { x i ∈ D   ∣   d i s t ( x i , x j ) ≤ ϵ } N_{\epsilon}(x_j)=\{x_i \in D\ |\ dist(x_i, x_j)\le \epsilon \} Nϵ(xj)={xiD  dist(xi,xj)ϵ}
  • 核心对象(core object):若 x j x_j xj ϵ \epsilon ϵ邻域中至少包含 M i n P t s MinPts MinPts个样本,即 ∣ N ϵ ( x j ) ∣ ≥ M i n P t s |N_{\epsilon}(x_j)|\ge MinPts Nϵ(xj)MinPts,那么 x j x_j xj就被叫做一个核心对象
  • 密度直达(directly density-reachable):若 x j x_j xj x i x_i xi的邻域里,且 x i x_i xi是核心对象,那么称 x i x_i xi x j x_j xj是密度直达的
  • 密度可达(density reachable):对 x i x_i xi x j x_j xj,若存在样本序列 p 1 , p 2 , … , p n p_1, p_2, \dots, p_n p1,p2,,pn,其中 p 1 = x i ,   p n = x j p_1=x_i, \ p_n=x_j p1=xi, pn=xj,且 p i + 1 p_{i+1} pi+1可由 p i p_i pi密度直达,那么称 x i x_i xi x j x_j xj密度可达
  • 密度相连(density connected):对 x i x_i xi x j x_j xj,若存在 x k x_k xk使得 x i x_i xi x j x_j xj均和 x k x_k xk密度可达,那么称 x i x_i xi x j x_j xj密度相连

在这里插入图片描述

基于以上概念,DBSCAN对“簇”的定义为:由密度可达关系导出的最大的密度相连样本集合。给定参数 ( ϵ , M i n P t s ) (\epsilon,MinPts) (ϵ,MinPts),簇 C ⊆ D C\subseteq D CD,那么 C C C满足以下性质:

  • 连接性: x i ,   x j   ∈   C       ⇒      x i   x j x_i, \ x_j\ \in\ C\ \ \ \ \ \Rightarrow\ \ \ \ x_i\ x_j xi, xj  C         xi xj密度相连
  • 最大性: x i ∈ C x_i \in C xiC x i x_i xi x j x_j xj密度可达       ⇒      x j ∈ C \ \ \ \ \ \Rightarrow\ \ \ \ x_j\in C          xjC

在实际写代码过程中,假如 x x x是一个核心对象,那么只需要找到所有和 x x x密度可达的样本 x ^ \hat{x} x^,那么这些样本所组成的是一个簇。算法流程如下:

在这里插入图片描述


http://www.niftyadmin.cn/n/1241252.html

相关文章

matlab scope 设置,Simulink中示波器[scope]设置.pdf

第九章 Simulink 高级仿真技术第八章对动态系统的建模、仿真与分析方法做了详细的介绍,这些方法足够用户对简单的动态系统进行仿真研究,但对于复杂的系统来说还略显不足。况且要想灵活高效的使用 Simulink,还必须了解Simulink 的工作原理。本…

Day619.Spring事务常见错误② -Spring编程常见错误

Spring事务常见错误② 继续讨论事务中的另外两个问题,一个是关于事务的传播机制,另一个是关于多数据源的切换问题。 一、环境前缀 课程表 course,记录课程名称和注册的学生数。 CREATE TABLE course (id int(11) NOT NULL AUTO_INCREMENT…

BERT模型详解

Auto-Regressive & Auto-Encoding 在介绍当下最火热的BERT模型之前,我们先来看两个概念,Auto-Regressive和Auto-Encoding。 Auto-Regressive Auto-Regressive如上图所示,其实很像是一个语言模型,遵循的是链式法则&#xff0…

ELMo算法详解

ELMo ELMo来自于论文《Deep contextualized word representations》,介绍了一种高效的动态词向量。在摘要部分,作者提到词向量主要是用来解决两大问题: 单词使用的复杂性,例如语法、语义不同语境下的单词使用,例如同…

Day620.SpringRestTemplate常见错误 -Spring编程常见错误

SpringRestTemplate常见错误 微服务之间的通信大多都是使用 HTTP 方式进行的,这自然少不了使用 HttpClient。 在不使用 Spring 之前,我们一般都是直接使用 Apache HttpClient 和 Ok HttpClient 等,而一旦你引入 Spring,你就有了…

N-gram模型详解

语言模型(Language Model) 基本概念 什么是语言模型?简言之,语言模型可以理解为是一种用于判度一个句子是否通顺的模型。举例来说,假设我们有一个训练好的语言模型modelmodelmodel,给定两个句子:我喜欢AI、喜欢我AI。…

Day621.Spring Test 常见错误 -Spring编程常见错误

Spring Test 常见错误 在 Spring Test 的应用上,有哪些常见错误呢? 以下举例2个错误: 一、资源文件扫描不到 首先,我们来写一个 HelloWorld 版的 Spring Boot 程序以做测试备用。 先来定义一个 Controller: RestC…

php点击按钮刷新父页面,JS刷新父窗口的几种方式小结

浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法parent.location.reload();parent.location.reload();弹出子页面window.opener.location.reload();window.opener.location.reload();子窗口刷新父窗口self.opener.location.reload();self.opener.location.relo…