广义线性模型的理解
世界中(大部分的)各种现象背后,都存在着可以解释这些现象的规律。机器学习要做的,就是通过训练模型,发现数据背后隐藏的规律,从而对新的数据做出合理的判断。
虽然机器学习能够自动地帮我们完成很多事情(比如训练模型的参数),但有一些基本的事情还是需要我们自己完成的,例如概率分布模型的选择。比如我们需要判断一封邮件是否为垃圾邮件,由于这是一个二分类问题,在众多概率分布模型之中,伯努利分布($P(y=1)=\phi$,$P(y=0)=1-\phi$ 的分布)似乎是一个较好的选择。
但还有一个问题需要解决:$\phi$ 和特征 $X$ 以及模型参数 $\theta$ 之间的关系是什么。我们可以取 $\phi = X^T\theta$ (虽然这样看起来就非常不合理,因为 $\phi$ 的取值可能会超出 0 ~ 1),可以取 $\phi = \begin{cases} 1 & (X^T\theta \ge 0) \\ 0 & (X^T\theta < 0) \end{cases}$ ,还可以有很多很多种选择。
广义线性模型就是众多选择中的一种,它为 $\phi$、$X$ 与 $\theta$ 之间的关系问题提供了一个合理(?)的解决方案(虽然我并不知道广义线性模型比起其它模型有哪些优势- -)。广义线性模型为各个变量之间的关系做出了以下三个限定:
1. 问题的概率模型属于指数族分布;
(exponential family,该分布要求给定参数 $\eta$ 的情况下,$y$ 的概率分布 $p(y;\eta) = b(y)\text{exp}(\eta^TT(y)-a(\eta))$)
2. 指数族分布公式中的 $\eta = X^T\theta$;
3. 模型需要输出给定 $X$ 和 $\theta$ 的情况下,$T(y)$ 的期望。
这样,我们只需要将我们选择的概率分布写成指数族分布的形式,就能求出 $T(y)$ 的期望与 $\eta$ 的关系,再由第 2 个限定就能得出模型的输出值与 $X$ 和 $\theta$ 的关系。
我们将伯努利分布写成指数族分布的形式,看看能发现什么。首先,伯努利分布的概率分布:$$p(y) = \phi^y(1-\phi)^{1-y}$$ 为了得到 exp 的形式,我们对式子取对数再取指数:$$p(y) = \text{exp}(y\text{log}(\phi) + (1-y)\text{log}(1-\phi)) = \text{exp}(y\text{log}(\frac{\phi}{1-\phi})+\text{log}(1-\phi))$$ 我们就能发现指数族分布的形式 $$T(y)=y$$ $$b(y)=1$$ $$\eta = \text{log}(\frac{\phi}{1-\phi})$$ $$a(\eta)=-\text{log}(1-\phi)$$ 移项有 $$\phi=\frac{e^\eta}{1+e^\eta}=\frac{1}{1+e^{-\eta}}$$ 根据伯努利分布的定义,我们有 $$E(T(y)) = E(y) = 0\times P(y=0) + 1\times P(y=1)$$ $$= \phi = \frac{1}{1+e^{-\eta}}$$ 再利用第 2 条限定有 $$E(y) = \frac{1}{1+e^{-X^T\theta}}$$ 我们发现,这个模型要输出的结果,就是 sigmoid 函数。这也是 logistic regression 中 sigmoid 函数的推导过程。也就是说,使用了 logistic regression,我们就需要假定数据符合属于指数族分布的伯努利分布。