机器学习——聚类算法之k-means
一、怎么评判聚类的好坏
① 高类间距,低类内距;
② 高类内相似度,低类间相似度
二、k-means
1、基本思想
① 输入:N个样本;拟定的聚类个数k;
② 选取k个不同的样本点作为初始聚类中心;
③ 对每一个样本点计算其到每个聚类中心的距离,取其距离最近的聚类中心为该样本点的分类;
④ 计算每一类中包含的所有样本点的平均值,作为该类的新聚类中心;
⑤ 重复②③④,直到迭代值收敛为止
2、迭代收敛的理解
① 聚类中心不再有变化;
② 每个样本到对应聚类中心的距离之和不再有很大变化
3、k-means的损失函数
假定 为K个聚类中心;
用 表示x n 是否属于聚类k
则损失函数这如下这样定义的:
最小化损失函数的过程是一个NP问题,它是一个收敛到局部最低点的过程。
这个算法是初始聚类中心敏感的,对其的缓解方法有:
1)初始第一个聚类中心为某个样本点,初始第二个聚类中心为离它最远的点,第三个为离它俩最远的…;
2)多初始化几遍,选所有这些聚类中损失函数(到聚类中心和)最小的;
3)优化的初始化聚类方法(Arthur 和 Vassilvitskii 提出的K-means++)
4、k值的选定
方法: “肘点”法
选取不同的K值,画出损失函数曲线
选取“肘点”值
5、K-means的局限性
① 属于“硬聚类”,每个样本只能有一个类别;
② K-means对异常点的“免疫力”很差,我们可以通过一些调整(比如中心不直接取均值,而是找均值最近的样本点代替);
③ 对于团状的数据点集区分度好,对于带状(环绕)等“非凸”形状不太好
6、示例
① 以下样本点要聚成2类
② 初始化聚类中心
③ 根据初始聚类中心,对所有样本点分类
④ 重新计算聚类中心
⑤ 根据新的聚类中心,对所有样本点重新分类
⑥ 重复④⑤,直至聚类中心不再改变为止