美文网首页
机器学习(七) 聚类之DBSCAN

机器学习(七) 聚类之DBSCAN

作者: 晓迦 | 来源:发表于2019-05-19 13:35 被阅读0次

    针对聚类K-means算法中不能对特定形状的样本进行分类,提出了一种新的聚类算法(DBSCAN)。
    DBSCAN 是一种著名的密度聚类算法,它基于一组“邻域”参数来刻画样本分布的紧密程度。

    7.1 基本概念

    DBSCAN:Density-Based Spatial Clustering of Applications with Noise
    核心对象:若某个点的密度达到算法设定的阈值则其为核心点。即r领域内点的数量不小于minPts。
    距离阈值:设定的半径r
    直接密度可达:若某点p在点q的r领域内,且q是核心点,则p-q直接密度可达。
    密度可达:若有一个点的序列q0、q1、...、qk,对任何qi-(qi-1)是直接密度可达的。称从q0-qk密度可达。
    密度相连:若从某核心点p出发,点q和点k都是密度可达的。则称q和点k是密度相连的。
    边界点:属于某一个类的非核心点,不能发展下线了。
    噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。

    7.2 算法思想

    这个算法很有意思,总结8个字就是:画圈找点,发展下线
    设定参数D:输入数据集;参数\epsilon:指定半径;MinPts:密度阈值

    1. 标记所有对象为unvisited
    2. Do
    3. 随机选择一个 unvited 对象 p;
    4. 标记 p 为visited;
    5. if p 的 e-(半径范围内) 领域内至少有 MinPts 个对象
            创建一个新簇 C,并把p添加到C;
            令 N 为 p 的 e- 领域中的对象集合
            for N 中每个点 p
                if p 是 unvisited
                    标记 p 为visited
                    if p 的e-领域至少有 MinPts 个对象,把这些对象添加到N;
                    如果 p 还不是任何簇的成员,把 p 添加到 C;
                  End for;
                  输出 C;
                  
          Else 标记 p 为噪声;
          Unitl 没有标记为unvisited 的对象。
    

    参数选择
    半径e:给定数据集P={p(i);i=0,1,...,n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序, d(k)就被称为k-距离。
    MunPts: k-距离中k的值,一般取的小一些,多次尝试

    7.3 优劣势

    优势:

    • 不需要指定簇个数
    • 可以发现任意形状的簇
    • 擅长找到离群点
    • 两个参数就够了

    劣势:

    • 高维数据有些困难(可以做降维)
    • 参数难以选择(参数对结果的影响非常大)
    • Sklearn中效率很慢(数据削减策略)

    相关文章

      网友评论

          本文标题:机器学习(七) 聚类之DBSCAN

          本文链接:https://www.haomeiwen.com/subject/vwmfzqtx.html