概述
KMeans算法属于无监督学习算法,是一个聚类算法,以样本间的距离作为评估的标准,把相近的样本划分到同一个集合中。
名词解释
聚类
聚类是把类似的样本分成一个个的集合的过程。
分类
分类是把样本归属到某个类别。
簇
簇是相似样本组成的集合。
质❤️
簇的中心,吴恩达老师称之为“聚类中心”。
基本原理
KMeans算法的计算过程:
- 1、随机找到K个点作为质❤️。
- 2、根据样本距离质❤️的距离,对所有样本进行划分,组成以质心为核心的K个簇。
- 3、重新计算各个簇的平均位置,作为新的质心。
- 4、根据新计算出的质心,重新对各个样本进行划分。
- 5、重复2、3、4直到达到终止条件为止。
终止的条件有:
- 新计算的质心与上一个一样。
- 新计算的质心与上一个质心的距离达到阈值。
- 达到了约定的迭代次数。
目标优化函数
各个参数的含义是:
- 代表样本1所属的分类的下标。
- :代表第一个分类,数字1就是分类的下标。下标的取值范围是1-k。
- : 代表样本1所属的分类的下标,则 代表第i个样本的分类。
所以目标优化函数的含义就变成了求样本与质心距离平方和最小情况下的各个样本所属的分类。
k的选择
肘部法则
通过观察k的取值与J的关系,找到变化的拐点,取拐点的k作为质心的数量。
如左图所示,当k在3之后,j随k的变化将非常不明显,这种情况下取k=3比较合适;但是右图所示,曲线非常平滑,不能找到一个合适的拐点,这种情况下,肘部法则就失效了。
另外的选择
另外的选择就是根据经验进行选择,根据业务的实际需要进行选择,选择对业务支撑好的k值。
质心的选择
一般选择k个随机样本作为质心。
为了防止局部最优化的产生,采用多次随机初始化的方式,然后比较各次选择的目标优化结果,选择最好的作为最终的选择。一般情况下,当k《=10时,随机选择的效果还是不错的,但是当k非常大的情况下,效果就没有那么理想了。
优点
简单容易掌握。
缺点
- 算法的初始质心的选择对于运行的效率,影响很大。
- K取几?K取值没有参考值,只能凭经验或实验结果。
- 离群点对结果影响很大。
- 有可能会造成局部最优的问题:质心比较集中,造成只对部分样本进行了聚类。
适用场景
样本球型形状分布,结果聚类是密集的,且不同样本簇间距较大。
示例
二分类KMeans算法
为了解决KMeans算法的局部优化问题,提出了二分类KMeans算法。
二分类KMeans算法的步骤是:
- 1 首先把所有的样本作为一个簇,然后一分为二。
- 2 选择能最大降低“误差平方和”的簇,拆分为两个簇。
- 3 重复执行步骤2,直到簇的数量达到设置的阈值为准。
误差平方和是衡量样本聚合情况的标准,值越小代表聚合的效果越好。这样划分出来的簇,聚合效果相对较好。