1. 构建 GLMs
引用
假设你想构建一个模型来估计任意一小时内到达你商店的顾客数量 y (或你网站的页面浏览量),基于某些特征 x,例如:
我们知道泊松分布通常为访客数量提供了良好的模型。知道了这一点,我们如何为我们的问题构建一个模型呢?幸运的是,泊松分布是指数族分布,因此我们可以应用广义线性模型(GLM)。在本节中,我们将描述为此类问题构建 GLM 模型的方法。
更一般地,考虑一个分类或回归问题,我们希望根据 x 预测某个随机变量 y 的值。为了推导这个问题的 GLM,我们将对给定 x 和 y 的条件分布以及我们的模型做出以下三个假设:
-
y∣x;θ∼ExponentialFamily(η)
给定 x 和 θ ,y 的分布遵循某个指数族分布,其参数为 η
-
给定 x ,我们的目标是预测 T(y) 在给定 x 下的期望值
在大多数例子中,我们将有
T(y)=y
这意味着我们希望学习到的假设 h 输出的预测 h(x) 满足
h(x)=E[y∣x]
-
η=θTx (或者 η 是向量值的,则 ηi=θiTx)
η 是 x 的线性函数。
注意
假设 2 在逻辑回归和线性回归的 hθ(x) 选择中都得到了满足。
例如,对于逻辑回归:
hθ(x)=p(y=1∣x;θ)=0⋅p(y=0∣x;θ)+1⋅p(y=1∣x;θ)=E[y∣x;θ]
假设 3 可能是上述假设中最不合理的,最好将其视为我们设计 GLM 的"设计选择"而非一个假设本身。
这三个假设将使我们能够推导出一个非常优雅的学习算法类,即 GLMs,它们具有许多理想的性质,例如易于学习。
此外,得到的模型通常对于建模不同类型的 y 上的分布非常有效;例如,我们很快就会展示逻辑回归和普通最小二乘都可以被推导为 GLMs。
下面,先给出广义线性模型 GLM 的定义。
2. 广义线性模型
在机器学习的情境下,我们常见的线性回归、逻辑回归、泊松回归、二项式回归等等,都属于广义线性模型。根据维基百科,给出参考释义:
在统计学中,广义线性模型(GLM)是普通线性回归的一种灵活推广。GLM 通过允许线性模型经由链接函数与响应变量相关联,并允许每次观测的方差大小成为其预测值的函数,从而推广了线性回归。广义线性模型由约翰·内尔德和罗伯特·韦德伯恩提出,旨在统一包括线性回归、逻辑回归和泊松回归在内的多种统计模型。
解释:
- GLM 是一种推广线性模型
- 方差 σ2 与 x 有关
- 响应变量 Y 与输入变量 X 的线性组合可由连接函数建立关系
- 分布从线性回归的高斯分布假设放宽为任意指数族
在统计学的情境下,GLM 被拆为 3 个组件:
-
随机部分(Random component)
响应变量 Y 服从指数族分布,均值 μ=E[Y]
Y∼ExponentialFamily(μ,ϕ),μ 位置,ϕ 尺度
-
系统部分(Systematic component)
被称为线性预测器(linear predictor),即:
η=β⊤x=β0+β1x1+⋯+βpxp
-
连接函数(Link function)
连接 μ 和 η 的单调可微函数:
η=g(μ),μ=g−1(η)
2.1 线性预测器
在广义线性模型中,通常将 η 称为线性预测器,形如下式
η=βTx+b
使 x0=1,β0=b,将上述线性函数写成向量内积的形式:
η=βTx
2.2 连接函数
%20%7B%20.cur%20%7B%20animation%3A%20none%20%7D%20%7D%0A%20%20.cur%20%7B%20animation%3A%20blink%201s%20steps(1)%20infinite%20%7D%0A%20%20%40keyframes%20blink%20%7B%2050%25%20%7B%20opacity%3A%200%20%7D%20%7D%0A%3C%2Fstyle%3E%3Crect%20width%3D'800'%20height%3D'600'%20fill%3D'%230c0c0a'%2F%3E%3Ctext%20x%3D'400'%20y%3D'310'%20text-anchor%3D'middle'%20font-family%3D'monospace'%20font-size%3D'28'%20fill%3D'%233a3a35'%3Ecicada%40blog%3A~%24%20loading%3C%2Ftext%3E%3Crect%20class%3D'cur'%20x%3D'589'%20y%3D'282'%20width%3D'16'%20height%3D'30'%20fill%3D'%233a3a35'%2F%3E%3C%2Fsvg%3E)
如上图,我们通过输入变量 X 的线性模型去预测输出变量 Y 的值。
- 左侧:输入 X 的线性模型(即线性预测器),由参数 θ (可学习参数)参数化
- 右侧:输出 Y 所属的指数族, 我们期望得到随机变量 Y 的一个值,显然选择 Y 的期望值最符合直觉
于是,我们需要将左侧的输出 η=θTx 作为右侧的输入,最终右侧输出得到 μ=E(Y)。
简言之,我们通过学习参数 θ 以产出线性预测器 η 的结果,并将 η 作为输出 Y 所属指数族的自然参数,而该分布的均值 μ 就是预测值 y(参数 b、a、T 并没有在训练过程中参与学习,它们在我们根据任务类型进行建模时就已经确定)。
如何从 η 得到 μ 呢? 可以通过定义一个函数,将二者连接起来:
ημ=g(μ)=g−1(η)
函数 g(n) 称为连接函数(link function), 连接函数 g(n) 用于连接线性预测器 η 和均值 μ 。 连接函数的反函数 g−1(n) 可以称为响应函数(response function),或者激活函数(active function)。
连接函数本质上,就是把实数域范围的 η 转换到特定分布合法的 μ 值空间上。 这一点在初识指数族时就已经悄露端倪了。
3. 示例
3.1 普通线性回归
对于最基础的线性回归模型,它假设响应变量 Y 服从高斯分布,并且所有样本都具有相同的方差,即 σ2=1 。见上一节中对高斯分布指数族形式的推导,可知:
η=μ
因而,在普通线性回归中,连接函数采用的是恒等函数,即
hθ(x)=E[y∣x;θ]=μ=η=θ⊤x
3.2 逻辑回归
对于逻辑回归模型,它假设响应变量 Y 服从伯努利分布。见上一节中对伯努利分布指数族形式的推导,可知:
η=log1−μμ
因而,在逻辑回归中,连接函数采用的是Logit函数,响应函数(g 的反函数)是Sigmoid函数,即
μ=1+e−η1=1+e−θ⊤x1
hθ(x)=E[y∣x;θ]=μ=1+e−θ⊤x1
逻辑回归的例子很好地体现了连接函数的作用:
- 连接函数(Logit函数):把概率 μ (0 ~ 1) 映射到自然参数 η 的实数域 R
- 响应函数(Sigmoid函数):把自然参数 η 的实数域 R 压缩到概率 μ (0 ~ 1)
3.3 Softmax 回归
考虑一个分类问题,其中响应变量 y 可以取 k 个值中的任意一个,因此 y∈{1,2,…,k}。例如,我们可能不是将电子邮件分为垃圾邮件或非垃圾邮件两类(这本来是一个二元分类问题),而是将其分为三类,如垃圾邮件、个人邮件和工作邮件。
响应变量仍然是离散的,但现在可以取两个以上的值。因此,我们将其建模为服从多项分布。 让我们推导一个用于建模这种多项数据的 GLM。为此,我们首先将多项分布表示为指数族分布。
为了参数化一个具有 k 种可能结果的多项分布,我们可以使用 k 个参数 ϕ1,…,ϕk 来指定每个结果的概率。然而,这些参数并不是独立的(因为知道任意 k−1 个 ϕi 就能唯一确定最后一个,因为它们必须满足 ∑i=1kϕi=1)。因此,我们将只用 k−1 个参数 ϕ1,…,ϕk−1 来参数化多项分布,其中
ϕi=p(y=i;ϕ),且 p(y=k;ϕ)=1−i=1∑k−1ϕi
为了符号方便,我们也令 ϕk=1−∑i=1k−1ϕi ,但应记住这不是一个参数,它完全由 ϕ1,…,ϕk−1 决定。
为了将多项分布表示为指数族分布,我们定义 T(y)∈Rk−1 如下:
T(1)=100⋮0,T(2)=010⋮0,T(3)=001⋮0,…,T(k−1)=000⋮1,T(k)=000⋮0
与我们之前的例子不同,这里 T(y)=y 。现在的 T(y) 是一个 k−1 维向量,而不是一个实数。我们将用 (T(y))i 表示向量 T(y) 的第 i 个元素。
我们引入另一个非常有用的符号。
指示函数 1{⋅} 在其参数为真时取值为 1,否则为 0。
例如,1{2=3}=0,1{3=5−2}=1。
因此,我们也可以将 T(y) 与 y 之间的关系写为 (T(y))i=1{y=i}。
进一步,我们有 E[(T(y))i]=P(y=i)=ϕi。
于是有:
p(y;ϕ)=ϕ11{y=1}ϕ21{y=2}⋯ϕk1{y=k}=ϕ11{y=1}ϕ21{y=2}⋯ϕk1−∑i=1k−11{y=i}=ϕ1(T(y))1ϕ2(T(y))2⋯ϕk1−∑i=1k−1(T(y))i=exp((T(y))1log(ϕ1/ϕk)+(T(y))2log(ϕ2/ϕk)+⋯+(T(y))k−1log(ϕk−1/ϕk)+log(ϕk))=b(y)exp(ηTT(y)−a(η))
可见:
η=log(ϕ1/ϕk)log(ϕ2/ϕk)⋮log(ϕk−1/ϕk),a(η)=−log(ϕk),b(y)=1
至此,连接函数由下式给出(对 i=1,…,k):
ηi=logϕkϕi
为方便起见,我们还定义了 ηk=log(ϕk/ϕk)=0 。
为了反转连接函数并推导响应函数,我们有:
eηi=ϕkϕi⇒ϕi=ϕkeηi
上式中 ϕk 需要被表示后再代回,已知 ∑i=1kϕi=1 ,所以
ϕki=1∑keηi=1⇒ϕk=1/i=1∑keηi
代回 ϕk 并求连接函数的反函数,得响应函数:
ϕi=∑j=1keηjeηi
这个将 η 映射到 ϕ 的函数称为 Softmax 函数。
为完成我们的模型,我们使用之前给出的假设 3,即 ηi 与 x 线性相关。因此,令 ηi=θiTx (对 i=1,…,k−1),其中 θ1,…,θk−1∈Rd+1 是我们模型的参数。为方便符号,我们也定义 θk=0 ,使得 ηk=θkTx=0。
因此,我们的模型假设给定 x 的 y 的条件分布由下式给出:
p(y=i∣x;θ)=ϕi=∑j=1keηjeηi=∑j=1keθjTxeθiTx
这个适用于 y∈{1,…,k} 的分类问题的模型称为 Softmax 回归,它是逻辑回归的推广。
我们最终得到假设:
hθ(x)=E[T(y)∣x;θ]=ϕ1ϕ2⋮ϕk−1=∑j=1kexp(θjTx)exp(θ1Tx)∑j=1kexp(θjTx)exp(θ2Tx)⋮∑j=1kexp(θjTx)exp(θk−1Tx)
换句话说,我们的假设将输出对每个 i=1,…,k 的估计概率 p(y=i∣x;θ)(第 k 维可推出)。
4. 规范链接
当自然参数直接等于线性预测器(η=θTx)时,响应函数 g(η)=E[T(y);η] 称为 canonical response function,其逆 g−1 称为 canonical link function。
等价表述:规范链接 g(μ) 满足 g(μ)=θ(自然参数)。
以上示例中使用的都是规范链接,即连接函数都是由对应分布的指数族推导而来,倘若把逻辑回归中的 logit 函数换成其他的连接函数,就不再是 canonical link function 了,并且可能引入其他的复杂度。
参考
CS229 课程讲义
https://cs229.stanford.edu/main_notes.pdf
- https://aman.ai/cs229/glm/#the-exponential-family
广义线性模型 - 张振虎的博客
https://www.zhangzhenhu.com/glm/source/%E5%B9%BF%E4%B9%89%E7%BA%BF%E6%80%A7%E6%A8%A1%E5%9E%8B/content.html#id6
广义线性模型 - 维基百科
https://en.wikipedia.org/wiki/Generalized_linear_model