K-Means算法
K-Means是一种聚类算法,属于无监督学习方法的一种。也是基于原型的聚类算法。简单的介绍就是选取k个中心点,形成簇,然后不断更新中心点,直至簇不再改变。
算法流程
- 随机生成k个初始点作为中心点
- 将数据集中的数据按照距离中心点的远近分到各个簇中
- 将各个簇中的数据求平均值,作为新的中心点,重复上一步,直到所有的簇不再改变
距离的选择
- 欧氏距离 每个维度的差的平方之和
- 曼哈顿距离 每个维度的差的绝对值之和
- 切比雪夫距离 每个维度中最大的差的绝对值
- 相关系数
优点
- 易于实现,理解简单。
缺点
- k的值不好确定,不能准确判断出样本应有几个中心点。
- 不适用于大型样本,可用mini-batch方法选取部分样本来计算中心点
- k均值算法不能处理非球形簇、不同尺寸和不同密度的簇,这时需要用到其他聚类算法。
- 初始中心点的选择对算法有很大影响。
- 离群数据点对中心点的计算有很大影响。所以去除离群点有助于提高算法准确率。
- 易收敛于局部最优值,可用二分k均值算法解决这个问题。