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

一、定义

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

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

二、算法流程

K-means聚类的算法流程:

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

【举例】
1.指定聚类个数为2
2.随机地选择K个数据对象作为初始的聚类中心
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第1张图片

3.计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第2张图片

4.调整新类并且重新计算出新类的中心;
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第3张图片

5.循环步骤三和四,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环;
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第4张图片

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

三、算法流程图

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

四、K-means算法评价

优点:

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

缺点:

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

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

五、算法改进

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

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

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

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

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

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

六、SPSS软件操作举例

1.将数据导入spss软件中

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

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

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

3.设置分析的各种参数

将“食品”到“杂项”的各栏数据放入变量中,“省份”放入个案标记依据中,其余不用管。
“迭代”中可以选择迭代次数,代表:如果迭代至X次之后还没有收敛,就会自动终止。
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第8张图片

“保存”选项里的两个都勾上。
结果可以反映出每个省份是属于第几聚类,每个省份距离聚类中心的距离是多少。
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第9张图片

“选项”中勾选情况如下:
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第10张图片

点击确定即可。

4.分析结果:

可以看到spss分析的每一项的聚类中心:
就“食品”一项而言,其初始聚类中心分别是值为“3712”和“1304”的省份,不难发现分别是省份中的“上海”和“内蒙古”,并且二者分别是最大值与最小值。可以看出spss默认使用的是“K-均值++”算法。
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第11张图片

分出的聚类成员如下:可以看到聚类类别为1的省份和聚类类别为2的省份分别是哪些。
从而可以得出一些大致的结论:比如,这个聚类分析算法按两个聚类分,其实把省份分成了高收入水平和低收入水平两种省份。
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第12张图片
下图显示的是最终的聚类中心:
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第13张图片
以上就是K-均值算法对于消费数据的分类的一个应用。

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

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

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

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

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

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

【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第14张图片
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第15张图片
然后就会生成这些数据的标准化值及其各种指标数据:
可以将生成的下图放入论文中,说明你进行了标准化数据这一操作。
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第16张图片
然后我们看spss在变量中保存的标准化数据:
【数学建模笔记】【第十讲(1)】聚类模型之:K-均值聚类_第17张图片
这些名字带“Z”的数据就是标准化后的数据,代表着用的是“Z”标准化方法进行的标准化。用这些数据再进行K-均值聚类也可得到与刚才同样的效果。

你可能感兴趣的:(数学建模笔记,聚类,均值算法,抽象代数,算法)