数据挖掘期末5

聚类分析

  1. 数据聚类及离群点检测:什么是聚类分析:聚类的功能 聚类的分类:基于划分的方法(k-means) 基于层次的方法(agens,dina) 基于密度的方法(DBscan) 基于网格的方法

    1. 聚类:就是将数据分个簇,使得在同一个簇内对象之间具有较高的相似度,而不同簇之间的对象差别较大
    2. 无监督学习
    3. 聚类分析的目的是:寻找数据中潜在的自然分组结构
    4. 聚类的分类:
      1. 基于划分方法
        1. 给定一个有n个对象的数据集,划分聚类技术将构造数据k个划分,每一个划分就代表一个簇,k ≤ \leq n.
        2. 基本思路:对于给定的K,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得没一次改进之后的划分方案都较前一次更好
        3. 经典的算法有:K-Means(K-均值)、K-Medoids(K-中心点)
      2. 基于层次的方法
        1. 层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止
        2. 凝聚的层次聚类:是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,知道某个终结条件被满足,AGNES算法
        3. 分裂的层次聚类:采用自顶向下的策略,它首先将所有对象置于一个簇中然后逐渐细分为越来越小的簇,直到达到了某个终止条件,DIANA算法
      3. 基于密度的方法
        1. 密度聚类的指导思想:只要一个区域中的点的密度大于某个阈值,就把它加到与之相近的聚类中去
        2. 算法的优点:能克服基于距离的算法只能发现”类圆形“的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感,DBScan算法
      4. 基于网络的方法
        1. 将对象空间量化为有限数目的单元,形成一个网络结构,所有聚类都在这个网格结构中上进行
  2. k-means算法 a.初始中心点 簇分配 更改中心值

    1. 任意选取k个点作为类中心点(簇的平均值)【一般是数据集中随机抽取】

    2. 将每个点分配到最近的类中心点,这样就形成了K个类,然后重新计算每个类的中心点【即更新簇的平均值】

      1. 可用欧氏距离计算,用每个维度的平均值重新计算每个类的中心点
    3. 重复第二步,直至类不发生变化,【或者可设置最大迭代次数,这样及时类中心点发生变化,但是达到最大迭代次数就会结束】

  3. KMeans算法优点:简单,快速 缺点:对K值敏感,对初始中心敏感 无法发生非高斯簇,对离群点敏感。

    1. 优点:
      1. 经典算法,简单、快速
      2. 对处理大数据集,该算法是相对可伸缩和高效率的
    2. 缺点:
      1. k值敏感,要事先主观给出
      2. 初值敏感
      3. 不适合非球形状或者大小差别很大的簇
      4. 对于孤立点和噪声敏感
  4. DBScan算法:基本思想:密度相连

  5. DBScan流程:(了解)

    1. 从数据库中抽取一个未处理的过的点
    2. 如果抽出的点是核心点,找出从该点密度可达的对象形成一个簇
    3. 如果抽出的点是边缘点,重复第1、2步
    4. 当所有点都被处理结束
  6. DBScan优点:可以发现任意形状的簇,可以检测噪声无需设置k的个数 ,缺点:很难设置参数。

    1. 缺点:
      1. 对参数EPS和Minspt非常敏感,但是这两个参数选取主要依靠主管判断
      2. 如果数据库比较大的时候要进行大量的I/O开销
  7. 离群点检测:什么是离群点。

    1. 离群点是一个数据对象,它显著不同于其它数据对象,好像它是被不同机制产生的一样

    2. 异常数据具有特殊的意义和很高的实用价值,异常数据通常作为噪音而忽略,但异常数据会带给我们新的视角

      • 欺诈检测中,异常数据可能意味着欺诈行为的发生
      • 入侵检测中,异常数据可能以为入侵行为的发生
  8. 离群点的分类:全局离群点,局部离群点,集体离群点。

    1. 全局离群点:跟别的点一点关系都没有
    2. 局部离群点:对全局来说不是离群点,但是对某个簇说是离群点
    3. 集体离群点:某一个集体和其他不同
  9. 检测方法:基于统计的方法 基于距离的方法 基于偏差的方法 基于密度的方法(LOF算法)。

    • 基于统计学的孤立点检测

    • 基于距离的孤立点的检测

    • 基于偏离的孤立点检测

    • 基于密度判断

    • 一文读懂异常检测 LOF 算法(Python代码) - 腾讯云开发者社区-腾讯云 (tencent.com)

      局部异常因子

      根据局部可达密度的定义,如果一个数据点跟其他点比较疏远的话,那么显然它的局部可达密度就小。但LOF算法衡量一个数据点的异常程度,并不是看它的绝对局部密度,而是看它跟周围邻近的数据点的相对密度。

      这样做的好处是可以允许数据分布不均匀、密度不同的情况。局部异常因子即是用局部相对密度来定义的。数据点 的局部相对密度(局部异常因子)为点 邻域内点的平均局部可达密度跟数据点 的局部可达密度的比值,即:

      L O F k ( P ) = ∑ O ∋ N k ( P ) l r d ( O ) l r d ( P ) ∣ N k ( P ) ∣ = ∑ O ∋ N k ( P ) l r d ( O ) ∣ N k ( P ) ∣ / l r d ( P ) LOF_k(P)=∑_{O∋N_k(P)}\frac{\frac{lrd(O)}{lrd(P)}}{|Nk(P)|}=∑_{O∋Nk(P)}lrd(O)|N_k(P)|/lrd(P) LOFk(P)=ONk(P)Nk(P)lrd(P)lrd(O)=ONk(P)lrd(O)Nk(P)/lrd(P)

      LOF算法流程

      了解了 LOF 的定义以后,整个算法也就显而易见了:

      1. 对于每个数据点,计算它与其它所有点的距离,并按从近到远排序;
      2. 对于每个数据点,找到它的 k-nearest-neighbor,计算 LOF 得分;
      3. 如果LOF值越大,说明越异常,反之如果越小,说明越趋于正常。

      数据挖掘期末5_第1张图片


你可能感兴趣的:(数据挖掘,数据挖掘,算法,人工智能)