观察人类社会,亦或说车水马龙中的光怪陆离,不难发现《马原》中介绍的人类社会中的个体,总是通过某种方面的“类似”聚在一起,文学上称这种现象叫做物以类聚,人以群分。
一.引言
前文提到,每个数据项,或者说每个对象,都有着自身固有、后天的一些属性。我们通过某些评判规则,将他们分成不同的类别。
将事物分为三教九流?不妨通过logistic回归-CSDN博客文章浏览阅读831次,点赞20次,收藏13次。和多元线性回归一样,逻辑回归也是建立“”型变量之间的线性关系——也即找出线性方程的近似解。有所不同的是,,这倒是有点像bool型和int型之间的区别了。以此解决特殊的问题要求~https://jslhyh32.blog.csdn.net/article/details/142070034
不过作为社会中的人类,我们在做出决策时难免会有不同程度的主观性,并不是任何时候都能做出所谓的合理【分类】——过于随性地将事物分成三教九流指责,与人们所抨击的天庭又有什么区别。
但实际上,有些时候我们并不需要做出这种【主观】角度的【分类】,好比在湖里丢入一颗铅球,很快就会沉底,而如果搁置一叶扁舟,则可以漂浮在水面上。由于自然界的规律,重力高的事物就会沉底,而重力低的则会浮在水面,这也是某种角度的“物以类聚”。
数据科学里面也有这种所谓的自然规律,即某种算法,将事物划分为有限的那么几类,也就是本帖归纳的聚类算法。官方给出的定义是:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。
本帖主要讲解k均值聚类算法,有关DBSCAN聚类算法已经发布,感兴趣的筒子可以点击下方链接:
DBSCAN聚类算法——MATLAB实现_dbscan聚类算法matlab代码-CSDN博客文章浏览阅读5.1k次,点赞15次,收藏85次。前两个函数分别保存为独立的m文件,将其与主函数放置同一文件夹目录之下即可。此外,自己的数据要独立保存为.mat文件,也在同一目录之下。DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有。作为经典的聚类算法,DBSCAN聚类在数学建模竞赛中用到的概率很大。本文不详细展开讲解DBSCAN的原理,只介绍相关代码的使用步骤。不同,它将簇定义为密度相连的点的最大集合,能够把具有足够。的区域划分为簇,并可在噪声的。_dbscan聚类算法matlab代码https://jslhyh32.blog.csdn.net/article/details/130048940
二.原理
1.算法流程
- 指定需要划分的簇的个数K值(也即所谓【类】的个数);
- 随机地选择K个数据对象作为初始的聚类中心
- 计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
- 调整新类并且重新计算出新类的中心;(更新这个类中的代表)
- 循环步骤三和四,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环;
- 直到结束
在理解的角度上需要注意:虽然我们无法规定每一个个体是哪一类,但是我们可以人为规定个体可以划分为几类。
因此相信大家不难发现,k均值聚类是有他的局限性的:一方面,我们根本就不知道所谓的三教九流是什么样子,但是这里却要求我们规定种类个数——相当于还是要先入为主地知道,到底是【几教几流】;另一方面算法的随机性较大,对于初始给定的聚类中心如果不同,最终聚类结果可能差距很大;此外就是对于比较独立的点很难处理。
2.升级版——Kmeans++算法
基本原则是:初始的聚类中心之间的相互距离要尽可能的远。
步骤:
- 随机选取一个样本作为第一个聚类中心;
- 计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;
- 重复步骤二,直到选出K个聚类中心。(选出初始点后相当于是普通的k均值了)~
三.SPSS实现
现有数据如下:
省份 | 食品 | 衣着 | 家庭设备 | 医疗 | 交通 | 娱乐 | 居住 | 杂项 |
北京 | 2959.19 | 730.79 | 749.41 | 513.34 | 467.87 | 1141.82 | 478.42 | 457.64 |
天津 | 2459.77 | 495.47 | 697.33 | 302.87 | 284.19 | 735.97 | 570.84 | 305.08 |
河北 | 1495.63 | 515.9 | 362.37 | 285.32 | 272.95 | 540.58 | 364.91 | 188.63 |
山西 | 1406.33 | 477.77 | 290.15 | 208.57 | 201.5 | 414.72 | 281.84 | 212.1 |
内蒙古 | 1303.97 | 524.29 | 254.83 | 192.17 | 249.81 | 463.09 | 287.87 | 192.96 |
辽宁 | 1730.84 | 553.9 | 246.91 | 279.81 | 239.18 | 445.2 | 330.24 | 163.86 |
吉林 | 1561.86 | 492.42 | 200.49 | 218.36 | 220.69 | 459.62 | 360.48 | 147.76 |
黑龙江 | 1410.11 | 510.71 | 211.88 | 277.11 | 224.65 | 376.82 | 317.61 | 152.85 |
上海 | 3712.31 | 550.74 | 893.37 | 346.93 | 527 | 1034.98 | 720.33 | 462.03 |
江苏 | 2207.58 | 449.37 | 572.4 | 211.92 | 302.09 | 585.23 | 429.77 | 252.54 |
浙江 | 2629.16 | 557.32 | 689.73 | 435.69 | 514.66 | 795.87 | 575.76 | 323.36 |
安徽 | 1844.78 | 430.29 | 271.28 | 126.33 | 250.56 | 513.18 | 314 | 151.39 |
福建 | 2709.46 | 428.11 | 334.12 | 160.77 | 405.14 | 461.67 | 535.13 | 232.29 |
江西 | 1563.78 | 303.65 | 233.81 | 107.9 | 209.7 | 393.99 | 509.39 | 160.12 |
山东 | 1675.75 | 613.32 | 550.71 | 219.79 | 272.59 | 599.43 | 371.62 | 211.84 |
河南 | 1427.65 | 431.79 | 288.55 | 208.14 | 217 | 337.76 | 421.31 | 165.32 |
湖南 | 1942.23 | 512.27 | 401.39 | 206.06 | 321.29 | 697.22 | 492.6 | 226.45 |
湖北 | 1783.43 | 511.88 | 282.84 | 201.01 | 237.6 | 617.74 | 523.52 | 182.52 |
广东 | 3055.17 | 353.23 | 564.56 | 356.27 | 811.88 | 873.06 | 1082.82 | 420.81 |
广西 | 2033.87 | 300.82 | 338.65 | 157.78 | 329.06 | 621.74 | 587.02 | 218.27 |
海南 | 2057.86 | 186.44 | 202.72 | 171.79 | 329.65 | 477.17 | 312.93 | 279.19 |
重庆 | 2303.29 | 589.99 | 516.21 | 236.55 | 403.92 | 730.05 | 438.41 | 225.8 |
四川 | 1974.28 | 507.76 | 344.79 | 203.21 | 240.24 | 575.1 | 430.36 | 223.46 |
贵州 | 1673.82 | 437.75 | 461.61 | 153.32 | 254.66 | 445.59 | 346.11 | 191.48 |
云南 | 2194.25 | 537.01 | 369.07 | 249.54 | 290.84 | 561.91 | 407.7 | 330.95 |
西藏 | 2646.61 | 839.7 | 204.44 | 209.11 | 379.3 | 371.04 | 269.59 | 389.33 |
陕西 | 1472.95 | 390.89 | 447.95 | 259.51 | 230.61 | 490.9 | 469.1 | 191.34 |
甘肃 | 1525.57 | 472.98 | 328.9 | 219.86 | 206.65 | 449.69 | 249.66 | 228.19 |
青海 | 1654.69 | 437.77 | 258.78 | 303 | 244.93 | 479.53 | 288.56 | 236.51 |
宁夏 | 1375.46 | 480.89 | 273.84 | 317.32 | 251.08 | 424.75 | 228.73 | 195.93 |
新疆 | 1608.82 | 536.05 | 432.46 | 235.82 | 250.28 | 541.3 | 344.85 | 214.4 |
打开SPSS录入数据,并选择分类-k均值聚类:
此处我们规定类数为3,也即将上述省份分为3个档次:
看下表,分别展示了3个不同簇的聚类中心(也即代表性个体):上述中心并非具体哪个省份,而是数值上的一个虚拟存在而已!
这个表展示了各个簇里面的成员个数:
保留成员所属类别,看看就行:
省份 | 北京 | 天津 | 河北 | 山西 | 内蒙古 | 辽宁 | 吉林 | 黑龙江 | 上海 |
所属 | 1 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 1 |
省份 | 江苏 | 浙江 | 安徽 | 福建 | 江西 | 山东 | 河南 | 湖南 | 湖北 |
所属 | 2 | 2 | 3 | 2 | 3 | 3 | 3 | 3 | 3 |
省份 | 重庆 | 四川 | 贵州 | 云南 | 西藏 | 陕西 | 甘肃 | 青海 | 宁夏 |
所属 | 2 | 3 | 3 | 2 | 2 | 3 | 3 | 3 | 3 |
省份 | 广西 | 广东 | 新疆 | 海南 |
所属 | 3 | 1 | 3 | 3 |
相信各位看出来一些端倪了:所谓的3档里面,经济实力也分三六九等。这就是对类别把控的主观局限性所在,在数模比赛的实战中,建议多尝试几个数值,最终言之有理即可。
四.案例
聚类在处理大规模数据时还是相当实用的,博主在22年国赛使用过一次,23年正大杯使用过一次,还有一篇北大核心的论文,这里就不展示了,大同小异~
22年国赛:
23年正大杯:
写在最后:
复习过考研数学的筒子兴许有同样感受——所谓的聚类算法很像线性代数中的线性相关。也即选取一个代表即可表示整个向量组的成员,也就是所谓的极大无关组。当然实际上根本不能这样比喻,这里强调的是,聚类中心对整个聚类簇的代表性~