ML1-8 构建广义线性模型

· Tech

1. 构建 GLMs

引用

假设你想构建一个模型来估计任意一小时内到达你商店的顾客数量 yy (或你网站的页面浏览量),基于某些特征 xx,例如:

  • 商店促销活动
  • 最近的广告
  • 天气
  • 星期等

我们知道泊松分布通常为访客数量提供了良好的模型。知道了这一点,我们如何为我们的问题构建一个模型呢?幸运的是,泊松分布是指数族分布,因此我们可以应用广义线性模型(GLM)。在本节中,我们将描述为此类问题构建 GLM 模型的方法。

更一般地,考虑一个分类或回归问题,我们希望根据 xx 预测某个随机变量 yy 的值。为了推导这个问题的 GLM,我们将对给定 xxyy 的条件分布以及我们的模型做出以下三个假设:

  1. yx;θExponentialFamily(η)y | x; \theta \sim \text{ExponentialFamily}(\eta)
    给定 xxθ\thetayy 的分布遵循某个指数族分布,其参数为 η\eta

  2. 给定 xx ,我们的目标是预测 T(y)T(y) 在给定 xx 下的期望值
    在大多数例子中,我们将有

    T(y)=yT(y) = y

    这意味着我们希望学习到的假设 hh 输出的预测 h(x)h(x) 满足

    h(x)=E[yx]h(x) = \mathbb{E}[y|x]

  3. η=θTx\eta = \theta^T x (或者 η\eta 是向量值的,则 ηi=θiTx\eta_i = \theta_i^T x
    η\etaxx线性函数。

注意

假设 2 在逻辑回归和线性回归的 hθ(x)h_\theta(x) 选择中都得到了满足。
例如,对于逻辑回归:

hθ(x)=p(y=1x;θ)=0p(y=0x;θ)+1p(y=1x;θ)=E[yx;θ]h_\theta(x) = p(y=1|x;\theta) = 0 \cdot p(y=0|x;\theta) + 1 \cdot p(y=1|x;\theta) = \mathbb{E}[y|x;\theta]

假设 3 可能是上述假设中最不合理的,最好将其视为我们设计 GLM 的"设计选择"而非一个假设本身。

这三个假设将使我们能够推导出一个非常优雅的学习算法类,即 GLMs,它们具有许多理想的性质,例如易于学习。

此外,得到的模型通常对于建模不同类型的 yy 上的分布非常有效;例如,我们很快就会展示逻辑回归和普通最小二乘都可以被推导为 GLMs。

下面,先给出广义线性模型 GLM 的定义。

2. 广义线性模型

机器学习的情境下,我们常见的线性回归、逻辑回归、泊松回归、二项式回归等等,都属于广义线性模型。根据维基百科,给出参考释义:

在统计学中,广义线性模型(GLM)是普通线性回归的一种灵活推广。GLM 通过允许线性模型经由链接函数与响应变量相关联,并允许每次观测的方差大小成为其预测值的函数,从而推广了线性回归。广义线性模型由约翰·内尔德和罗伯特·韦德伯恩提出,旨在统一包括线性回归、逻辑回归和泊松回归在内的多种统计模型。

解释:

  • GLM 是一种推广线性模型
  • 方差 σ2\sigma^2xx 有关
  • 响应变量 YY 与输入变量 XX 的线性组合可由连接函数建立关系
  • 分布从线性回归的高斯分布假设放宽为任意指数族

统计学的情境下,GLM 被拆为 3 个组件:

  • 随机部分(Random component)
    响应变量 YY 服从指数族分布,均值 μ=E[Y]μ = E[Y]
    YExponentialFamily(μ,ϕ)Y \sim \text{ExponentialFamily}(\mu, \phi)μ\mu 位置,ϕ\phi 尺度

  • 系统部分(Systematic component)
    被称为线性预测器(linear predictor),即:
    η=βx=β0+β1x1++βpxp\eta = \beta^\top x = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p

  • 连接函数(Link function)
    连接 μ\muη\eta 的单调可微函数:
    η=g(μ),μ=g1(η)\eta = g(\mu), \quad \mu = g^{-1}(\eta)

2.1 线性预测器

在广义线性模型中,通常将 η\eta 称为线性预测器,形如下式

η=βTx+b\eta = \beta^T x + b

使 x0=1,β0=bx_0 = 1, \beta_0 = b,将上述线性函数写成向量内积的形式:

η=βTx\eta = \beta^T x

2.2 连接函数

如上图,我们通过输入变量 XX 的线性模型去预测输出变量 YY 的值。

  • 左侧:输入 XX线性模型(即线性预测器),由参数 θ\theta (可学习参数)参数化
  • 右侧:输出 YY 所属的指数族, 我们期望得到随机变量 YY 的一个值,显然选择 YY期望值最符合直觉

于是,我们需要将左侧的输出 η=θTx\eta = \theta^T x 作为右侧的输入,最终右侧输出得到 μ=E(Y)\mu = E(Y)

简言之,我们通过学习参数 θ\theta 以产出线性预测器 η\eta 的结果,并将 η\eta 作为输出 YY 所属指数族的自然参数,而该分布的均值 μ\mu 就是预测值 yy(参数 baTb、 a、 T 并没有在训练过程中参与学习,它们在我们根据任务类型进行建模时就已经确定)。

如何从 η\eta 得到 μ\mu 呢? 可以通过定义一个函数,将二者连接起来:

η=g(μ)μ=g1(η)\begin{align*} \eta &= g(\mu) \\ \mu &= g^{-1}(\eta) \end{align*}

函数 g(n)g(n) 称为连接函数(link function), 连接函数 g(n)g(n) 用于连接线性预测器 η\eta 和均值 μ\mu 。 连接函数的反函数 g1(n)g^{-1}(n) 可以称为响应函数(response function),或者激活函数(active function)

连接函数本质上,就是把实数域范围的 η\eta 转换到特定分布合法的 μ\mu 值空间上。 这一点在初识指数族时就已经悄露端倪了。

3. 示例

3.1 普通线性回归

对于最基础的线性回归模型,它假设响应变量 YY 服从高斯分布,并且所有样本都具有相同的方差,即 σ2=1\sigma^2 = 1 。见上一节中对高斯分布指数族形式的推导,可知:

η=μ\eta = \mu

因而,在普通线性回归中,连接函数采用的是恒等函数,即

hθ(x)=E[yx;θ]=μ=η=θxh_\theta(x) = \mathbb{E}[y \mid x;\theta] = \mu = \eta = \theta^\top x

3.2 逻辑回归

对于逻辑回归模型,它假设响应变量 YY 服从伯努利分布。见上一节中对伯努利分布指数族形式的推导,可知:

η=logμ1μ\eta = \log\frac{\mu}{1 - \mu}

因而,在逻辑回归中,连接函数采用的是Logit函数,响应函数(gg 的反函数)是Sigmoid函数,即

μ=11+eη=11+eθx\mu = \frac{1}{1+e^{-\eta}} = \frac{1}{1+e^{-\theta^\top x}}

hθ(x)=E[yx;θ]=μ=11+eθxh_\theta(x) = \mathbb{E}[y \mid x;\theta] = \mu = \frac{1}{1+e^{-\theta^\top x}}

逻辑回归的例子很好地体现了连接函数的作用:

  • 连接函数(Logit函数):把概率 μ\mu (0 ~ 1) 映射到自然参数 η\eta 的实数域 R\mathbb{R}
  • 响应函数(Sigmoid函数):把自然参数 η\eta 的实数域 R\mathbb{R} 压缩到概率 μ\mu (0 ~ 1)

3.3 Softmax 回归

考虑一个分类问题,其中响应变量 yy 可以取 kk 个值中的任意一个,因此 y{1,2,,k}y\in\{1,2,\dots,k\}。例如,我们可能不是将电子邮件分为垃圾邮件或非垃圾邮件两类(这本来是一个二元分类问题),而是将其分为三类,如垃圾邮件、个人邮件和工作邮件。

响应变量仍然是离散的,但现在可以取两个以上的值。因此,我们将其建模为服从多项分布。 让我们推导一个用于建模这种多项数据的 GLM。为此,我们首先将多项分布表示为指数族分布。

为了参数化一个具有 kk 种可能结果的多项分布,我们可以使用 kk 个参数 ϕ1,,ϕk\phi_1, \ldots, \phi_k 来指定每个结果的概率。然而,这些参数并不是独立的(因为知道任意 k1k-1ϕi\phi_i 就能唯一确定最后一个,因为它们必须满足 i=1kϕi=1\sum_{i=1}^k \phi_i = 1)。因此,我们将只用 k1k-1 个参数 ϕ1,,ϕk1\phi_1, \ldots, \phi_{k-1} 来参数化多项分布,其中

ϕi=p(y=i;ϕ),且 p(y=k;ϕ)=1i=1k1ϕi\phi_i = p(y = i; \phi) \text{,且 } p(y = k; \phi) = 1 - \sum_{i=1}^{k-1} \phi_i

为了符号方便,我们也令 ϕk=1i=1k1ϕi\phi_k = 1 - \sum_{i=1}^{k-1} \phi_i ,但应记住这不是一个参数,它完全由 ϕ1,,ϕk1\phi_1, \ldots, \phi_{k-1} 决定。

为了将多项分布表示为指数族分布,我们定义 T(y)Rk1T(y) \in \mathbb{R}^{k-1} 如下:

T(1)=[1000],  T(2)=[0100],  T(3)=[0010],  ,  T(k1)=[0001],  T(k)=[0000]T(1) = \begin{bmatrix}1\\0\\0\\\vdots\\0\end{bmatrix},\; T(2) = \begin{bmatrix}0\\1\\0\\\vdots\\0\end{bmatrix},\; T(3) = \begin{bmatrix}0\\0\\1\\\vdots\\0\end{bmatrix},\; \ldots,\; T(k-1) = \begin{bmatrix}0\\0\\0\\\vdots\\1\end{bmatrix},\; T(k) = \begin{bmatrix}0\\0\\0\\\vdots\\0\end{bmatrix}

与我们之前的例子不同,这里 T(y)yT(y) \neq y 。现在的 T(y)T(y) 是一个 k1k - 1 维向量,而不是一个实数。我们将用 (T(y))i(T(y))_i 表示向量 T(y)T(y) 的第 ii 个元素。

我们引入另一个非常有用的符号。
指示函数 1{}1\{\cdot\} 在其参数为真时取值为 11,否则为 00
例如,1{2=3}=01\{2=3\}=01{3=52}=11\{3=5-2\}=1

因此,我们也可以将 T(y)T(y)yy 之间的关系写为 (T(y))i=1{y=i}(T(y))_i = 1\{y=i\}
进一步,我们有 E[(T(y))i]=P(y=i)=ϕi\mathbb{E}\left[(T(y))_i\right] = P(y=i) = \phi_i

于是有:

p(y;ϕ)=ϕ11{y=1}ϕ21{y=2}ϕk1{y=k}=ϕ11{y=1}ϕ21{y=2}ϕk1i=1k11{y=i}=ϕ1(T(y))1ϕ2(T(y))2ϕk1i=1k1(T(y))i=exp((T(y))1log(ϕ1/ϕk)+(T(y))2log(ϕ2/ϕk)++(T(y))k1log(ϕk1/ϕk)+log(ϕk))=b(y)exp(ηTT(y)a(η))\begin{aligned}p(y; \phi) &= \phi_1^{1\{y=1\}} \phi_2^{1\{y=2\}} \cdots \phi_k^{1\{y=k\}} \\&= \phi_1^{1\{y=1\}} \phi_2^{1\{y=2\}} \cdots \phi_k^{1 - \sum_{i=1}^{k-1} 1\{y=i\}} \\&= \phi_1^{(T(y))_1} \phi_2^{(T(y))_2} \cdots \phi_k^{1 - \sum_{i=1}^{k-1} (T(y))_i} \\&= \exp\left( (T(y))_1 \log(\phi_1/\phi_k) + (T(y))_2 \log(\phi_2/\phi_k) + \cdots + (T(y))_{k-1} \log(\phi_{k-1}/\phi_k) + \log(\phi_k) \right) \\&= b(y) \exp(\eta^T T(y) - a(\eta))\end{aligned}

可见:

η=[log(ϕ1/ϕk)log(ϕ2/ϕk)log(ϕk1/ϕk)],a(η)=log(ϕk),b(y)=1\eta = \begin{bmatrix} \log(\phi_1/\phi_k) \\ \log(\phi_2/\phi_k) \\ \vdots \\ \log(\phi_{k-1}/\phi_k) \end{bmatrix},\quad a(\eta) = -\log(\phi_k),\quad b(y) = 1

至此,连接函数由下式给出(对 i=1,,ki = 1, \ldots, k):

ηi=logϕiϕk\eta_i = \log \frac{\phi_i}{\phi_k}

为方便起见,我们还定义了 ηk=log(ϕk/ϕk)=0\eta_k = \log(\phi_k/\phi_k) = 0

为了反转连接函数并推导响应函数,我们有:

eηi=ϕiϕkϕi=ϕkeηie^{\eta_i} = \frac{\phi_i}{\phi_k} \quad \Rightarrow \quad \phi_i = \phi_k e^{\eta_i}

上式中 ϕk\phi_k 需要被表示后再代回,已知 i=1kϕi=1\sum_{i=1}^k \phi_i = 1 ,所以

ϕki=1keηi=1ϕk=1/i=1keηi\phi_k \sum_{i=1}^k e^{\eta_i} = 1 \quad \Rightarrow \quad \phi_k = 1 / \sum_{i=1}^k e^{\eta_i}

代回 ϕk\phi_k 并求连接函数的反函数,得响应函数:

ϕi=eηij=1keηj\phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^k e^{\eta_j}}

