K-Means 进化
2018-09-12 本文已影响0人
翻开日记
K-Means 原型
训练样本X = {x1, x2, x3, ......, xn}, x1 = {a1, a2, a3 ..... am}, a为样本的特征
- 从数据集中随机选取K个点, 分别构成每个聚类中心点C={C1, C2, ..., CK}
-
for x in X
: 计算x分别距离K个点的距离,找到最小的距离Cj,将x归到Cj中. -
for c in C
: 对每个类, 重新计算各自的聚类中心 - 重复2,3步骤, 直至聚类中心不再变化.
K-Means ++
实质
对K-Means算法第一步k值选取的方法进行改变
- 随机在样本中选取1个点作为聚类中心
-
for x in X
: 找到距离x最近的类,并记录其距离,记为dx.
最终得到Dx={dx1, dx2,.....,dxn},并取最大的dx对应的点作为新找到的聚类中心 - 重复步骤2,直至找到k个点
- 使用K-Means算法的2-4步骤
ISODATA算法
实质
针对K值新增两种操作: 分裂 和合并
分裂的条件
1.每个类所要求的最少样本数Nmin: 如果该簇分裂后样本数少于Nmin,则不允许分裂.
2.最大方差Sigma: 衡量类内分散程度, 大于该值, 则可以进行分裂
合并的条件
类间最小距离dmin: 两个类如果距离小于dmin,则合并.
结果
给定预期聚类中心数k0
最终输出聚类中心数[k0/2, 2k0]