聚类算法总结介绍

聚类算法

“物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。对于数据集的类别未知。

算法名称 是否需要给定K值 聚类依据 使用范围
K-means 距离
K-means++ 距离
系统(层次)聚类 距离
DBSCAN算法 密度 散点图明显具有DBSCAN特征时使用

K-means(K均值)聚类算法

算法描述:

  1. 给定类的个数K值。
  2. 选定K个初始数据中心。
  3. 其余点求对数据中心的距离,每个点与哪个数据中心最近,就和哪个数据中心分为一类。
  4. 将数据中心更新为类的重心。
  5. 重复3、4的操作,每一次重复算一次迭代。

优点:

  1. 算法简单、快速。
  2. 对处理大数据集,该算法是相对高效率的。

缺点:

  1. 需要给定生成簇的数目K。
  2. 对初值敏感。
  3. 对于孤立点数据敏感。

注意:

  • 缺点的第2、3项可以使用K-means++算法解决。

  • 可以将算法步骤转化为流程图,层次清晰,是加分项,还能够减少论文查重率。

  • 亿图、PPT、Visio都可以画流程图。

K-means++算法

对K-means算法 选取初始数据中心 作了新的算法规定,使得初始数据中心之间距离保持最远,其余步骤和K-means算法相同。

  • 解决了K-means算法第2、3项缺点。

选取初始数据中心算法描述

  1. 随机选取一个样本作为第一个聚类中心;

  2. 计算其他样本点与当前已有聚类中心的最短距离(即为与最近的聚类中心之间的距离),根据距离大小给样本点赋概率(距离越长,成为聚类中心的概率越大),用轮盘法(依据概率大小来进行抽选)选

    出下一个聚类中心;

  3. 重复步骤二,直到选出K个聚类中心。

SPSS操作

  • SPSS默认使用的是K均值++算法


注:

  • 消除量纲:标准化处理。
    在这里插入图片描述
    ​ 使用SPSS标准化得到的就是如上公式所描述的 z型 标准化变量。

系统(层次)聚类

聚类前不需要给定K值,由聚类后的谱系图自行判断所需分成的类数。

算法流程

  1. 将每一个对象看成一个类,计算两两之间的最小距离;
  2. 将距离最小的两个类合并成一个类;
  3. 计算新类与各个类之间的距离;
  4. 重复2、3步,直到所有类均合成到一个类中;
  5. 结束。

SPSS操作

  • 统计:一般不用管。
  • 图:谱系图即为分类的流程图,需要勾选。
  • 方法:聚类方法——类与类之间距离的定义方法;转化值——标准化(Z得分即为Z标准化方法)
  • 保存:如果确定了K值,可以填入“聚类数”中(一般K≤5,方便解释)。

肘部法则——用图形估计聚类的数量

肘部法则(Elbow Method): 通过图形大致的估计出最优的聚类数量。

在这里插入图片描述

使用步骤

  1. 将SPSS中各阶段的系数复制到Excel中,按照降序排序(双击SPSS中生成的表格,就可以进行复制)。
  2. 插入 —> 推荐的图表 —> 散点图。
  3. 一般选择转折处的K值作为最终的分类数,当然还要兼顾方便对分类进行解释。
    在这里插入图片描述
    在这里插入图片描述

确定K值后保存聚类结果并画图

可以使用SPSS对聚类结果图形化,但是变量只能是2个或3个。
在这里插入图片描述

可以直接双击生成的图表,对其中参数进行修改,从而起到对图标美化的效果。

DBSCAN算法

DBSCAN算法是一种基于密度的聚类方法,聚类前不需要预先指定聚类的个数,生成的簇的个数不定(和数据有关)。

简言之,就是随便选取基准点,再根据要求(半径 Eps 、类中最少点数 MinPts )将周围点,以及周围点的周围点一个一个圈起来,形成最后分组的过程。

数据点分类

数据点 特点 是否属于某个类
核心点 在半径 Eps 内含有不少于 MinPts 数目的点
边界点 在半径 Eps 内点的数量小于 MinPts,但是落在核心点的邻域内
噪音点 既不是核心点也不是边界点的点

代码实现

可以下载Matlab官网推荐的代码使用。

优点

  1. 基于密度定义,不需要聚类个数K值;

  2. 可以发现异常点(噪音点);

缺点

  1. 对输入参数ε(半径 Eps )和 Minpts 敏感,确定参数困难;

  2. 由于DBSCAN算法中,变量 ε 和 Minpts 是全局唯一的,当聚类的密度不均匀时,聚类距离相差很大时,聚类质量差;

  3. 当数据量大时,计算密度单元的计算复杂度大。

图形化预测结果展示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_61539914/article/details/126800936