版权声明:本系列文章为博主原创文章,转载请注明出处!谢谢!


 本章索引:

在第2章的回归问题中,我们假设了$(y|x; \theta) \sim \mathcal{N} (\mu, \sigma^2)$,并通过最大似然估计得到了最小均方;在第3章的分类问题中,我们又假设$(y|x; \theta) \sim Bernoulli(\phi)$,并通过最大似然估计得到了Logistic回归。我们不禁思考,这其中有什么必然的联系吗?带着这些问题,本章将介绍,这些方法(线性回归、最小二乘、Logistic回归等)都是广义线性模型的中的一些特例。本章也将介绍,如何构建一般的广义线性模型,从而解决分类和回归问题。

1. 指数分布族

2. 构建广义线性模型


 

1. 指数分布族

为了更好的理解广义线性模型,首先需要明白指数分布族。顾名思义,这是一类分布,如果一个分布的概率密度函数满足下式定义,它就属于指数分布族:

\begin{equation*}
p(y;\eta)=b(y)exp(\eta ^T T(y)-a(\eta))
\end{equation*}

其中,$\eta$被称为该分布的自然参数(natural parameter)或典范参数(canonical parameter);$T(y)$被称为充分统计量(sufficient statistic),在我们碰到的例子中,通常有$T(y) = y$;$a(\eta)$被称为对数配分函数(log partition function)。$e^{-a(\eta)}$是归一化常数,主要作用是保证概率密度函数$p(y;\eta)$在$y$上的积分恒为1。

当我们固定了一组$T$,$a$和$b$,上述公式就就定义了一个概率分布的集合或一类概率分布,这类分布以$\eta$为参数。当$\eta$改变时,就可以得到这类分布中的不同分布,比如均值不同的高斯分布,均值不同的伯努利分布等。除此以外,这类单参数型的指数族还有以下数字特征:

\begin{equation*}
E(Y) = \frac {da(\eta)}{d\eta}
\end{equation*}

\begin{equation*}
Var(Y)= \frac {d^2 a(\eta)}{d \eta^2}
\end{equation*}

下面通过伯努利分布和高斯分布的例子来做具体的说明。

伯努利分布:

已知伯努利分布的概率密度函数:

\begin{equation*}
p(y=1;\phi) = \phi ; p(y=0;\phi)=1-\phi \ \ i.e. \ p(y;\phi) = \phi^y(1-\phi)^{1-y}
\end{equation*}

把上式硬往指数分布族的形式上凑:

\begin{eqnarray*}
p(y;\phi) & = & \phi ^y(1-\phi)^{1-y} \\
& = & exp(ylog\phi + (1-y)log(1-\phi)) \\
& = & exp((log{\frac{\phi}{1-phi}}))y + log(1-\phi)
\end{eqnarray*}

因此,自然参数$\eta = log(\phi/(1-\phi))$,对它进行代数变换,就得到了$\phi=1/(1+e^{-\eta})$,这个结论下一节会用到。

将$T$,$a$和$b$的形式罗列出来:

\begin{equation*}
T(y) = y 
\end{equation*}

\begin{eqnarray*}
a(\eta) & = & -log(1-\phi) \\
& = & log(1+e^\eta) \\
\end{eqnarray*}

\begin{equation*}
b(y) = 1
\end{equation*}

验证数字特征:

\begin{equation*}
\frac{da(\eta)}{d\eta} = \frac{d}{d\eta}(log(1+e^\eta))=\frac{e^\eta}{1+e^\eta}=\phi
\end{equation*}

\begin{equation*}
\frac{d^2 a(\eta)}{d\eta^2}= \frac{d}{d\eta}= \frac{d}{d\eta}(\frac{e^\eta}{1+e^\eta})= \frac{e^\eta}{(1+e^\eta)^2} = \phi(1-\phi)
\end{equation*}

下面同样来证明高斯分布:

