K-means、K-means++、Mini Batch k-means

K-means

K-means算法的基本步骤

1.从n个数据中任意选择 k 个对象作为初始聚类中心
2.通过把每个点分配给最近的聚类中心,从而形成K个类,重新计算每个类的聚类中心
3.终止条件:如果计算后,聚类中心不发生改变

每个类别聚类中心的计算方法

每个类中所有样本取值的均值(质心)

k-means时间空间复杂度

时间复杂度:O(i* n* k* m)
空间复杂度:O(n* m)
k是需要聚类的数量,m为每个元素属性个数(向量的维度),n为数据量,i为迭代次数
一般均可认为是常量,所以时间和空间复杂度可以简化为O(n)

改进

K-means是常用的聚类算法,但其算法本身存在一定的问题,例如在大数据量下计算时间过长就是一个重要问题,
可以从两方面进行改进,一方面:通过改变初始聚类中心的选择,从而减少迭代次数;另一方面:随机抽取一部分样本代表各自类型进行计算,而不是使用全部样本进行更新计算。主要是以下两个改进方法:K-means++、Mini Batch k-means

K-means++

改进点

其实这个算法也只是对初始点的选择有改进而已,其他步骤都一样。初始质心选取的基本思路就是,初始的聚类中心之间的相互距离要尽可能的远

基本步骤

步骤一:随机选取一个样本作为第一个聚类中心 c1;
步骤二:计算每个样本与当前已有类聚中心最短距离(即与最近一个聚类中心的距离),用 D(x)表示;这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法选出下一个聚类中心;
步骤三:重复步骤二,直到选出 k 个聚类中心。
选出初始点后,就继续使用标准的 K-means 算法了。

Mini Batch k-means

改进点

在计算过程中不必使用所有的数据样本,而是从不同类别的样本中抽取一部分样本来代表各自类型进行计算。由于计算样本量少,所以会相应的减少运行时间,但另一方面抽样也必然会带来准确度的下降。
Mini Batch是原始数据集中的子集,这个子集是在每次训练迭代时随机抽取的样本。这个值默认是100个,可以通过batch_size进行设置

参考文章

参考文章1
参考文章2
参考文章3

你可能感兴趣的:(机器学习知识点)