假设你想要建立一个模型,根据某特征\(x\),例如商品促销活动,近期广告,天气等来预测给定时间内顾客到达商场的数量\(y\),我们知道泊松分布可以很好的描述这个问题。那么我们怎样来建立这个问题的回归模型呢?幸运的是泊松分布是指数族分布,所以我们可以使用广义线性回归模型(GLM),本文将介绍广义线性模型来解决这个问题。

更一般的,在考虑回归和分类问题,我们需要考虑在特征\(x\)下\(y\)的值,为了导出\(GLM\)模型,我们将会给出3个假设:

  1. \(y|x;\theta \sim ExponentialFamily(η)\),给出定\(\theta\),\(y|x\)服从指数族分布,并以\(\eta\)为参数
  2. 给定\(x\),我们的目标是预测\(T(y)\)的期望值,在大多数例子里,我们有\(T(y)=y\),这就意味着我们学习的输出\(h(x)=E[y|x]\)。例如在逻辑回归中,我们有\(h_\theta(x)=p(y=0|x) \cdot 0+p(y=1|x) \cdot 1=E[y|x;\theta]\).
  3. 参数\(\eta\)与输入\(x\)是线性关系\(\eta = \theta^Tx\)(如果\(\eta\)是一个向量,则\(\eta_i=\theta^Tx\)).

上面第三条不像一个假设,更像一个约定,可以认为是“设计的假设”。这三个假设能让我们推出\(GLM\)模型,具这个模型有许多不错的特性,例如易于学习等。我们很快会发现,逻辑回归和最小二乘模型都可以作为\(GLM\)推导出来。

一、指数分布族介绍

指数分布族是指可以表示为指数形式的概率分布。指数分布的形式如下:

\[p(y;\eta)=b(y)\exp\{\eta^TT(y)-a(\eta)\} \]

其中\(\eta\)是自然参数(natrue parameter),\(T(y)\)是充分统计量,一般情况下\(T(y)=y\),当\(a,b,T\)确定时,上式就定义了一个以\(\eta\)为参数的函数族。下面讨论将伯努力分布和高斯分布化为指数分布形式。

伯努力分布是对\(0,1\)问题进行建模的,设\(y \sim Bernoulli(\phi)\),即

\[p(y=1;\phi)=\phi \quad\quad\\ p(y=0;\phi)=1-\phi \]

我们可以得到

\[p(y;\phi)=\phi^y(1-\phi)^{1-y}=\exp\{y\;ln\phi+(1-y)ln(1-\phi)\}\\ =exp\{ y\ln(\frac{\phi}{1-\phi}) +ln(1-\phi)\} \]

其中

\[T(y)=y \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ \eta =ln(\frac{\phi}{1-\phi}) \Longrightarrow \phi=\frac{1}{1+e^{-\eta}}\\ a=-ln(1-\phi) =ln(1+e^{\eta})\quad\quad \]

这说明伯努力分布是指数分布族的一种,\(\phi\)的形式与逻辑回归中的logitisc函数一样,因为逻辑回归对问题的潜质概率分布其实就是伯努力分布。

下面对高斯分布进行推导,设\(y \sim N(\mu,\sigma^2)\),为了方便我们令\(\sigma=1\)

\[p(y;\mu)=\frac{1}{\sqrt{2\pi}}\exp\{-\frac{1}{2}(y-\mu)^2\} \\ =\frac{1}{\sqrt{2\pi}}\exp\{ \mu y-\frac{y^2+\mu^2}{2} \} \\ =\frac{1}{\sqrt{2\pi}}\exp\{-\frac{y^2}{2}\}\exp\{\mu y - \frac{\mu^2}{2}\} \]

于是得到

\[T(y)=\frac{1}{\sqrt{2\pi}}\exp\{-\frac{y^2}{2}\} \\ T(y)=y \quad\quad \quad\quad \quad\quad \\ \eta = \mu\quad\quad \quad\quad \quad\quad \quad \\ a(\mu)=\frac{\mu^2}{2} \quad\quad \quad\quad \\ \]

二、一般最小二乘模型

为了显示一般最小二乘模型是广义线性回归模型的特例,我们设目标变量\(y\)是连续变量,我们用高斯分布来给\(y\)建模,设在\(x\)给定条件下\(y\)服从高斯分布\(N(\mu,\sigma^2)\).所以这里的指数族分布就是高斯分布(高斯分布属于指数族分布)。正如前面看到的,将高斯分布写成指数族分布得到\(\mu = \eta\),所以

\[h_\theta(x)=E[y|x;\theta] \quad\quad\quad(1) \\ =\mu \quad\quad \quad(2) \\ =\eta \quad\quad\quad(3) \\ =\theta^Tx \quad\quad (4) \]

