K-Means聚类一般根据群体的某些标签值或某些属性,对群体进行分组,属于无监督学习。
1. 聚类与分类
聚类与分类最大的区别就是,聚类就是在未知分类规则的情况下对样本集进行分群,分类就是在特征空间中用已知的规则对样本进行判别或者预测。
分类:对于分类来说,在对数据集分类时,我们是知道这个数据集是有多少种类的,比如对用户进行性别分类,我们会下意识很清楚知道分为“男”,“女”两类。
聚类:而对于聚类来说,在对数据集操作时,我们是不知道该数据集包含多少类,我们要做的,是将数据集中相似的数据归纳在一起。比如预测用户的好朋友团体,我们不知道用户和谁玩的好玩的不好,我们通过他们的相似度进行聚类,聚成n个团体,这就是聚类。
2. 算法步骤
聚类算法有很多种(几十种),K-Means是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。
下面,我们描述一下K-means算法的过程,为了尽量不用数学符号,所以描述的不是很严谨,大概就是这个意思,“物以类聚、人以群分”:
1.首先输入k的值,即我们希望将数据集经过聚类得到k个分组;
2.从数据集中随机选择k个数据点作为初始大哥(质心,Centroid);
3.对集合中每一个小弟,计算与每一个大哥的距离(距离的含义后面会讲),离哪个大哥距离近,就跟定哪个大哥;
4.这时每一个大哥手下都聚集了一票小弟,这时候召开人民代表大会,每一群选出新的大哥(其实是通过算法选出新的质心);
5.如果新大哥和老大哥之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),可以认为我们进行的聚类已经达到期望的结果,算法终止;
6.如果新大哥和老大哥距离变化很大,需要迭代3~5步骤。
3. 举个例子 —— 公式计算
下图 P1(0,0)、P2(1,2)、P3(3,1)、P4(8,8)、P5(9,10)、P6(10,7) 6个点,从坐标轴上看应该分成两组,前三个点P、P2、P3一组,后三个点P4、P5、P6 一组。现在手工执行K-Means,体会一下过程,同时看看结果是否和预期一致。
-
选择初始大哥: 我们就选P1和P2
-
计算小弟和大哥的距离: P3到P1的距离从图上也能看出来(勾股定理),是√10 = 3.16;P3到P2的距离√((3-1)2+(1-2)2 = √5 = 2.24,所以P3离P2更近,P3就跟P2混。同理,P4、P5、P6也这么算,如下:
P3到P6都跟P2更近,所以第一次站队的结果是:组A:P1
组B:P2、P3、P4、P5、P6 -
人民代表大会: 组A没啥可选的,大哥还是P1自己 组B有五个人,需要选新大哥,这里要注意选大哥的方法是每个人X坐标的平均值和Y坐标的平均值组成的新的点,为新大哥,也就是说这个大哥是“虚拟的”。 因此,B组选出新大哥的坐标为:P哥((