【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类

一、定义

聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;也可以探究不同类之间的相关性和主要差异。

聚类和分类的区别:分类是已知类别的,聚类未知。

二、算法流程

K-means聚类的算法流程:

  • 指定需要划分的簇[cù]的个数K值(类的个数);
  • 随机地选择K个数据对象作为初始的聚类中心 (不一定要是我们的样本点);
  • 计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
  • 调整新类并且重新计算出新类的中心;
  • 循环步骤三和四,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环;
  • 结束

【举例】
1.指定聚类个数为2
2.随机地选择K个数据对象作为初始的聚类中心
在这里插入图片描述

3.计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
在这里插入图片描述

4.调整新类并且重新计算出新类的中心;
在这里插入图片描述

5.循环步骤三和四,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环;
在这里插入图片描述

K-均值聚类可视化可以在这个网站自己动手尝试:https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/

三、算法流程图

在这里插入图片描述

四、K-means算法评价

优点:

  • 算法简单,快速
  • 对处理大数据集,该算法是相对高效率的

缺点:

  • 要求用户必须事先给出要生成的簇的数目K
  • 对初值敏感(选择的初始中心不同,则最后收敛后的中心位置也不同)
  • 对于孤立点数据敏感(孤立数据极容易造成聚类中心的严重偏移,不符合数据集本身的聚集程度)

K-means++算法可以改进2和3的缺点

五、算法改进

K-means++算法介绍:
k-means++算法只是改进了一点:就是在选择初始聚类中心的时候,选择初始聚类中心的基本原则是:初始的聚类中心之间的相互距离要尽可能的远。

算法描述如下:
(只对K-means算法“初始化K个聚类中心” 这一步进行了优化)
步骤一:

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

  2. 计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;

  3. 重复步骤二,直到选出K个聚类中心。选出初始点后,就继续使用标准的K-means算法了

这样,由于初始聚类中心已经是尽可能远的,所以基本上是确定唯一的,而不会是随机的,并且即使有孤立点的存在,那么就会在选择初始聚类中心的时候直接将其选为聚类中心,最后极有可能只有该聚类中心仅有一个孤立点,而不会包含其他点。所以不会影响到聚类中心对该数据集分布情况的描述。

六、SPSS软件操作举例

1.将数据导入spss软件中

在这里插入图片描述

2.在“分析”选项中找到“K-均值聚类”

在这里插入图片描述

3.设置分析的各种参数

将“食品”到“杂项”的各栏数据放入变量中,“省份”放入个案标记依据中,其余不用管。
“迭代”中可以选择迭代次数,代表:如果迭代至X次之后还没有收敛,就会自动终止。
在这里插入图片描述

“保存”选项里的两个都勾上。
结果可以反映出每个省份是属于第几聚类,每个省份距离聚类中心的距离是多少。
在这里插入图片描述

“选项”中勾选情况如下:
在这里插入图片描述

点击确定即可。

4.分析结果:

可以看到spss分析的每一项的聚类中心:
就“食品”一项而言,其初始聚类中心分别是值为“3712”和“1304”的省份,不难发现分别是省份中的“上海”和“内蒙古”,并且二者分别是最大值与最小值。可以看出spss默认使用的是“K-均值++”算法。
在这里插入图片描述

分出的聚类成员如下:可以看到聚类类别为1的省份和聚类类别为2的省份分别是哪些。
从而可以得出一些大致的结论:比如,这个聚类分析算法按两个聚类分,其实把省份分成了高收入水平和低收入水平两种省份。
在这里插入图片描述
下图显示的是最终的聚类中心:
在这里插入图片描述
以上就是K-均值算法对于消费数据的分类的一个应用。

七、K-means算法的一些讨论

1.聚类的个数K值怎么定?

答:分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,
看分成几类的结果更好解释,更符合分析目的等。

2.数据的量纲不一致怎么办?

答:如果数据的量纲不一样,那么算距离时就没有意义。例如:如果X1单位是米,X2单位是吨,用距离公式计算就会出现“米的平方”加上“吨的平方”
再开平方,最后算出的东西没有数学意义,这就有问题了。

方法:先进行标准化
在这里插入图片描述
在spss软件中如何操作:

在这里插入图片描述
在这里插入图片描述
然后就会生成这些数据的标准化值及其各种指标数据:
可以将生成的下图放入论文中,说明你进行了标准化数据这一操作。
在这里插入图片描述
然后我们看spss在变量中保存的标准化数据:
在这里插入图片描述
这些名字带“Z”的数据就是标准化后的数据,代表着用的是“Z”标准化方法进行的标准化。用这些数据再进行K-均值聚类也可得到与刚才同样的效果。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
k-means聚类算法是一种常用的无监督学习算法,用于将数据集划分为k个不同的簇。其参数包括k和max_iterations。 k代表聚类的数目,即要将数据集划分为多少个簇。在使用k-means算法之前,需要明确需要将数据划分为多少个簇。选择合适的簇数是一项重要任务,它直接影响到算法的性能和结果的准确性。根据实际问题的要求和数据的特征,可以通过调参或者利用先验知识来确定k的值。常用的确定簇数的方法有手肘法、轮廓系数和gap statistic等。 max_iterations是算法的最大迭代次数。k-means算法通过迭代的方式不断优化簇中心的位置,以获得更好的聚类效果。每一次迭代中,算法会计算每个样本点与各个簇中心的距离,将样本点划分到距离最近的簇中心所对应的簇中,并更新簇中心的位置。迭代直到达到最大迭代次数或者满足了早停条件,即簇中心的位置不再改变。 k-means算法的过程可以简述为以下几个步骤: 1. 随机选择k个样本作为初始的簇中心。 2. 计算每个样本点与各个簇中心的距离,将样本点划分到距离最近的簇中心对应的簇中。 3. 更新簇中心的位置,取簇中所有样本点的均值作为新的簇中心。 4. 重复步骤2和3,直到达到最大迭代次数或者满足早停条件。 5. 返回最后的簇划分结果。 总之,k-means聚类算法通过定义k个簇中心并迭代优化簇中心的位置,将数据集划分为k个不同的簇。通过调整k和最大迭代次数,可以控制聚类的精细度和算法的运行时间。它是一种简单而高效的聚类算法,在各个领域都有广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兜兜里有好多糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值