注意,等式(1)是根据假设2得到的,由于\(y|x;\theta \sim N(\mu,\sigma^2)\),所以\(E[y|x;\theta]=\mu\),于是得到等式(2),等式(3)是根据假设1得到的(前面推导表明,高斯分布表示为指数族时有\(\mu=\eta\)),等式(4)是根据假设3得到的。

三、逻辑回归模型

现在我们来考虑逻辑回归模型,逻辑回归模型考虑二分类问题\(y\in \{0,1\}\),由于\(y\)是二值函数,我们考虑用伯努力分布来建模,设\(y|x\)服从参数为\(\phi\)的伯努力分布。将伯努力分布写成指数族分布的形式得到

\[\phi = \frac{1}{1+e^{-\eta}} \]

注意到\(y|x;\theta \sim B(\phi)\),于是\(E[y|x;\theta]=\phi\).因此按照普通最小二乘法推导相似,我们有

\[h_\theta(x)=E[y|x;\theta]=\phi=\frac{1}{1+e^{-\eta}}=\frac{1}{1+e^{-\theta^Tx}} \]

因次,我们得到了假设函数\(h_\theta(x)=1/(1+e^{-\theta^Tx})\),之前我们一直在疑惑我们为什么会想到逻辑回归模型的逻辑函数的呢?这里就给出了答案:我们假设\(y|x\)下服从伯努力分布,它是广义线性模型的定义得到的。

四、SoftMax回归

我们现在来看广义线性回归的另一个例子。考虑一个多分类问题,其中\(y \in \{1,2,…,k\}\).例如我们不再将邮件分为垃圾邮件和非垃圾邮件2类,而是分为垃圾邮件、个人邮件、和工作邮件3个类别。我们用广义线性回归模型来为这个问题建模,首先我们需要将多项式分布表示成指数族分布的形式。
  为表示\(k\)中可能结果的多项式分布,我们需要\(k\)个参数变量\(\phi_1,\phi_2,…,\phi_k\)来表示每个结果发生的概率。需要注意的是,这\(k\)个参数并不是完全独立的,实际上只有\(k-1\)个自由变元(\(\phi_k=1-\sum^{k-1}_{i=1}\phi_i\)),所以我们用\(k-1\)个变元来表示多项式分布

\[\phi_i=p(y=i;\phi) \quad i=1,2,...,k-1 \\ p(y=k;\phi)=1-\sum_{i=1}^{k-1}\phi_i \quad \quad \quad \quad \quad \]

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

\[T(1) = \left [ \begin{matrix} 1 \\ 0 \\ 0 \\ \vdots \\ 0 \end{matrix} \right ] \quad T(2) = \left [ \begin{matrix} 0 \\ 1 \\ 0 \\ \vdots \\ 0 \end{matrix} \right ] \quad T(3) = \left [ \begin{matrix} 0 \\ 0 \\ 1 \\ \vdots \\ 0 \end{matrix} \right ] \quad \cdots \quad T(k-1) = \left [ \begin{matrix} 0 \\ 0 \\ 0 \\ \vdots \\ 1 \end{matrix} \right ] \quad T(k) = \left [ \begin{matrix} 0 \\ 0 \\ 0 \\ \vdots \\ 0 \end{matrix} \right ] \quad \]

和之前不太一样,这里\(T(y) \not = y\),并且\(T(y)\)是一个\(k-1\)维的向量,我们将会用\((T(y))_i\)表示\(T(y)\)的第\(i\)个分量值。
 下面引入一个非常有用的指标函数。指标函数\(I\{\}\),当括号里面是一个真值表达式,为真返回1,为假返回0.例如
\(I\{2=3\}=0,I\{2<3\}=1\).我们可以将\(T(y)\)和\(y\)的关系写成指标函数的形式\((T(y))_i=I\{y=i\}\),更一般的有

\[E[((T(y))_i]=p(y=i)=\phi_i) \]

下面我们来推导将多项式分布表示为指数分布的形式

\[p(y;\phi)=\phi_1^{I\{y=1\}}\phi_2^{I\{y=2\}}\cdots\phi_k^{I\{y=k\}} \\ =\phi_1^{I\{y=1\}}\phi_2^{I\{y=2\}}\cdots\phi_k^{I\{1-\sum_{i=1}^{k-1}I\{y=i\}\}} \\ =\phi_1^{(T(y))_1}\phi_2^{(T(y))_2}\cdots\phi_k^{I\{1-\sum_{i=1}^{k-1}{(T(y))_i}\}} \\ =exp\{(T(y))_1ln(\phi_1)+(T(y))_2ln(\phi_2)+ \\ \cdots +(1-\sum_{i=1}^{k-1}{(T(y))_i})ln(\phi_k)\} \\ =exp\{(T(y))_1ln(\phi_1/\phi_k)+(T(y))_2ln(\phi_2/\phi_k)+ \\ \cdots +(T(y))_{k-1}ln(\phi_{k-1}/\phi_k)+ln(\phi_k)\} \\ =b(y)exp\{\eta^TT(y)-a(\eta)\} \]

