理解最大似然估计

最大似然估计是传统机器学习里最常见的一种估计,简单来说,就是利用已知的样本结果,在确定模型的基础上,反推模型的参数

前面我们讲过泊努力分布、二项分布、泊松分布,都是日常生活中常见的模型。这些分布的模型就是他的概率函数,比如泊努力分布是单次实验,所以模型就是概率p,二项分布是P(X=i) = \binom{n}{i}P^i(1-P)^{n-1},泊松分布的模型就是P(X=k) = \frac {\lambda^k} {k!} e^{-\lambda}

这里面有3个关键点:

  1. 样本已知
  2. 模型已知
  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. 确定模型函数
  2. 确定似然函数或者对数似然函数
  3. 求导
  4. 计算极值(使得似然最大的一定是在极值处)

以伯努力分布和正态分布模型为了,在已知样本数据的情况下,如何计算伯努力分布和正态分布的模型参数

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)^2

4)计算极值

当概率为0.7时,最可能产生10次抽取抽到7次正面

2. 正态分布:对数似然

假设我们现在有一堆随机样本数据,符合正态分布

X \sim N(\mu, \sigma^2), \sigma > 0

1)确定模型函数

正态分布的概率函数定义是: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)^2

4)求极值

让上述两式子 == 0,最终得到

\mu = \frac {1}{n} \sum_{i=1}^{n} x_i \sigma^2 = \frac {1}{n} \sum_{i=1}^{n} (x_i - \mu)^2

3. 总结

从上面伯努力分布和正态分布的推导过程来看

这些分布的最大似然估计其实就是样本的均值和方差

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注