问题2 K均值算法的优缺点是什么?如何对其进行调优?
K
均值算法有一些缺点:
如受初值和离群点的影响每次的结果不稳定
结果通常不是全局最优而是局部最优解
无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100
倍)
不太适用于离散分类
K
均值聚类的优点:
对于大数据集,
K
均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O
(
NKt
)
接近于线性,其中
N
是数据对象的数目,K
是聚类的簇数,
t
是迭代的轮数。
K均值算法的调优一般可以从以下几个角度出发:
(
1
)数据归一化和离群点处理
K
均值聚类本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对数据的聚类结果产生决定性的影响,所以未做归一化处理和统一单位的数据是无法直接参与运算和比较的。同时,离群点或者少量的噪声数据就会对均值产生较大的影响,导致中心偏移,因此使用K
均值聚类算法之前通常需要对数据做预处理。
(
2
)合理选择
K
值
K
值的选择是
K
均值聚类最大的问题之一,这也是
K
均值聚类算法的主要缺点。实际上,我们希望能够找到一些可行的办法来弥补这一缺点,或者说找到K
值的合理估计方法。但是,K
值的选择一般基于经验和多次实验结果。例如采用手肘法,我们可以尝试不同的K
值,并将不同
K
值所对应的损失函数画成折线,横轴为K
的取值,纵轴为误差平方和所定义的损失函数,如图
5.3
所示。
由图可见,
K
值越大,距离和越小;并且,当
K
=3
时,存在一个拐点,就像人的肘部一样;当K
(1,3)
时,曲线急速下降;当
K
>3
时,曲线趋于平稳。手肘法认为拐点就是K
的最佳值。
手肘法是一个经验方法,缺点就是不够自动化,因此研究员们又提出了一些更先进的方法,其中包括比较有名的Gap Statistic
方法
。
(
3
)采用核函数。
采用核函数是另一种可以尝试的改进方向。传统的欧式距离度量方式,使得
K均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化,这时算法又称为核K
均值算法,是核聚类方法的一种 。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。