说到无监督学习,在上一篇文章中,我们提到了PCA,这里我们再简单的说一下聚类算法:Kmeans与混合高斯模型(GMM)
K-means
K-means算法算是机器学习中最简单的算法之一了,但他却是应用最广泛、最普遍、最经典的聚类算法。原因在于实现简单,可理解性强。
先说一下K-means的工作步骤:
- 随机初始化K个类中心。
- 计算所有样本点到K个中心的欧式距离,并根据每个样本点到达聚类中心的最小欧氏距离对样本点进行类别划分。
- 然后更新计算每一类的聚类中心
- 重复2-3步骤直到算法收敛。
K-means算法的优化目标如下:
K-means算法看起来简单,可它的背后却隐含着较为复杂的数学计算。对于这样的一个问题,K-means的收敛性如何证明?
期望最大化(EM)
在解释K-means算法收敛行之前,我们先了解一下EM算法。首先我们需要了解一个不等式,Jensen不等式,对于凸函数 f(x)有,
写成数学期望的方式可能不好理解,其实这个不等式我们在中学的时候就学过,即
对于凸函数而言,很容易证明上面的式子是成立的。
首先,给定m个观测数据x,和模型参数θ,我们想寻找隐变量z(在Kmeans中隐变量代表样本所属类的标签),使得 P(X,z) 最大 。简历似然函数:
对于带有隐变量的似然函数无法采用极大虽然估计的方法,因此需要EM算法登场了。
对上式,我们做一下变换,根据Jensen不等式有:
当等号成立时有:
注意,
经过推导得到,
我们可以发现可以通过后验概率来计算隐变量的概率,如果可以解决隐变量的求解,那么对似然函数的下界极大化就很简单了,只需要求一次极大似然估计即可。因此,EM算法可以归纳为:
E步:先初始化一个参数θ,然后根据样本计算后验概率求出隐变量z的概率
M步:
根据求出的隐变量的概率分布通过极大似然估计更新θ。
反复执行上述E步骤和M步骤对参数进行更新即可。
收敛性证明:
第一个不等号是由于似然函数大于其下界,第二个不等号是因为t+1刻的似然函数必定大于t时刻的下界函数的t+1时刻的值(下界函数的极大值在θt-1处),然后下界函数的极大值又大于t时刻的函数值。
因此,通过上面的式子,我们可发现似然函数是随着t而递增的,并且似然函数在区间 [0, 1]之内,因此似然函数由上届,故似然函数收敛。
K-means收敛性:
为了搞清楚k-means的收敛性,我们必须得先搞清楚K-means算法中的模型参数和隐变量。模型参数是簇中心点的位置,隐变量是每个样本属于哪个类别,求解的似然函数是:
在E步骤,计算
在M步,计算
经过推导可得
由于EM算法的收敛性已经被证明,因此,可等价K-means算法的收敛性。
K-means的优点和缺点:
优点:
- 原理简单,收敛速度快。
- 聚类效果还比较好。
- 模型可解释性强。
- 只需要调节一个参数K。
缺点:
- 聚类的蔟个数难以确定,通常使用手肘法(通过遍历K,找到随时函数下降最快的一次所对应的K)
- 初始值的选取对结果的影响较大(K-means++对其进行了改进,使初始化的点之间距离分开,初始化的类中心距离越大越好)
- 噪音点和离群点对结果的影响较大(应当注意,在机器学习算法中,离群点对所有计算距离的方法都有较大的影响,ISODATA算法对K-means做了改进,在聚类过程中伴随着分裂和合并两个操作,当某个类别的样本数量较少的时候,丢弃这个类别,当某个类别样本分散程度较大时,分裂这个类别)
- 只能将样本分到一个类中。
此外,我们还可以对K-means的欧氏距离的进行改进,比如在YOLOv2中,作者提出使用IOU距离替换K-means的欧氏距离,从而选取一些尺寸大小的先验框(anchor)
混合高斯模型(GMM)
高斯混合模型(Gaussian Mixed Model,GMM)也是一种常见的聚类算法,与K均值算法类似,同样使用了EM算法进行迭代计算。高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布)的,当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。
高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的。在该假设下,每个单独的分模型都是标准高斯模型,其均值μ i 和方差Σ i 是待估计的参数。此外,每个分模型都还有一个参数π i ,可以理解为权重或生成数据的概率。高斯混合模型的公式为
然而,通常我们并不能直接得到高斯混合模型的参数,而是观察到了一系列数据点,给出一个类别的数量K后,希望求得最佳的K个高斯分模型。因此,高斯混合模型的计算,便成了最佳的均值μ,方差Σ、权重π的寻找,这类问题通常通过最大似然估计来求解。遗憾的是,此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。
在这种情况下,可以用上一节已经介绍过的EM算法框架来求解该优化问题。EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。
高斯混合模型与K均值算法的相同点是,它们都是可用于聚类的算法;都需要指定K值;都是使用EM算法来求解;都往往只能收敛于局部最优。而它相比于K均值算法的优点是,可以给出一个样本属于某类的概率是多少;不仅仅可以用于聚类,还可以用于概率密度的估计;并且可以用于生成新的样本点。