数学建模学习笔记(九)——聚类模型

一、聚类综述

聚类的主要目的就是将样本划分为由类似的对象组成的多个类的过程。进行聚类后,我们可以在每个类中使用统计模型进行数据分析或者在不同类之间进行相关性探究。

聚类模型和分类模型的区别:

  1. 聚类模型是未知类别的,目的是要确定类别来对样本数据进行分类;
  2. 分类模型的类别是已知的,只需将严格样本数据分类到对应的类别中即可。

二、主要用到的聚类算法

  1. K-means聚类算法
  2. K-means++聚类算法
  3. 系统(层次)聚类算法
  4. DBSCAN算法

三、K-means聚类算法

算法步骤:

  1. 指定需要划分的 K K K 个簇(即要划分成的类的个数)
  2. 随机选取 K K K 个数据对象作为初始的聚类中心**(注意:这里选取的聚类中心不一定是样本点)**
  3. 计算其余的各个数据对象到这 K K K 个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所在的簇中。
  4. 调整新类并且重新计算出新类的中心**(确定新类的中心的方法类似于求重心)**
  5. 重复三、四步,直到中心不再需要调整。若不再需要调整或者达到最大迭代次数则停止。

如下面的流程图:
在这里插入图片描述
K-means算法的优点:
(1)算法简单便捷;
(2)对于大数据集,该算法效率较高;
K-mean算法的缺点:
(1)必须实现给出需要分得的类的数目 K K K
(2)对初始值非常敏感(初始分类中心不同,其分得的类也不同);
(3)对于孤立点的数据比较敏感;

因此,衍生出了K-means++算法来解决K-means算法带来的问题。

四、K-means++算法

算法步骤:(对聚类中心的选择进行了优化)
(1)随机选取一个样本作为第一个聚类中心;
(2)计算每个样本与最近的一个聚类中心的距离,这个值越大,表示被选取作为聚类中心的概率越大;最后,用轮盘法选取下一个聚类中心。
(3)重复第二步,直到选出 K K K 个聚类中心。
这些过程可以直接在SPSS中实现,并且SPSS使用的是K-means++算法

五、对于K-means算法和K-means算法的讨论

(1)确定 K K K 的值
聚类的目的就是将样本数据分为 K K K 个可以解释其意义的类。因此最好的方法就是去几个不同的 K K K 值,选取其中最好解释的那个 K K K 值即可。
(2)量纲对于聚类的影响
为了排除量纲对于聚类的影响,可以首先进行去量纲处理(标准化)。标准化公式: z i = x i − x ˉ σ x z_i = \frac{x_i - \bar{x}}{\sigma_x} zi=σxxixˉ 其中, x ˉ \bar{x} xˉ 是样本的均值, σ x \sigma_x σx 是样本的标准差。

六、系统(层次)聚类算法

  1. 算法核心
    计算两类数据点之间的距离,对最为接近的两类数据进行合并,反复进行直到合成一类,最终生成聚类系谱图。
  2. 算法步骤:
    1. 将每个对象单独看作一类,计算两两之间的最小距离;
    2. 将距离最小的两个类合并成一类新类;
    3. 重新计算这个新类与所有类之间的距离;
    4. 重复第二步和第三步,直到所有类合并成一类;

算法流程图如下:在这里插入图片描述
3. 解决问题
可以在SPSS中调用命令,可得结果为:
在这里插入图片描述
由图可得,具体的聚类个数可以从图中决定。

七、DBSCAN算法

  1. 算法简要叙述:
    1. 指定半径 E p s Eps Eps 和 最小包围的点的数目 M i n P t s MinPts MinPts

    2. 指定初始点 A A A,以 A A A 为圆心, E p s Eps Eps 为半径作圆,在该圆内有不少于 M i n P t s MinPts MinPts 个点,则具有这样的特征的点是一个类;(注意:若有点在 A A A 圆内,但是以这个点作的圆不包围 M i n P t s MinPts MinPts 个点,它是不属于 A A A 类的哦~~~)

      可以参考这个图:
      在这里插入图片描述

  2. DBSCAN算法实现
    DBSCAN算法可以由Matlab实现,可以去官网下载:https://ww2.mathworks.cn/matlabcentral/fileexchange/52905‐dbscan‐clustering‐algorithm

八、总结

  1. 确定指标数量;
  2. 做出散点图判断可以使用哪种算法;
    建议:
    (1)如果只有两个指标,而且这两个指标作出的散点图很有形状,那么可以使用DBSCAN进行聚类
    (2)其他情况建议系统聚类(K-means算法可写的东西太少)
  3. 根据算法进行聚类;
  4. 对得出的结果进行解释(一定要选取适当的便于解释的 K K K 值哦~~~)

如果有什么错误,请一定告诉我哈~~~请添加图片描述

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值