强烈推荐 | 超easy K-means:入门级的聚类算法神器!
中国男足近几年到底在亚洲处于几流水平?
各方对于目前中国男足在亚洲的地位各执一词,有人说中国男足亚洲二流,有人说三流,还有人说根本不入流。既然争论不能解决问题,我们就让数据告诉我们结果吧。
在《算法杂货铺——k均值聚类(K-means)》这篇文章中,作者用亚洲15支足球队从2005年到2010年间大型杯赛的战绩做了一个向量表,接着用k-means算法把球队归类,待结果已收敛时,得出最终结果:
亚洲一流:日本,韩国,伊朗,沙特
亚洲二流:乌兹别克斯坦,巴林,朝鲜
亚洲三流:中国,伊拉克,卡塔尔,阿联酋,泰国,越南,阿曼,印尼
看来数据告诉我们,说国足近几年处在亚洲三流水平真的是没有冤枉他们,至少从国际杯赛战绩是这样的。
其实,业务中也有很多用聚类分析的例子,比如,分析用户类型以使用不同的商业策略,或是分析商品相似度,从而可以用一些不同的销售策略,等等。
最近机器学习开始大火之后,很多人在问,“机器学习从什么开始学起?”“有什么学习路线图?”
根据N多大牛给出的建议,必须先搞定“两个K算法”,这两个算法就是k-均值算法和KNN算法。k-均值算法是非监督学习中最简单的聚类算法。
在实际业务面前,有些命题是需要从得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,例如挖掘固定人群在公共交通中的行为模式、基于短信文本内容挖掘垃圾短信及其变种、基于用电异常情况识别国家电网窃电用户等,所有的待挖掘数据都有一个已经存在的类别与之对应,这种提供带已知类别标记的训练数据的学习过程叫监督学习,这些场景通常都能够用分类算法来处理。
但是大部分时候上述条件是得不到满足的,比如上述判断国足水平的例子,以及分析用户类型、或者商品相似度。这些业务场景下,我们不关心某一类是什么,我们需要实现的目标是把相似的东西聚到一起,通常这时候就用到了聚类算法,相比于分类,它可以发现数据中未知的分类,识别数据对象的内在关系。
聚类算法已经被大家频繁的用于机器学习、数据挖掘和模式识别工作中,例如:模式识别中的语音识别、字符识别;机器学习中的图像分割;图像处理中的数据压缩、信息检索;以及数据挖掘、时空数据库应用、序列和异常数据分析等。此外,聚类还应用于统计科学、生物学、地质学、地理学以及市场营销、银行客户等级划分等方面。
k-means无疑是聚类算法中最简单、最好懂、最高效、最常见的,也是十大经典数据挖掘算法之一。
k-means算法的基本思想是:在空间中选几个点为聚类中心初始点,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
k-means算法的计算过程非常直观
1.从D中随机取k个元素,作为k个簇的各自的中心。
2.分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
3.根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
4.将D中全部元素按照新的中心重新聚类。
5.重复第4步,直到聚类结果不再变化。
6.将结果输出。
k-means有着明显的优点
1.算法快速、简单;
2.当聚类是密集的,且类与类之间区别明显时,效果较好。
3.对大数据集有较高的效率并且是可伸缩性的;
4.时间复杂度近于线性,而且适合挖掘大规模数据集。
k-means使用的场景多到不限于
1.在大量文本中发现隐含的话题;
2.发现图像中包含的颜色种类;
3.从销售数据中发现不同特征顾客的分类
……
Reference
《算法杂货铺——k均值聚类(K-means)》
标题图来源dreamstime,画家Valeriy Kachaev作品