
K-Means 是一种非监督学习,解决的是聚类问题。K 代表的是 K 类,Means 代表的是中心,你可以理解这个算法的本质是确定 K 类的中心点。当你找到了中心点,也就完成了聚类!
可以从以下三个角度来梳理k-means:
如何确定 K 类的中心点?
如何将其他点划分到k类中?
如何区分k-means与k-近邻算法?
为了对k-means有个感性的认识,我们从熟悉的场景亚洲足球队的水平开始谈起:
熟悉足球的朋友可能心理已经有了预期?你可能会说,”伊朗,韩国“一流水平,中国”二流水平“,越南”三流水平“。这样的猜测是基于我们的经验。
那么,伊朗,中国,越南就是三个等级的代表---中心。
那么如何确定k类的中心了?一开始我们是随机指认的,当确定了中心点后,我们就可以按照距离将其它足球队划分到不同的类别中。
在这里我们默认k=3,在工业界k的选择是个难事!但我们可以通过其它方式来确定k,后文会讲到。
从上面的描述中,我们可以抽象出聚类方法的步骤:
1、随机从数据集中选择k个点作为我们聚类的中心点;
2、讲每个点分配到离它最近的类中心点,就形成了k类。然后重新计算每个类的中心点(比如取各类的均值作为新的中心点)
3、重复第2步,直到类不再发生变化,或者设置最大迭代次数,让算法收敛。
下面举例说明,上述过程:
其中 2019 年国际足联的世界排名,2015 年亚洲杯排名均为实际排名,2018年,很多球队没有入围决赛,进入决赛圈的有自己的排名,没有进入决赛圈我们按照以下原则来给其一个排名:
如果是亚洲区域入选赛12强的队伍,设置为40名
如果没有进入亚洲区域预选赛,设置为50名