K均值的基本思想
k均值是最基础和最常用的聚类算法。它的基本思想是通过迭代方式寻找K个簇(cluster)的一种划分方案,使得聚类结果对应的代价函数最小。代价函数可以定义为各个样本距离所属簇中心点的误差平方和:
其中$xi$代表第i个样本,$c_i$是$x_i$所属于的簇,$\mu{c_i}$代表簇对应的中心点,$M$是样本总数。
K均值算法的优缺点是什么?如何对其进行调优?
k均值算法有一些缺点,例如受初值和离群点的影响每次的结果不稳定、结果通常不是全局最优而是局部最优解、无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100倍)、不太适用于离散分类等。但是瑕不掩瑜,k均值聚类的优点也很明显:主要体现在:对于大数据集,K均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)近乎线性,其中N是数据对象的数目,K是聚类的簇数。尽管算法经常以局部最优结束,但一般情况下达到的局部最优已经可以满足聚类的需求。
K均值算法的调优一般可以从以下几个角度出发。
(1)数据归一化和离群点处理
K均值聚类本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对数据的聚类结果产生决定性的影响,所以未做归一化处理和统一单位的数据是无法直接参与运算和比较的。同时,离群点或者少量噪声数据就会对均值产生较大的影响,导致中心偏移,因此使用K均值聚类算法之前通常需要对数据做预处理。
(2)合理选择K值
K值的选择是K均值聚类最大的问题之一,这也是K均值聚类算法的主要缺点。K值的选择一般基于经验和多次实验结果。例如采用手肘法,K值越大,距离和越小。手肘法认为拐点就是K的最佳值。
了解:Gap Statistic算法
(3)采用核函数
传统的欧式距离度量方式,使得K均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类。
针对K均值算法的缺点,有哪些改进的模型?
K均值算法的主要缺点:
(1) 需要人工预先确定初始K值,且该值和真实的数据分布未必吻合。
(2) K均值只能收敛到局部最优,效果受到初始值影响很大。
(3) 易受到噪点的影响。
(4) 样本点只能被划分到单一的类中。
K-means++算法:
在原始K均值算法的随机选择聚集中心的基础上改进,后面过程中都是一样的。K-means++按照如下的思想选取K个聚类中心。假设已经选取了n个初始聚类中心(0<n<K),则在选择第n+1个聚类中心时,距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。
ISODATA算法:
当K值的大小不确定时,可以使用ISODATA算法。当遇到高维度、海量的数据集时,人们往往很难准确地估计出K的大小。ISODATA针对这个问题进行了改进。ISODATA的全称为迭代自组织数据分析法。
ISODATA算法在K均值算法的基础之上增加了两个操作:一是分裂操作,对应着增加聚类中心数;二是合并操作,对应减少聚类中心数。其缺点时需要指定的参数比较多。ISODATA算法的各个输入参数:
(1)预期的聚类中心数目$K_o$。最终输出的聚类中心数目常见范围是从$K_o$的一半,到两倍$K_o$。
(2)每个类所要求的最少样本数目$N_{min}$。如果分裂后会导致某个子类别包含样本数目小于该阈值,就不会对该类别进行分裂操作。
(3)最大方差Sigma。用于控制某个类别中样本的分散程度。当样本的分散程度超过这个阈值时,且分裂后满足(2),进行分裂操作。
(4)两个聚类中心之间所允许最小距离$D_{min}。$如果两个类靠的非常近(即这两个类别对应聚类中心之间的距离非常小),小于该阈值时,则对两个类进行合并操作。
如果希望样本不划分到单一的类中,可以使用模糊C均值或者高斯混合模型。
最大期望算法(EM算法)
K均值聚类的迭代算法实际上是一种最大期望算法。简称EM算法。EM算法解决的是在概率模型中含有无法观测的隐含变量情况下的参数估计问题。由于隐变量是未知的,无法直接通过最大似然估计求解参数,这时需要利用EM算法来求解。
EM算法框架总结如下,由以下两个步骤交替进行直到收敛:
(1)E步骤:计算隐变量的期望
(2) M步骤:最大化,目的是通过最大化这个下界可以使得待优化函数向更好的方向改进。
K均值算法等价于用EM算法求解含隐变量的最大似然问题。
参考资料
- 《百面机器学习》