回想我们在第1章第6节,用高斯模型和最大似然估计推导最小二乘的时候,$\sigma$对最终$\theta$和$h_\theta(x)没有影响,也就是说任意值的方差对模型都没有影响。因此为了简单起见,我们可以令$\sigma^2=1$。

\begin{eqnarray*}
p(y; \mu) & = & \frac{1}{\sqrt{2\pi}}exp(-\frac{1}{2}(y-\mu)^2) \\
& = & \frac{1}{\sqrt{2\pi}}exp(-\frac{1}{2}y^2)\cdot exp(\mu y-\frac{1}{2}\mu^2)
\end{eqnarray*}

因此,高斯分布属于指数分布族,只要满足:

\begin{equation*}
\eta = \mu
\end{equation*}

\begin{equation*}
T(y) = y 
\end{equation*}

\begin{eqnarray*}
a(\eta) & = & \mu ^2/2 \\
& = & \eta ^2 /2
\end{eqnarray*}

\begin{equation*}
b(y) = (1/\sqrt{2\pi}exp(-y^2/2)
\end{equation*}

验证数字特征:

\begin{equation*}
\frac{da(\eta)}{d\eta} = \frac{d}{d\eta} (\frac{\eta ^2}{2})= \eta = \mu
\end{equation*}
\begin{equation*}
\frac{d^2 a(\eta)}{d\eta^2} = \frac{d}{d\eta} (\frac{da(\eta)}{d\eta}) = \frac{d}{d\eta}(\eta) = 1
\end{equation*}

除了上面证明的伯努利分布和高斯分布,还有很多其他分布也属于指数分布族,例如多项式分布,泊松分布,$\gamma$分布,指数分布,$\beta$分布和狄利克雷分布等。下一节我们将介绍如何构建一个通用的模型,在这个模型中$y$属于指数分布族。

 

2. 构建广义线性模型

假设我们希望构建广义线性模型去解决一些实际问题,比如,我们想建立一个模型,根据一些特征$x$,例如天气,星期几等,来估计到达商店的客户数量$y$。我们知道泊松分布可以对计数问题进行建模,据此我们应该如何用描述模型呢?幸运的是,泊松分布属于指数分布族,我们可以用广义线性模型。我们将描述一个通用的方法,使用指数分布族来构建广义线性模型。

一般来讲,当我们碰到一个分类或者回归问题的时候,想要构建广义线性模型来根据一些特征$x$来预测$y$的时候,我们需要以下3个关于条件分布$y|x$的假设:

1. $y|x;\theta \sim ExponentialFamily(\eta)$,i.e. 给定x和\theta,$y$的分布属于指数分布族。在上面的例子中,因为泊松分布属于指数分布族且适合用于计数问题建模,那么可以选择泊松分布作为$y$的分布。

2. 给定x,我们的目的是预测$T(y)$的期望值。在大部分的例子中,$T(y)=y$,所以我们的目标就是在给定x的情况下,估计的目标就是输出$E[T(y)|x] = E[y|x]$。例如,给定一些特征,

3. 自然参数$\eta$和输入变量$x$是线性相关的:$\eta = \theta^Tx$,即$\eta_i=\theta_i^Tx$。

第3条“假设”更应该被视为一种“设计策略”。这三条假设/设计策略可以让我们得到一组非常整洁的学习算法:广义线性模型。模型可以非常有效的建立针对符合不同分布的$y$。我们将以Logistci回归和最小均方来说明(它们都可以由广义线性模型得到)。

 

伯努利分布和Logistic回归

对于二分类问题$y \in {0,1}$,很自然的使用伯努利分布来构建广义线性模型。因为伯努利分布确实属于指数分布族,假设1已经满足。再结合假设2和假设3,以及上一节的结论$\phi = 1/(1+e^{-\eta})$,我们有:

\begin{eqnarray*}
h_\theta(x) & = & E[y|x;\theta] \\
& = & \phi \\
& = & 1/(1+e^{-\eta}) \\
& = & 1/(1+e^{-\eta ^Tx})
\end{eqnarray*}

所以,这给出了假设$h_\theta(x)$的形式:$h_\theta(x) = 1/(1+e^{-\theta^Tx})。 如果你好奇我们是如何得到logistic函数$1/(1+e^{-z})$的话,这里就是答案。当我们用广义线性模型为二分类问题建立模型时,很自然的就得到了Logistic回归的形式。

在上述推导中,将概率分布的均值$\phi$表示为自然参数$\eta$的函数,这样的函数称为正则响应函数,例如本例中的$g(\eta)=E[y;\eta] = 1/(1+e^{-\eta})$。正则响应函数的反函数$g^{-1}$被称作正则关联函数。在本章后续推导一个更复杂的广义线性模型 - Softmax回归的时候会用到这两个名词。

通过这个例子能够看出,当需要为一个二分类问题建立模型时,我们唯一要做的决定就是使$y|x;\theta$服从伯努利分布,之后一切只要根据广义线性模型的规则自动生成即可(自动生成了Logistic回归)。这正是广义线性模型的强大之处。

 

高斯分布和最小均方

几乎和上面的伯努利分布相同的推导方式,我们可以基于高斯分布构建广义线性模型,最终得到的结果正如我们所预料的那样:最小二乘模型。

假设$y|x;\theta$服从高斯分布,推导过程如下:

\begin{eqnarray*}
h_\theta(x) & = & E[y|x;\theta] \\
& = & \mu \\
& = & \eta \\
& = & \theta^Tx
\end{eqnarray*}

不再过多解释,最终得到的结果就是最小二乘方法中的线性模型。

 

Softmax回归

再来看一个广义线性模型的例子。假设在一个多分类问题中,目标变量$y$有$k$个可能的取值,即$y \in {1, 2, 3, ... , k}$. 目标变量$y$依然是离散值,但是可以取多个值而不是两个值。我们会用多项式模型来建立广益线行模型。

首先介绍一个可能取到k个值的多项式分布:它需要k个参数$\phi_1, \cdots, \phi_k$来表征取到每个值的概率。然而,这样表述是多余的,因为这些频率之间有一个限制条件:$\phi_1+\phi_2+ \cdots + \phi_k = 1$。所以我们只用$\phi_1, \ctods, \phi_{k-1}$就可以了,有时为了简便起见,我们会用$\phi_k$来代替$1-\sum_{i=1}^{k-1}\phi_i$,但要始终记得,$\phi_k$并不是一个参数。

之前的例子中,我们都是假设$T(y) = y$,这里我们不这样用,定义$T(y)$如下:

\begin{equation*}
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},
\cdots ,
T(k-1)=\begin{bmatrix} 0 \\ 0 \\ 0 \\ \vdots \\ 1 \end{bmatrix},
T(k)=\begin{bmatrix} 0 \\ 0 \\ 0 \\ \vdots \\ 0 \end{bmatrix},
\end{equation*}

