广义线性模型的理解

http://www.cnblogs.com/tsreaper/p/glm.html

世界中(大部分的)各种现象背后,都存在着可以解释这些现象的规律。机器学习要做的,就是通过训练模型,发现数据背后隐藏的规律,从而对新的数据做出合理的判断。

虽然机器学习能够自动地帮我们完成很多事情(比如训练模型的参数),但有一些基本的事情还是需要我们自己完成的,例如概率分布模型的选择。比如我们需要判断一封邮件是否为垃圾邮件,由于这是一个二分类问题,在众多概率分布模型之中,伯努利分布(P(y=1)=ϕ,P(y=0)=1−ϕ 的分布)似乎是一个较好的选择。

但还有一个问题需要解决:ϕ 和特征 X 以及模型参数 θ 之间的关系是什么。我们可以取 ϕ=XTθ (虽然这样看起来就非常不合理,因为 ϕ 的取值可能会超出 0 ~ 1),可以取 ϕ={10(XTθ≥0)(XTθ<0) ,还可以有很多很多种选择。

广义线性模型就是众多选择中的一种,它为 ϕ、X 与 θ 之间的关系问题提供了一个合理(?)的解决方案(虽然我并不知道广义线性模型比起其它模型有哪些优势- -)。广义线性模型为各个变量之间的关系做出了以下三个限定:

1. 问题的概率模型属于指数族分布;

(exponential family,该分布要求给定参数 η 的情况下,y 的概率分布 p(y;η)=b(y)exp(ηTT(y)−a(η)))

2. 指数族分布公式中的 η=XTθ;

3. 模型需要输出给定 X 和 θ 的情况下,T(y) 的期望。

这样,我们只需要将我们选择的概率分布写成指数族分布的形式,就能求出 T(y) 的期望与 η 的关系,再由第 2 个限定就能得出模型的输出值与 X 和 θ 的关系。

我们将伯努利分布写成指数族分布的形式,看看能发现什么。首先,伯努利分布的概率分布:

p(y)=ϕy(1−ϕ)1−y

为了得到 exp 的形式,我们对式子取对数再取指数:

p(y)=exp(ylog(ϕ)+(1−y)log(1−ϕ))=exp(ylog(ϕ1−ϕ)+log(1−ϕ))

我们就能发现指数族分布的形式

T(y)=y

b(y)=1

η=log(ϕ1−ϕ)

a(η)=−log(1−ϕ)

移项有

ϕ=eη1+eη=11+e−η

根据伯努利分布的定义,我们有

E(T(y))=E(y)=0×P(y=0)+1×P(y=1)

=ϕ=11+e−η

再利用第 2 条限定有

E(y)=11+e−XTθ

我们发现,这个模型要输出的结果,就是 sigmoid 函数。这也是 logistic regression 中 sigmoid 函数的推导过程。也就是说,使用了 logistic regression,我们就需要假定数据符合属于指数族分布的伯努利分布。

猜你喜欢

转载自blog.csdn.net/QFire/article/details/84852342