k-means定义:
聚类通过将数据集中的样本划分为若干个通常是不相交的子集,每个子集成为一个“簇”,每个簇可能对应于一些潜在的概念(也就是类别),是无监督的学习算法
模型原理:
对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大
收敛过程
1 随机选取k个中心点
2 遍历所有数据,将每个数据划分到最近的中心点中
3 计算每个聚类的平均值,并作为新的中心点
4 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代
时间复杂度:O(Inkm)
空间复杂度:O(nm)
其中m为每个元素字段个数,n为数据量,I为迭代个数。一般I,k,m均可认为是常量,所以时间和空间复杂度可以简化为O(n),即线性的。
超参数的选择
可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。
K-Means算法
给定样本集D,k-means算法针对聚类所得簇划分C最小化平方误差。
![](https://img.haomeiwen.com/i11318644/51ff6c20a38606d2.png)
E值越小则簇内样本相似度越高。
算法流程如下:
![](https://img.haomeiwen.com/i11318644/2ac85d53bc32bb95.png)
其中第一行对均值向量进行初始化,在第4-8行与第9-16行依次对当前簇划分及均值向量迭代更新,若迭代更新后聚类结果保持不变,则在第18行将当前簇划分结果返回。
网友评论