31(1).密度聚类---DBSCAN算法
分类:
机器学习算法
密度聚类density-based clustering假设聚类结构能够通过样本分布的紧密程度确定。
密度聚类算法从样本的密度的角度来考察样本之间的可连接性,并基于可连接样本的不断扩张聚类簇,从而获得最终的聚类结果。
一、DBSCAN算法
1.介绍
DBSCAN是一种著名的密度聚类算法,它基于一组邻域参数来刻画样本分布的紧密程度。
2.密度直达/可达/相连
给定数据集,定义:
- -邻域:
- 核心对象core object:若,则称是一个核心对象。即:若的-邻域中至少包含个样本,则是一个核心对象。
- 密度直达directly density-reachable:若是一个核心对象,且,则称由密度直达,记作
- 密度可达density-reachable:对于和,若存在样本序列,其中,如果由密度直达,则称由密度可达,记作
- 密度相连density-connected:对于和,若存在,使得与均由密度可达,则称与密度相连,记作:
3.簇
给定邻域参数,一个簇是满足下列性质的非空样本子集:
- 连接性connectivity:若,则
- 最大性maximality:若,且,则
即一个簇是由密度可达关系导出的最大的密度相连样本集合。
4.算法的思想
若为核心对象,则密度可达的所有样本组成的集合记作。可以证明:就是满足连接性与最大性的簇。
于是DBSCAN算法首先任选数据集中的一个核心对象作为种子seed,再由此出发确定相应的聚类簇。
5.DBSCAN算法
输入:数据集,邻域参数
输出:簇划分
算法步骤:
- 初始化核心对象集合为空集:
- 寻找核心对象:
- 遍历所有的样本点,计算
- 如果,则
- 迭代:以任一未访问过的核心对象为出发点,找出有其密度可达的样本生成的聚类簇,直到所有核心对象都被访问为止。
6.注意
若在核心对象的寻找密度可达的样本的过程中,发现核心对象是由密度可达的,且尚未被访问,则将加入所属的簇,并且标记为已访问。
对于中的样本点,它只可能属于某一个聚类簇,因此在核心对象的寻找密度可达的样本的过程中,它只能在标记为未访问的样本中寻找(标记为已访问的样本已经属于某个聚类簇了)。
7.优点
- 簇的数量由算法自动确定,无需人工指定。
- 基于密度定义,能够对抗噪音。
- 可以处理任意形状和大小的簇。
8.缺点
- 若样本集的密度不均匀,聚类间距差相差很大时,聚类质量较差。因为此时参数和的选择比较困难。
- 无法应用于密度不断变化的数据集中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2018-11-23 参加Kaggle的经验总结(收藏)
2018-11-23 itertools模块(收藏)
2018-11-23 collections模块(收藏)
2018-11-23 1. 数据结构---链表
2018-11-23 查询set、dict、dict.keys()的速度对比