$T(y)是一个$k-1$维的向量。我们用$(T(y))_i$来表示这个向量的第$i-1$个元素。

介绍另一个表达式: $\1\{\cdot \}$,表示如果里面的参数是true,那么该表达式值为1;否则值为0,即$(1\{true\}=1, 1\{false\} = 0)$。例如$1\{2=3\} = 0$,$1\{3=5-2\} = 1$。所以有以下两个结论:

\begin{equation*} (T(y))_i = 1{y=i} \end{equation*}

\begin{equation*} E[(T(y))_i] = P(y=i) = \phi_i \end{equation*}

证明多项式分布属于指数分布族:

\begin{eqnarray*}
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))} \\
& = & exp((T(y))_1 log(\phi_1) + (T(y))_2 log(\phi_2) + \cdots + (1-\sum_{i=1}^{k-1}(T(y))_i )log(\phi_k)) \\
& = & exp((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) ) \\
& = & b(y)exp(\eta ^T T(y) - a(\eta))
\end{eqnarray*}

其中:

\begin{equation*}
\eta=\begin{bmatrix}log(\phi_1/phi_k) \\ log(\phi_2/phi_k) \\ \vdots \\ log(\phi_1/phi_k) \end{bmatrix}
\end{equation*}

\begin{equation*}
a(\eta)=-log(\phi_k)
\end{equation*}

