最大似然估计是传统机器学习里最常见的一种估计,简单来说,就是利用已知的样本结果,在确定模型的基础上,反推模型的参数
前面我们讲过泊努力分布、二项分布、泊松分布,都是日常生活中常见的模型。这些分布的模型就是他的概率函数,比如泊努力分布是单次实验,所以模型就是概率p,二项分布是P(X=i) = \binom{n}{i}P^i(1-P)^{n-1},泊松分布的模型就是P(X=k) = \frac {\lambda^k} {k!} e^{-\lambda}
这里面有3个关键点:
- 样本已知
- 模型已知
- 每个样本都是一次完全独立事件的结果
考虑一组含有m个样本的数据集X={x^(1),x^(2),...,x^(m)},独立地由未知的真实数据生成分布p_{data(x)}生成
令p_{model(x)}是一族由确定在相同空间上的概率分布。换言之,p_{model(x)}将任意输入x映射到实数来估计真实概率p_{data(x)}
对\theta的最大似然估计被定义为:
\theta_{ML} = \mathop{\arg\min}_{\theta} p_{model}(X;\theta) \\ = \mathop{\arg\min}_{\theta} \prod_{i=1}^{m} p_{model}(x^{i}; \theta)这就是最大似然估计的定义,但是通常不会直接这么算,因为计算过程中很容易会出现下益(比如某个概率为0,会导致整个计算异常),所以一般转换成求和运算,也就是对数似然
\theta_{ML} = \mathop{\arg\min}_{\theta} \sum_{i=1}^{m} ln p_{model}(x^{i}; \theta)所以\theta参数的取值就是使得对数似然计算最大的值
所以求解最大似然估计的过程无非就是:
- 确定模型函数
- 确定似然函数或者对数似然函数
- 求导
- 计算极值(使得似然最大的一定是在极值处)
以伯努力分布和正态分布模型为了,在已知样本数据的情况下,如何计算伯努力分布和正态分布的模型参数
1. 伯努力分布:抛硬币
注意这里的硬币不是我们通常所说硬币,只有正反面,正面反面的概率都是0.5
我们这里的硬币也是只有正反两面,但是由于硬币表面不规则,导致产生正面的概率不完全等同于反面,我们就假设正面硬币产生的概率是p
样本数据:有10次抽样,7次正面,3次反面
求问:抛出该硬币得到正面的最有可能的概率是什么?(注:别上来就条件反射蹦0.7)
1)确定模型函数
伯努力分布的概率函数是:P(x) = \left\{\begin{matrix} & p,x == 1 \\ & (1-p), x == 0 \end{matrix}\right.
2)确定似然函数
\theta_{ML} = \mathop{\arg\min}_{\theta} \theta^7(1-\theta)^3这种场景比较简单,所以我们并没有用对数似然,直接用似然函数
3)求导
两个相乘的函数求导公式如下:(f(x)g(x))' = f'(x)g(x) + f(x)g'(x)
\theta^7(1-\theta)^3 = 7\theta^6(1-\theta)^3 - 3\theta^7(1-\theta)^24)计算极值
当概率为0.7时,最可能产生10次抽取抽到7次正面
2. 正态分布:对数似然
假设我们现在有一堆随机样本数据,符合正态分布
X \sim N(\mu, \sigma^2), \sigma > 01)确定模型函数
正态分布的概率函数定义是:f(x) = \frac {1}{\sqrt{2\pi}\sigma} exp(-\frac {(x - \mu)^2}{2\sigma^2})
2)确定似然函数
正态分布的似然函数推导是比较复杂的,正态分布本身就比较复杂,而且有两个参数
ML(\mu,\sigma^2) = \prod_{i=1}^{n} f(x_i;\mu,\sigma^2) = \prod_{i=1}^{n} \frac {1}{\sqrt{2\pi}\sigma} exp(-\frac {(x_i - \mu)^2}{2\sigma^2}) = (\frac {1}{\sqrt{2\pi}\sigma})^n exp(\sum_{i=1}^{n} -\frac {(x_i - \mu)^2}{2\sigma^2})这个看起来有点复杂,我们看下对数似然,两边分别取对数,有兴趣的同学可以继续推导,上述公式最终会简化为:
Ln_{ML}(\mu,\sigma^2) = -\frac {n}{2} ln2\pi - -\frac {n}{2} ln2\sigma^2 - \frac {1}{2\sigma^2} \sum_{i=1}^{n}(x_i - \mu)^2这就是正态分布的对数似然函数
3)求导
在正态分布模型里面,有两个参数\mu,\sigma^2,求导怎么处理?还记得大学学过的偏导不?求单个变量的极限值可以用偏导数
对\mu求偏导,得到
\frac {\partial lnML}{\partial \mu} = \frac {1}{\sigma^2}\sum_{i=1}^{n}(x_i-\mu)对\sigma^2求偏导,得到
\frac {\partial lnML}{\partial \sigma^2} = -\frac {n}{2\sigma^2} + \frac {1}{2\sigma^4}\sum_{i=1}^{n}(x_i-\mu)^24)求极值
让上述两式子 == 0,最终得到
\mu = \frac {1}{n} \sum_{i=1}^{n} x_i \sigma^2 = \frac {1}{n} \sum_{i=1}^{n} (x_i - \mu)^23. 总结
从上面伯努力分布和正态分布的推导过程来看
这些分布的最大似然估计其实就是样本的均值和方差