机器学习十大算法之K-means

匿名 (未验证) 提交于 2019-12-03 00:41:02

K-means算法,也称为K平均或K均值算法;
K平均聚类的目的是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近中心点的距离最近(或者说相似度上更相近的)对应的聚类。

1.从定义可以看出Kmeans主要是通过K中心和对K中心的距离计算进行聚类;所以K-means主要问题是K值选取和距离(相似度衡量)使用
2.由于每次都要计算所有的样本与每一个质心之间的距离(相似度),故在大规模的数据集上,K-Means算法的收敛速度比较慢。

1.选择聚类的个数k(kmeans算法传递超参数的时候,只需设置最大的K值)
2.任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心。
3.对每个点确定其聚类中心点。
4.再计算其聚类新中心。
5.重复以上步骤直到满足收敛要求。(通常就是确定的中心点不再改变,或者损失函数达到预期范围)

举例如下样本,通过Kmeans对其分为两类:

样本
p1 7 7
p2 2 3
p3 6 8
p4 1 4
p5 1 2
p6 3 1
p7 8 8
p8 9 10
p9 10 7
p10 5 5
p11 7 6
p12 9 3
p13 2 8
p14 5 11
p15 5 2

数据点分布在坐标轴上的图像如下:

1.使用K-means中分两类K=2;
2.选择p1,p2为初始的两个中心点
3.对相似度的计算选择欧式距离作为相似度分类计算
4.第一轮计算:
1)通过距离公式计算进行每个点距离P1,P2的距离远近

2) 选取距离较近的点整理进入相应队列:

P1 P3 P7 P8 P9 P10 P11 P12 P14
P2 P4 P5 P6 P13 P15

3) 计算出新一轮的队列中心,代替原来的P1,P2(找出分为两类的中心点,这个中心点比P1,P2更适合)
Px,y=i=1nPix,yn 得出两个中心点为:
第一个中心点为
P1=(p1x+p3x+p7x+p8x+p9x+p10x+p11x+p12x+p14x9,p1y+p3y+p7y+p8y+p9y+p10y+p11y+p12y+p14y9)=(7.3,7.2)
同理:P2=(p2x+p4x+p5x+p6x+p13x+p15x6,p2y+p4y+p5y+p6y+p13y+p15y7)=(1.8,4.6)

4)重复上述步骤,开始新一轮迭代,算距离,取最近:这次算的是p1~p15到p1p2的距离
5)当每次迭代结果不变时,认为算法收敛,聚类完成:

优点:
1、原理简单(靠近中心点),实现容易
2、聚类效果中上
3、空间复杂度o(N)时间复杂度o(I*K*N) N为样本点个数,K为中心点个数,I为迭代次数
缺点:
1、对离群点, 噪声敏感 (中心点易偏移)
2、很难发现大小差别很大的簇及进行增量计算
3、结果不一定是全局最优,只能保证局部最优(与K的个数及初值选取有关)
4、K值选取对迭代次数和聚类效果有一定影响

对于n个点的数据集,迭代计算k from 1 to n,每次聚类完成后计算每个点到其所属的簇中心的距离的平方和,可以想象到这个平方和是会逐渐变小的,直到k==n时平方和为0,因为每个点都是它所在的簇中心本身。但是在这个平方和变化过程中,会出现一个拐点也即“肘”点,下图可以看到下降率突然变缓时即认为是最佳的k值。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!