其中

\[\eta = \left [ \begin{matrix} ln(\phi_1/\phi_k)\\ ln(\phi_2/\phi_k)\\ ln(\phi_3/\phi_k) \\ \vdots \\ ln(\phi_{k-1}/\phi_k) \end{matrix} \right ] \quad a(\eta)=-ln(\phi_k) \quad b(y)=1 \]

上面将多项式分布化为指数族分布的形式。"link function"表示为

\[\eta_i=ln(\phi_i/\phi_k) \quad i=1,2,...,k-1 \]

为了统一,我们定义\(\eta_k=ln(\phi_k/\phi_k)=0\),接下来求的响应函数为

\[\phi_i=e^{\eta_i}\phi_k\quad i=1,2,...,k \]

从而

\[\sum_{j=1}^k\phi_j=\phi_k\sum_{j=1}^ke^{\eta_j}=1 \]

于是我们得到\(\phi_k=1/\sum_{j=1}^ke^{\eta_j}\),同时得到

\[\phi_i=\frac{e^{\eta_i}}{\sum_{j=1}^ke^{\eta_j}} \quad i=1,2,...,k-1 \]

将\(\eta_i\)映射到\(\phi_i\)的函数称为Softmax函数。再使用假设3,\(\eta_i\)是\(x\)的线性函数,即\(\eta_i=\theta^T_ix\)(其中\(i=1,2,..,k-1\)并且\(\theta_i \in R^{n+1}\))。为了符号方便,我们定义\(\theta_k=0\),这样\(\eta_k=\theta_k^Tx=0\),因此我们的模型为

\[p(y=i|x;\theta)=\phi_i =\frac{e^{\eta_i}}{\sum_{j=1}^ke^{\eta_j}} \\ =\frac{e^{\theta_i^Tx}}{\sum_{j=1}^ke^{\theta^T_jx}} \]

上面模型可以应用到\(k\)分类问题,称为softmax回归,它是逻辑回归的推广形式。我们的模型将会输出

\[h_\theta(x)=E[T(y)|x;\theta]=E([I\{y=1\},I\{y=2\},...,I\{y=k-1\}]^T|x;\theta) \\ =[\phi_1,\phi_2,...,\phi_{k-1}]^T \quad \quad \quad \\ = \left[ \begin{matrix} \frac{e^{\theta_1^Tx}}{\sum_{j=1}^ke^{\theta^T_jx}} \\ \frac{e^{\theta_2^Tx}}{\sum_{j=1}^ke^{\theta^T_jx}} \\ \vdots \\ \frac{e^{\theta_{k-1}^Tx}}{\sum_{j=1}^ke^{\theta^T_jx}} \end{matrix} \right] \quad\quad\quad\quad\quad\quad \]

我们的模型将输出概率\(p(y=i|x;\theta)\)(\(i=1,2,…,k-1\)),并且\(p(y=k|x;\theta)=1-\sum_{i=1}^{k-1}p(y=i|x;\theta)\)计算得到。

下面来讨论下参数\(\theta\)的估计,和最小二乘与逻辑回归类似,我们假设有\(m\)个样本\(\{(x^{(i)},y^{(i)})|i=1,2,…,m\}\)用来学习参数\(\theta_i\)(\(i=1,2,..,k-1\)).直接写出对数似然函数为

\[l(\theta)=\sum_{i=1}^{m}ln\;p(y^{(i)}|x^{(i)};\theta) \quad\quad\;\;\quad\quad\;\;\quad\quad\quad\;\;\;\\ =\sum_{i=1}^m\ln\;\prod_{l=1}^k(\frac{e^{\theta_l^Tx^{(i)}}}{\sum_{j=1}^ke^{\theta^T_jx^{(i)}}} )^{I\{y^{(i)}=l\}}\quad\quad\; \\ =\sum_{i=1}^m\sum_{l=1}^k I\{y^{(i)}=l\}\;ln\;(\frac{e^{\theta_l^Tx^{(i)}}}{\sum_{j=1}^ke^{\theta^T_jx^{(i)}}} ) \\ =\sum_{i=1}^m\sum_{l=1}^k I\{y^{(i)}=l\}\;ln\;(h_\theta(x))_l \quad\quad\;\; \]

我们现在可以根据梯度上升或者牛顿法来求解参数\(\theta\)。