机器学习原理与算法(四) 广义线性模型

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


 本章索引:

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

1. 指数分布族

2. 构建广义线性模型


1. 指数分布族

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

egin{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$改变时,就可以得到这类分布中的不同分布,比如均值不同的高斯分布,均值不同的伯努利分布等。除此以外,这类单参数型的指数族还有以下数字特征:

egin{equation*}
E(Y) = frac {da(eta)}{deta}
end{equation*}

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

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

伯努利分布:

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

egin{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*}

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

egin{eqnarray*}
p(y;phi) & = & phi ^y(1-phi)^{1-y} \
& = & exp(ylogphi + (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$的形式罗列出来:

egin{equation*}
T(y) = y 
end{equation*}

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

egin{equation*}
b(y) = 1
end{equation*}

验证数字特征:

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

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

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

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

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

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

egin{equation*}
eta = mu
end{equation*}

egin{equation*}
T(y) = y 
end{equation*}

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

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

验证数字特征:

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

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

2. 构建广义线性模型

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

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

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

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

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

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

伯努利分布和Logistic回归

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

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

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

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

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

高斯分布和最小均方

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

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

egin{eqnarray*}
h_ heta(x) & = & E[y|x; heta] \
& = & mu \
& = & eta \
& = & heta^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)$如下:

egin{equation*}
T(1)=egin{bmatrix} 1 \ 0 \ 0 \ vdots \ 0 end{bmatrix},
T(2)=egin{bmatrix} 0 \ 1 \ 0 \ vdots \ 0 end{bmatrix},
T(3)=egin{bmatrix} 0 \ 0 \ 1 \ vdots \ 0 end{bmatrix},
cdots ,
T(k-1)=egin{bmatrix} 0 \ 0 \ 0 \ vdots \ 1 end{bmatrix},
T(k)=egin{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$。所以有以下两个结论:

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

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

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

egin{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*}

其中:

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

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

egin{equation*}
b(y) = 1
end{equation*}

证明完毕。

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

egin{equation*}
eta_i=logfrac{phi_i}{phi_k}
end{equation*}

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

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

egin{equation*}
phi_ke^{eta_i} = phi_i
end{equation*}

egin{equation*}
phi_ksum_{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} $,带入上式,得到正则响应函数:

egin{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 = heta_i^Tx (for i=1, 2, cdots, k-1)$, 其中$ heta_1, cdots, heta_k-1 in mathbb{R}^{n+1}$是模型的参数。依然是为了一致性,我们定义$ heta_k=0$,所以$eta_k = heta_k^Tx = 0 $。条件概率分布如下:

egin{eqnarray*}
p(y=i|x; heta) & = & phi_i \
& = & frac{e^{eta_i}}{sum_{j=1}^k e^{eta_j}} \
& = & frac{e^{ heta_i^Tx}}{sum_{j=1}^k e^{ heta_j^Tx}}
end{eqnarray*}

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

 egin{eqnarray*}
h_ heta(x) & = & E[T(y)|x; heta] \
& = & egin{bmatrix} phi_i \ phi_2 \ vdots \ phi_{k-1} end{bmatrix} \
& = & egin{bmatrix} frac{exp( heta_1^Tx)}{sum_{j=1}^{k}exp( heta_j^Tx)} \ frac{exp( heta_2^Tx)}{sum_{j=1}^{k}exp( heta_j^Tx)} \ vdots \ frac{exp( heta_{k-1}^Tx)}{sum_{j=1}^{k}exp( heta_j^Tx)} end{bmatrix}
end{eqnarray*}

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

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

egin{eqnarray*}
l( heta)& = & sum_{i=1}^mlog p(y^{(i)}|x^{(i)}; heta) \
& = & sum_{i=1}^mlog prod_{l=1}^k( frac{e^{ heta_l^Tx^{(i)}}}{sum_{j=1}^k e^{ heta_j^Tx^{(i)}}} ) ^{1{y^{(i)} = l}}
end{eqnarray*}

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

原文地址:https://www.cnblogs.com/li--chao/p/7622941.html