K-means讲解

K-means的一些讲解

k 均值算法

步骤

  • 随机选取样本作为初始均值向量(初始值:k 的值【即几个簇】)(也可以不用样本点)
  • 分别计算每个样本点到初始均值向量的距离(数据做了标准化),距离哪个点最近就属于哪个簇
  • 每个簇重新计算中心点,重复第二步直到收敛
  • 找到质心和离某个质心距离最近的点就分为一类。

问题:需要指定k值,难以确定k值。

确定k值

1.手肘法

手肘法的核心指标是SSE(sum of the squared errors,误差平方和),

$$S S E = \sum _ { i = 1 } ^ { k } \sum _ { p∈m_i }| p - m _ {i } | ^ { 2 }$$

其中,Ci是第i个簇,p是Ci中的样本点,mi是Ci的质心(Ci中所有样本的均值),SSE是所有样本的聚类误差,代表了聚类效果的好坏。

手肘法的核心思想是:随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。并且,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。当然,这也是该方法被称为手肘法的原因。

2. 轮廓系数法

思想:簇内样本的距离越近,簇间样本距离越远,平均轮廓系数越大,聚类效果越好。

该方法的核心指标是轮廓系数(Silhouette Coefficient),某个样本点Xi的轮廓系数定义如下:

$$S = \frac { b - a } { m a x ( a , b ) }$$

其中

a是Xi与同簇的其他样本的平均距离,称为凝聚度

b是Xi与最近簇中所有样本的平均距离,称为分离度。

最近簇的定义是,簇间不相似,最近的不相似

$$C _ { j } ={ a r g } m i n \frac { 1 } { n } \sum _ { p ∈c _ { s } } | p - X _ { i }| ^ { 2 }$$

其中p是某个簇Ck中的样本。事实上,简单点讲,就是用Xi到某个簇所有样本平均距离作为衡量该点到该簇的距离后,选择离Xi最近的一个簇作为最近簇。

求出所有样本的轮廓系数后再求平均值就得到了平均轮廓系数

平均轮廓系数的取值范围为[-1,1]。

那么,很自然地,平均轮廓系数最大的k便是最佳聚类数。

-------------未完待续欢迎下次光临-------------
谢谢你想打赏的心~