\begin{equation*}
b(y) = 1
\end{equation*}

证明完毕。

$\eta$和$\phi$之间的正则关联函数函数:

\begin{equation*}
\eta_i=log\frac{\phi_i}{\phi_k}
\end{equation*}

为了保持一致性,我们仍然定义$ \eta_k = log(\phi_k / \phi_k) =0 $。为了得到正则响应函数,需要对正则关联函数求逆,所以我们有:

\begin{equation*}
e^{\eta_i} = \frac{\phi_i}{\phi_k}
\end{equation*}

\begin{equation*}
\phi_ke^{\eta_i} = \phi_i
\end{equation*}

\begin{equation*}
\phi_k\sum_{i=1}^k e^{\eta_i} = \sum_{i=1}^k \phi_i = 1
\end{equation*}

这说明$\phi_k = 1/ \sum_{i=1}^k e^{\eta_i} $,带入上式,得到正则响应函数:

\begin{equation*}
\phi_i=\frac{e^{\eta_i}}{\sum_{j=1}^k e^{\eta_j}}
\end{equation*}

这个将$\eta$映射到$\phi$的函数称为softmax函数。

 

继续来完成模型的构建。根据假设3,$\eta_i$与$x$是线性关系。所以有$\eta_i = \theta_i^Tx \ (for\ i=1, 2, \cdots, k-1)$, 其中$\theta_1, \cdots, \theta_k-1 \in \mathbb{R}^{n+1}$是模型的参数。依然是为了一致性,我们定义$\theta_k=0$,所以$\eta_k = \theta_k^Tx = 0 $。条件概率分布如下:

\begin{eqnarray*}
p(y=i|x;\theta) & = & \phi_i \\
& = & \frac{e^{\eta_i}}{\sum_{j=1}^k e^{\eta_j}} \\
& = & \frac{e^{\theta_i^Tx}}{\sum_{j=1}^k e^{\theta_j^Tx}}
\end{eqnarray*}

 

这个模型应用在多分类问题中,称为Softmax回归,它是Logistic回归的一般推广。假设$h_\theta(x)$的形式如下:

 \begin{eqnarray*}
h_\theta(x) & = & E[T(y)|x;\theta] \\
& = & \begin{bmatrix} \phi_i \\ \phi_2 \\ \vdots \\ \phi_{k-1} \end{bmatrix} \\
& = & \begin{bmatrix} \frac{exp(\theta_1^Tx)}{\sum_{j=1}^{k}exp(\theta_j^Tx)} \\ \frac{exp(\theta_2^Tx)}{\sum_{j=1}^{k}exp(\theta_j^Tx)} \\ \vdots \\ \frac{exp(\theta_{k-1}^Tx)}{\sum_{j=1}^{k}exp(\theta_j^Tx)} \end{bmatrix}
\end{eqnarray*}

换句话说,假设会输出估计出的是$p(y=i|x;\theta)$,即取到每个$i$值的概率。

至此,模型已经建立完毕。如果要进行参数拟合。类似于之前的最小均方和Logistic回归,如果我们有一组训练样本$\{(x^{(i)}, y^{(i)}); i=1, \cdots, m\}$来学习参数$\theta_i$,我们可以写下对数似然:

\begin{eqnarray*}
l(\theta)& = & \sum_{i=1}^mlog p(y^{(i)}|x^{(i)};\theta) \\
& = & \sum_{i=1}^mlog \prod_{l=1}^k( \frac{e^{\theta_l^Tx^{(i)}}}{\sum_{j=1}^k e^{\theta_j^Tx^{(i)}}} ) ^{1\{y^{(i)} = l\}}
\end{eqnarray*}

为了使得最大化似然函数,我们可以使用诸如梯度上升或者牛顿法等。