k均值聚类算法,是一种无监督算法,该算法的主要作用是将相似的样本自动归到一个类别中。所谓的无监督算法,就是输入样本没有对应的输出或标签,而聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个簇。k均值聚类简单易懂而且非常有效,但是确定合理的k值和k个初始类簇中心点对于聚类效果的好坏有很大的影响。
1)基本原理
2)k的选择及初始质心
3)k均值的优缺点
1.1 k均值聚类算法描述
k均值聚类算法中的一种,其中k表示类别数,是一种通过均值对数据点进行聚类的算法。适用于大样本,但需要事先指定分为k个类。
原理:从n个数据对象任意选择k个对象作为初始聚类中心,对剩余的其他对象,则根据它们与k个聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;再计算每个所获的新的聚类中心(该聚类中所有对象的均值);不断重复这一过程,知道标准测度函数开始收敛为止。
k均值聚类的特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
1.2 k均值算法步骤
2.1 k值的选取
对于一个给定没有分类的数据集,最后具体应该分为多少类,这确实时一个让人头痛的问题。要使k均值最后分类结果最好,也就是要使k均值最小化,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此,我们可以设计k均值的代价函数为:
而k值在这里取到了重要作用。据统计发现k值的增加,其数据的代价损失是不断变小,如图,我们发现在k=3时,代价函数随着k值变化的幅度显著降低,在k>3之后所带来的作用也没有特别明显,所以我们可以选择k=3作为我们的聚类数目。
但实际应用中,k值的变换规律都不是和上图一样存在突变点,即拐点。那么这时,k值的选择主要还是根据经验以及利用k均值聚类的目的来决定。
2.2聚类中心的初始化
一般,在实际应用中,我们都是采取随机产生k个点作为初始的聚类中心,其原因是,简单快捷。
但k个初始化的质心的位置选择对最后的聚类结果和运行时间都有很大的影响,因此需要选择合适的k个质心。如果仅仅是完全随机的选择,有可能导致算法收敛很慢。k-means++算法就是对k均值随机初始化质心方法的优化。
k-means++算法对于初始化质心的优化策略也很简单,如下:
以下是一组用户的年龄数据
我们将K值定义为2对用户进行聚类,并随机选择16和22作为两个类别的初始质心。
计算距离并划分数据
我们以图的形式展示聚类的过程,在这组年龄数据中,我们选择16和22作为两个类别的初始质心,并通过计算所有用户的年龄值与初始质心的距离对用户进行第一次分类。
通过计算每个用户年龄分别与两个初始质心的距离,这里我们以黑色实心圆点表示两者距离较大,如表2.2.3,第一个数据15,到初始初始质心点16的距离为1,到第二个初始质心22的距离为7,相比之下,15与16的距离更近,近的距离以空心圆点标记。因此15这个年龄被划分到质心点为16的一组中,如果年龄数据点到两个初始质心的距离相等时,可任意划分到这两组中,例如,数据19到16和22的距离都为3,在这里,我们将它划分到了22中。
上表,我们按欧式距离最小,即相似程度最高对数据分为组后,分别计算分组中数据的均值,得分别为15.33和36.25,并以这两个均值作为新的质心。用新的质心代替原有的初始质心,迭代计算每个年龄数据点到新质心的距离,直到新的质心和上一次的质心相同为止。
表2.2.4,以年龄数据点到新质心的距离值完成分组后,计算两组的均值,为18.56和45.9,年龄数据点22到18.56的距离为3.44,到45.9的距离为23.9。因此年龄数据点22分配到质心为18.56的分组中。
这两个均值与上一次的质心结果不一样,故又用新得到的均值代替原来的质心。在新的质心下,计算数据点到新质心的距离,并对比数据点到两个新质心的距离,选择较小的距离值来确定数据点的分组。
表2.2.5,计算出的新的均值为19.50和47.89,与原来的均值不同,故将新均值代替原有均值作为现在的质心。
算法停止条件
开始计算的第一步,我们就说迭代计算每个数据到新质心的距离,直到新质心和原质心相同,算法就结束。使用上一步分组得到的均值19.5和47.89作为新质心,并计算年龄数据点到新质心的距离,以下计算结果。
使用质心为19.50和47.89进行数据分组,并计算每组的均值作为新的质心,从表2.2.6可知,这里的均值和原质心相等,也就是说新质心与原质心相同,都是19.50和47.89。这时算法停止计算,年龄数据点被划分为两类,对应取值区间为15-28和35-65.这就是k均值聚类的一个全过程。
3.1 k均值聚类的优点
1)原理简单,容易实现
2)可解释性较强
3)聚类效果较优
3.2 k均值聚类的缺点:
1)K值很难确定
2)对噪音和异常点敏感
3)需样本存在均值(限定数据种类)
4)采用迭代方法,得到的结果很有可能是局部最优
5)对于非凸数据集或类别规模差异太大的数据效果不好
1)股票k线聚类
2)商业银行客户分类
3)葡萄酒分级
4)高新技术信用评级
参考文献
[1] https://www.cnblogs.com/zhzhang/p/5437778.html
[2] https://blog.csdn.net/stayfoolish_fan/article/details/51888717
[3] https://blog.51cto.com/janwool/2058124
[4] https://blog.csdn.net/qq_42828404/article/details/81906809
[5] https://blog.csdn.net/Dhane/article/details/86661208
[6] https://www.cnblogs.com/bourneli/p/3645049.html
(部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。电话:4006770986 邮箱:zhangming [at]eefung.com 负责人:张明)