广义线性模型, Generalized Linear Model
广义线性模型
来试图寻找一些常见分布的共性。
之前我们看到的线性回归,还是逻辑回归,实际上其有效性都依赖于预先假设了一个概率分布,那么,如果其他实际问题有什么概率分布(比如泊松,伽马),能不能把它们全部统一起来呢?
指数族分布
P(y;η)=b(y)exp(ηTT(y)−a(η))
称为指数族分布,这里的分号表示该概率用参数η表示,可以理解为η决定了这个分布。
T(y)被称作统计充分量,一般是y,或者是和y有关的向量。严谨的定义是包含了分布的全部信息的量。
一些练习
证明伯努利分布可以写成指数族分布
P(y;η)=ϕy(1−ϕ)1−ylnP(y;η)=ylnϕ+(1−y)ln(1−ϕ)lnP(y;η)=yln1−ϕϕ+ln(1−ϕ)P(y;η)=exp(yln1−ϕϕ+ln(1−ϕ))η=ln1−ϕϕ,ϕ=1+e−η1P(y∣x;η)=exp(ηy−ln(eη+1))T(y)=y,η=ln1−ϕϕ,b(y)=1,a(η)=ln(eη+1)
证明正态分布可以写成指数族分布
假设标准差是1
P(y;η)=2π1exp(−2(y−μ)2)=2π1exp(−2y2−2μy+μ2)=2π1exp(−2y2+μy−2μ2)=2π1exp(−2y2)exp(μy−2μ2)
故这里的η实际上就是μ
η=μT(y)=y,b(y)=2π1exp(−2y2),a(η)=2η2
构造广义线性模型(GLM)
- 假设 y∣x;θ∼expotenialfamily(η),给定了x,θ,y的分布由η决定
- 给定x,目标是要预测T(y)(一般T(y)=y),假设h(x)=E(y∣x)
- 假设η=θTx
至于为什么要做这些假设呢?首先,有一个先验的概率模型是重要的,然后,用线性来表示概率模型的参数是方便的,所以有了这种方法。
一些练习
构建逻辑回归的GLM
用上面的结果
hθ(x)=E(y∣x;θ)=ϕ=1+e−η1=1+e−θTx1
构建线性回归的GLM
用上面的结果,假设均值是0,标准差是1
hθ(x)=E(y∣x;θ)=μ=η=θTx
构建泊松分布的GLM
作业代码里有
多分类和softmax
现在用GLM的思想来建模多分类问题。
假设一共有k个类别。
借鉴逻辑回归的思想,用概率来表示ϕk=P(y=k),哪个概率最大就取哪个值。
那么借鉴逻辑回归中概率是二项分布,类似地可以写成
P(y;η)=ϕ1[y=1]ϕ2[y=2]...ϕk[y=k](i=1∑kϕi=1)lnP(y;η)=i=1∑k[y=i]lnϕi
发现不太好处理,但是指数族分布中可以将T(y),η都写成向量的形式,所以设
T(y)=0...1...0
若y=k,则第k个位置为1,其余位置都是0
瞪眼观察,取
η=lnϕ1lnϕ2...lnϕk
lnP(y;η)=ηTT(y)
是不是就可以了呢?
但是套用GLM,ηi=θiTx,也就是说此时η是自由的,不能满足概率和为1的限制。
我们换一个思路,发现所有[y=i]的和是1
lnP(y;η)=[y=k]lnϕk+i=1∑k−1[y=i]lnϕilnP(y;η)=(1−i=1∑k−1[y=i])lnϕk+i=1∑k−1[y=i]lnϕilnP(y;η)=lnϕk+i=1∑k−1[y=i]lnϕkϕi
而且实际上确定了前k−1个ϕ,就可以完全确定了,所以实际上η只需要k−1维。
那么
T(y)=0...1...0(1≤y≤k−1),T(k)=0...0...0η=lnϕkϕ1...lnϕkϕi...lnϕkϕk−1a(η)=−lnϕkb(y)=1P(y;η)=b(y)exp(ηTT(y)−a(η))
然后套用GLM,ηi=θiTx,ϕkϕi=eθiTx
规定ηk=0,θk=0
再代入
i=1∑k−1ϕk−1+ϕk=1i=1∑k−1ϕkeθiTx+ϕk=1ϕki=1∑keθiTx=1eθiTxϕii=1∑keθiTx=1ϕi=∑i=1keθiTxeθiTx
也就得到了softmax函数
然后做极大似然估计
L(θ)=i=1∏nP(y(i)∣x(i))l(θ)=i=1∑nlnP(y(i)∣x(i))l(θ)=i=1∑nlnj=1∏kϕj[y(i)=j]l(θ)=i=1∑nj=1∑k[y(i)=j]ln∑t=1keθtTx(i)eθjTx(i)
然后这里就抽象出来了一个函数,交叉熵(cross entrophy)函数,
lce((t1,t2,...,tk),y)=−ln∑i=1ketiety∂ti∂lce=−[y=i]+∑j=1ketjeti
l(θ)=i=1∑n−lce((θ1Tx(i),θ2Tx(i),...,θkTx(i)),y(i))∇θil(θ)=−j=1∑n∂θiTx(j)∂lce((θ1Tx(j),θ2Tx(j),...,θkTx(j)),y(j))∇θiθiTx(j)∇θil(θ)=−j=1∑n(−[y=i]+∑l=1keθlTx(j)eθiTx(j))x(j)∇θil(θ)=−j=1∑n(ϕi(j)−[y=i])x(j)
然后就可以梯度下降了,每次对每个θi更新。
why GLM?
核心的思想还是要线性化。
但主要还是因为良好的性质。
1
E(Y∣X)=∂η∂a(η)
考虑概率律
P(y∣x)=b(y)exp(ηTT(y)−a(η))∫P(y)dy=1∫b(y)exp(ηTT(y))dy=exp(a(η))
考虑最简单的情况,η∈R,T(y)=y
然后使用一点积分技巧
E(Y∣X)=∫yP(y)dy=exp(a(η))1∫yb(y)exp(ηTT(y))dy=exp(a(η))1∫∂η∂b(y)exp(ηy)dy=exp(a(η))1∂η∂∫b(y)exp(ηy)dy=exp(a(η))1∂η∂exp(a(η))=a′(η)=∂η∂a
2
Var(Y∣X)=∂η2∂2a(η)
考虑方差和均值的关系,还是用类似的技巧。
3
GLM是凸的。
做极大似然估计,对l(θ)求海森矩阵即可
Hj,k=∑a′′(θTx(i))xj(i)xk(i)vTHv=∑a′′(θTx(i))xj(i)xk(i)vjvk=i=1∑na′′(θTx(i))(j∑xj(i)vj)2≥0