这个将 η\eta 映射到 ϕ\phi 的函数称为 Softmax 函数

为完成我们的模型,我们使用之前给出的假设 3,即 ηi\eta_ixx 线性相关。因此,令 ηi=θiTx\eta_i = \theta_i^T x (对 i=1,,k1i = 1, \ldots, k-1),其中 θ1,,θk1Rd+1\theta_1, \ldots, \theta_{k-1} \in \mathbb{R}^{d+1} 是我们模型的参数。为方便符号,我们也定义 θk=0\theta_k = 0 ,使得 ηk=θkTx=0\eta_k = \theta_k^T x = 0

因此,我们的模型假设给定 xxyy 的条件分布由下式给出:

p(y=ix;θ)=ϕi=eηij=1keηj=eθiTxj=1keθjTxp(y = i | x; \theta) = \phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^k e^{\eta_j}} = \frac{e^{\theta_i^T x}}{\sum_{j=1}^k e^{\theta_j^T x}}

这个适用于 y{1,,k}y \in \{1, \ldots, k\} 的分类问题的模型称为 Softmax 回归,它是逻辑回归的推广。

我们最终得到假设:

hθ(x)=E[T(y)x;θ]=[ϕ1ϕ2ϕk1]=[exp(θ1Tx)j=1kexp(θjTx)exp(θ2Tx)j=1kexp(θjTx)exp(θk1Tx)j=1kexp(θjTx)]h_\theta(x) = \mathbb{E}[T(y)|x; \theta] = \begin{bmatrix}\phi_1 \\ \phi_2 \\ \vdots \\ \phi_{k-1}\end{bmatrix}= \begin{bmatrix}\frac{\exp(\theta_1^T x)}{\sum_{j=1}^k \exp(\theta_j^T x)} \\\frac{\exp(\theta_2^T x)}{\sum_{j=1}^k \exp(\theta_j^T x)} \\\vdots \\\frac{\exp(\theta_{k-1}^T x)}{\sum_{j=1}^k \exp(\theta_j^T x)}\end{bmatrix}

换句话说,我们的假设将输出对每个 i=1,,ki = 1, \ldots, k 的估计概率 p(y=ix;θ)p(y = i | x; \theta)(第 kk 维可推出)。

4. 规范链接

当自然参数直接等于线性预测器(η=θTxη = θ^Tx)时,响应函数 g(η)=E[T(y);η]g(η)=E[T(y);η] 称为 canonical response function,其逆 g1g^{-1} 称为 canonical link function

等价表述:规范链接 g(μ)g(μ) 满足 g(μ)=θg(μ) = θ(自然参数)。

以上示例中使用的都是规范链接,即连接函数都是由对应分布的指数族推导而来,倘若把逻辑回归中的 logit 函数换成其他的连接函数,就不再是 canonical link function 了,并且可能引入其他的复杂度。

参考

  1. CS229 课程讲义

    https://cs229.stanford.edu/main_notes.pdf

  2. https://aman.ai/cs229/glm/#the-exponential-family
  3. 广义线性模型 - 张振虎的博客

    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

  4. 广义线性模型 - 维基百科

    https://en.wikipedia.org/wiki/Generalized_linear_model

cicada@blog:~