引子:
聚类算法的简介
聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。聚类算法与分类算法最大的区别是:聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。
在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。
K均值(K-Means)
1、定义
K-means聚类算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
K-Means算法的思想
基本K-Means算法的思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,新的质心与原质心相等或小于指定阈值,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。
K-Means算法的流程
1、从N个文档随机选取K个文档作为质心
2、对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类
3、重新计算已经得到的各个类的质心
4、迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束
如下图:
第五轮迭代产生的结果和第三迭代产生的结果一样,于是算法停止,得到最终的簇划分。
2、优缺点
优点:
§ 算法快速、简单;
§ 对大数据集有较高的效率并且是可伸缩性的;
§ 时间复杂度近于线性,而且适合挖掘大规模数据集
缺点:
§ 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。
§ 由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢
3、应用场景
K-means算法通常可以应用于维数、数值都很小且连续的数据集
K-means常用的场景是在不清楚用户有几类时,尝试性的将用户进行分类,并根据每类用户的不同特征,决定下步动作。一个典型的应用场景是CRM管理中的数据库营销。举例,对于一个超市/电商网站/综合零售商,可以根据用户的购买行为,将其分为“年轻白领”、“一家三口”、“家有一老”、”初得子女“等等类型,然后通过邮件、短信、推送通知等,向其发起不同的优惠活动。
§ 文档分类器
§ 客户分类
§ 图像分类