每天进步一点点《ML - 从极大似然到EM算法》

一:极大似然
1:概念引入
极大似然参数估计是概率论中学习过的内容,就是预先定义概率分布模型,根据一堆的同概率分布的一堆样本数据去估计该概率模型中的未知参数。

举个例子:有很多西瓜x,我们可以得到每一个西瓜的体积数值,每一个样本就是一个西瓜,每个西瓜是一个N维参数向量表示,为了简单起见我们先只用体积参数来叙述。
这样一来,我们能够对这一一堆西瓜做一个概率分布统计,假如西瓜的体积服从高斯分布的话,就是
在这里插入图片描述
在这里插入图片描述

5:怎么最大化求参数呢?
答案就是求偏导数,对每个位置参数求偏导,偏导数为0,即可得到相应的参数值。

6:总结一下运算过程
写出似然函数,整个得根据提前设定的模型来写。
对似然函数取对数,并整理,并且期望最大化。
对每个参数求偏导数,令偏导数为 0,得到似然方程
解似然方程,得到的参数

7:极大似然的用途
之前我们再学习Logistic Regression的时候,就推导过,逻辑回归的优化函数其实就是极大似然函数的相反数,J(θ)=-H(θ),这里不再推导。

二:EM算法

1:问题描述
我们最常见的问题可能没有上述那么简单,我们这一对西瓜可能是不同品种的,也就是不同类别的,一个可能是来自新疆吐鲁番的,一个可能是来自黄土高原的,甚至是来自海南岛的,他们的类别不同,所服从的概率分布可能也不同,可能分别服从于
在这里插入图片描述

也就是说我们不能统一估计他们的概率分布,得想办法知道他们的种类,同种类同类别的次啊能遵从相同的分布。假设我们还是有一堆的西瓜X={x_1,x_2,x_3,x_…,x_n},且个数是N,但是我们只是知道它们有M个品种,但是具体哪个是哪个的品种我们无法得知。且他们分别服从各自的高斯模型分布。

2:问题引入
我们如果知道了哪个西瓜是哪个类别,那么我们就能把同类别的放在一起,利用极大似然估计进行模型估计了,这样我们就能得到同类别的分布模型,方后续的工作。

问题就是我们如何知道哪个西瓜属于哪个类别呢?我们可以根据模型计算出一个概率,比如三个类别的高斯分布下,计算处各自类别的概率,哪个概率大就最可能属于某个类别。我们都知道,高斯模型,概率越大,越接近平均值,越靠近数据分布的中心,越有可能属于这个分布对应的类别。相反概率越小,越远离数据分布的中心,可能就是越不属于这个分布对应的类别。那么就得先估计出各自模型参数来。

那么问题来了,我们需要得知模型得先直到参数,得知道参数得先搞清楚类别。

以上描述就是有一个先有鸡还是先有蛋的矛盾了,知道了类别可以估算出概率模型,知道了概率模型可以去得出样本的类别归属。

3:EM算法
为了解决上述的矛盾,EM算法提出一个类似于 k-means的算法计算流程,流程如下:
1)先给出一共有多少类别,给每个类别预先估计出各自的参数值
2)将所有样本分别利用各个类别对应的概率模型进行计算,将样本归属于概率最大的那个概率模型对应的样本类别。
3)得到一轮分类后,利用极大似然重新计算各个类别对应的模型参数。
4)重复步骤二,直到类别不再发生变化。

4:k-means
这个很像k-means算法,这里啰嗦一下,给出k-means算法的过程
1)给出一共多少个类别,预先鱼变给出几个类别的质心。
2)将所有样本分别计算与各个质心的距离,找到距离最近的质心,就归属于该质心对应的类别
3)得到一轮分类后,重新计算类别之间的质心
4)重复步骤二,直到类别不再发生变化。

5:EM算法总结
因此EM算法和k-means很相似,k-means算法通过样本之间的距离来衡量样本和各个类别的相似度,将样本归属到距离最小的质心对应的类别,EM算法则是根据各个类别的概率模型计算的概率值来衡量样本到各个类别的相似度,将样本归属到概率最大的模型对应的类别。

如果每个样本都是多维度的数据,不仅仅是一个维度的话,那么每一个维度都需要建立一个概率分布,各个维度的概率相乘,即是这个点属于该模型的概率,或者说是和该模型的相似程度。这一点在异常值检测那一篇里面有讲过。

猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/109193321