Kmeans思想及算法流程:
首先Kmeans是一种无监督的聚类算法。对于给定的样本集,按照样本之间的距离大小,将样本划分为K个簇,让簇内的点尽量紧密的连接在一起,而让簇间的距离尽量的大。
算法流程:
1、给各个簇中心以适当的初值。
2、更新样本x1,x2,…,xn对应的簇标签y1,y2,…,yn。
argmin是使目标函数取最小值时的变量值
3、更新各个簇中心。
其中y=1,2,…,c
上式中, ny为属于簇y的样本总数。
4、直到簇标签达到收敛精度为止,否则重复2,3步的计算。
K值的确定:
在实际的应用中,主要两种方法进行K值的确定:
1、经验法:在实际的工作中,可以结合业务的场景和需求,来决定分几类以确定K值。
2、肘部法则:在使用聚类算法时,如果没有指定聚类的数量,即K值,则可以通过肘部法则来进行对K值得确定。肘部法则是通过成本函数来刻画的,其是通过将不同K值得成本函数刻画出来,随着K值的增大,平均畸变程度会不断减小且每个类包含的样本数会减少,于是样本离其重心会更近。但是,随着值继续增大,平均畸变程度的改善效果会不断减低。因此找出在K值增大的过程中,畸变程度下降幅度最大的位置所对应的K较为合理。
注:
成本函数:各个类的畸变程度之和与其内部成员位置距离的平方和,最优解是以成本函数最小化为目标。公式如下:
其中是第k个质心的位置。
3、规则法:K= (此种方法存在一定的缺点:可能导致聚类的数目较大)