DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定
1)基本概念:(Density-based Spatial Clustering of Applications with Noise)
(比k-means和一些其他聚类方法强)
核心对象:若某个点的密度达到算法设定的阈值则其为核心点
(即r领域内点的数量不小于minPts)
个人理解:以该点为中心画圆,圆内的点大于minPts,那么这个点就是核心对象
ε-邻域的距离阈值:设定的半径r
dbscan与k-means不同的地方是我们不需要设置k值
密度直达:若某点p在点q的r邻域内,且q是核心点则p-q直接密度可达
密度可达:若有一个点的序列q0、q1...qk,对任意的qi-qi-1是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可达的“传播”
密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的
边界点:属于某一类的非核心点,不能发展下线了
噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达
2)工作流程
参数D:输入数据集
参数:指定半径
MinPts:密度阈值
2、说一下参数的选择(2)1)半径:可以根据k距离来设定:找突变点。 K距离:给定数据集p={p(i);i=0,1,…,n},计算点p(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k距离。
2)MinPts:k距离中k的值,一般取的小一些,多次尝试。
可视化星展集群 (naftaliharris.com)
可以通过定义不同的半径与MinPts来看不同数据的聚类效果
3、优劣势(1)优势 ①不需要指定簇的个数; ②可以对任意形状的稠密数据集进行聚类; ③擅长找到离群点(检测任务); ④两个参数ε和minPts就够了; (2)劣势 ①高维数据有些困难(可以做降维); ②参数难以选择(参数对结果的影响非常大); ③Sklearn中效率很慢(数据削减策略);
sklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训练模型的各个方面。
老师提问:为什么不适合稀疏的数据



