统计学习方法——逻辑回归和最大熵模型

今天我们介绍两个对数线性模型:逻辑回归和最大熵模型。逻辑回归是一种由条件概率P(Y|X)表示的分类模型,形式为参数化的逻辑斯谛分布。最大熵模型基于最大熵原理,认为学习概率分布模型时,在条件概率不确定的情况下,熵最大的模型即为最好的模型。

逻辑回归

逻辑斯谛分布

在《统计学习方法》这本书中,逻辑斯谛回归模型是目标是最大化条件概率分布P(Y|X),条件概率为参数化的逻辑斯谛分布。所以在介绍逻辑回归前,先来看一下逻辑斯谛分布。设X服从逻辑斯谛分布,其分布函数和密度函数如下:

F(x)=P(X\leqslant x)=\frac{1}{1+e^{-\frac{x-\mu}{\gamma }}}

f(x)=F^{'}(x)=\frac{e^{-\frac{x-\mu }{\gamma }}}{\gamma \left ( 1+ e^{-\frac{x-\mu }{\gamma }}\right )^2}

\gamma =1, \mu=0时,为标准逻辑斯谛分布。标准逻辑斯谛分布的分布函数和密度函数的图形如图所示:

F(x)是以(\mu ,\frac{1}{2})为中心的中心对称图形。\gamma越小,F(x)在中心附近的梯度越大。对于任意逻辑斯谛分布,有下式成立:

F(-x+\mu )-\frac{1}{2}=F(x+\mu )+\frac{1}{2}

了解了逻辑斯谛分布,现在来看看逻辑回归。

逻辑回归

逻辑斯谛回归假设标签Y服从参数p为逻辑斯谛分布的伯努利分布:

P(y=1|x)=\frac{e^{\omega x+b}}{1+e^{\omega x+b}}\\\\ P(y=0|x)=1-P(y=1|x)=\frac{1}{1+e^{\omega x+b}}

其中x=\left \{ x^{(1)}, x^{(2)}, ...,x^{(m)}\right \}表示输入特征;y\in \left \{ 0,1 \right \}代表标签;\omega =\left \{ \omega_1,\omega_2,...,\omega_m \right \}和b为待求参数。对于新的输入数据,我们比较P(Y=1|x)和P(y=0|x)的大小,将实例分到取值大的组内。

为了简化后面的计算,令x=\left \{ x^{(1)}, x^{(2)}, ...,x^{(m)},1\right \},\omega =\left \{ \omega_1,\omega_2,...,\omega_m,b \right \},条件概率可以表示为:

P(y=1|x)=\frac{e^{\omega x}}{1+e^{\omega x}}\\\\ P(y=0|x)=1-P(y=1|x)=\frac{1}{1+e^{\omega x}}

最后通过极大化对数似然函数优化参数:

L(w)\\ =log\prod_{i=1}^n p(y_i)^{y_i}(1-p(y_i))^{1-y_i}\\ =\sum_{i=1}^n y_ilogp(y_i)+(1-y_i)log(1-p(y_i))\\ =\sum_{i=1}^n y_ilog\frac{e^{\omega x_i+b}}{1+e^{\omega x_i+b}}+(1-y_i)log\frac{1}{1+e^{\omega x_i+b}}\\ =\sum_{i=1}^ny_i(\omega x_i+b)+log(1+e^{\omega x_i+b})

通过梯度下降法或者拟牛顿法求解最佳参数。

多标签分类任务

逻辑回归只能用于二分类任务中,面对多标签分类任务,我们可以对逻辑回归适当的调整,让它可以解决多分类问题。多标签分类问题有两种:一对一和一对多,即一个数据对应一个标签和一个数据对应多个标签7。

对于一个数据对应一个标签的问题:

P(y=i|x)=\frac{e^{\omega_ix+b_i}}{1+\sum_{k=1}^{K-1}e^{\omega_kx+b_k}}, i\in \left \{ 1,2,...,K-1 \right \}\\ P(y=K|x)=\frac{1}{​{1+\sum_{k=1}^{K-1}e^{\omega_kx+b_k}}}

将x归入条件概率最大的类别。

对于一个数据对应多个标签的问题,需要对每一类分别训练一个模型,对于每个模型,标签为是k类和非k类,比较P_k(y=1|x)P_k(y=0|x)的大小。若P_k(y=1|x)> P_k(y=0|x),则认为x属于第k类。

不过,对比这种讲解方式,我感觉“逻辑回归是在线性回归的基础上,引入sigmoid函数将标签映射到(0,1)区间作为y=1的概率,最后通过最大化对数似然函数求解最佳参数”这种解释方式更容易理解一些。

最大熵模型

最大熵模型是基于最大熵原理提出的,它认为在满足所有鲜艳条件的情况下,熵最大的模型就是最好的模型。最大熵模型为判别式模型,对于给定的输入x,以条件概率P(y|x)输出y。熵的概念在《统计学习方法——决策树》这篇博客中已经介绍过了,我们再稍微复习一下。熵是衡量数据不确定的指标:

H(p)=-\sum_{i=1}^ip_ilogp_i

熵的大小和标签取值大小无关,只和每个取值的概率有关;熵越大,数据的不确定性越大,均匀分布数据的熵最大。最大熵模型目标就是在满足所有约束条件的情况下,找出条件熵最大的模型:arg\max_{p(y|x)}-\sum_{x,y}p(x)p(y|x)logp(y|x)

我们来举个小例子简单说明一下最大熵模型的思想:一组数据,取值可能为A, B, C, D, E,请问每个取值对应的概率为多少?现在我们只知道它有五个取值,其它的条件一概不知,根据最大熵模型可以认为它们服从均匀分布,及每个取值对应的概率都是1/5;现在我们再引入一个条件P(A)+P(B)=1/3,根据这个条件我们可以知道P(C)+P(D)+P(E)=2/3,但是P(A)、P(B)如何分配这1/3我们不清楚,那我们就认为是均匀分布:P(A)=P(B)=1/6;同理,P(C)=P(D)=P(E)=2/9。

对于给定的训练集D=\left \{ (x_1,y_1), (x_2,y_2),...,(x_n,y_n)\right \},我们可以确定联合概率分布和先验概率的经验分布:

\tilde{P}(X=x, Y=y)=\frac{v(X=x, Y=y)}{N}

\tilde{P}(X=x)=\frac{v(X=x)}{N}

其中v(X=x, Y=y)表示训练集中X=x, Y=y的样本个数,v(X=x)表示X=x的样本量,N表示总样本量。

特征函数

我们引入特征函数来表示模型的一些约束条件:

这个公式看起来让人有些盲目,我们来看个例子:

这样是不是就很好理解了。我们可以求出基于联合概率分布的特征函数期望值:E_{\tilde{P}}(f)=\sum_{x,y}\tilde{P}(x,y)f(x,y)

基于条件概率模型和先验概率分布的特征函数期望值:E_p(f)=\sum_{x,y}\tilde{P}(x)P(y|x)f(x,y)

我们希望从数据集里得出的特征函数期望值与基于模型的期望值是相等的,有约束条件:E_p(f)=E_{\tilde{p}}(f)

至此,可以得到我们的优化目标为:

\\arg\max_{p(y|x)}-\sum_{x,y}p(x)p(y|x)logp(y|x)\\ s.t. \\E_p(f_i)=E_{\tilde{p}} (f_i)\\ \ \sum_y(y|x)=1

将最大转为最小:

\\arg\min_{p(y|x)}\sum_{x,y}p(x)p(y|x)logp(y|x)\\ s.t. \\E_p(f_i)=E_{\tilde{p}} (f_i)\\ \ \sum_y(y|x)=1

将有约束条件的目标函数转为无约束最优化的对偶函数:

\min_p \max_\omega L(p,\omega )\\ =\min_p \max_\omega\sum_{x,y}p(x)p(y|x)logp(y|x)+\omega_0(1-\sum_yp(y|x))+\sum_{i=1}^n\omega_i(E_p(f_i)-E_{\tilde{p}}(f_i))\\ =\max_\omega \min_p \sum_{x,y}p(x)p(y|x)logp(y|x)+\omega_0(1-\sum_yp(y|x))+\sum_{i=1}^n\omega_i(E_p(f_i)-E_{\tilde{p}}(f_i))

然后求导,令导数为0,进行求解。在求导这里,参考一些其他博客,个人认为《统计学习方法》里求导这里可能存在一些错误,我认为这里的求导应该是对p(Y=y|X=x)求的,这里的y和x都是指定的值,而非X和Y可以取的任意值,所以在求导过程中对于左边第一个求和项,只有{X=x,Y=y}对应的式子求导结果不为0,即:

\frac{\partial \sum_{x,y}p(x)p(y|x)logp(y|x)}{\partial p(Y=y|X=x)}\\ =\frac{\partial p(X=x)p(Y=y|X=x)logp(Y=y|X=x)}{\partial p(Y=y|X=x)}

所以在L(p,w)对p求导结果为:

\frac{\partial L}{\partial p}\\ =\tilde{p}(X=x)\left [logp(Y=y|X=x)+1 \right ]-\omega_0-\sum_{i=1}^{n}\omega_if_i\tilde{p}(X=x)\\

\frac{\partial L}{\partial p}=0,得:

\tilde{p}(X=x)\left [ logp(Y=y|X=x)+1 \right ]-\omega _0-\sum_{i=1}^{n}\omega _if_i\tilde{p}(X=x)=0\\ \tilde{p}(X=x)\left [ logp(Y=y|X=x)+1 \right ] = \omega _0+\sum_{i=1}^{n}\omega _if_i\tilde{p}(X=x)\\ logp(Y=y|X=x) = \frac{\omega _0}{\tilde{p}(X=x)}+\sum_{i=1}^{n}\omega _if_i-1\\ p(Y=y|X=x) = exp( \frac{\omega _0}{\tilde{p}(X=x)}-1)\cdot exp(\sum_{i=1}^{n}\omega _if_i)\\ p(Y=y|X=x) = \frac{exp\sum_{i=1}^{n}\omega _if_i}{exp(1-\frac{\omega_0}{\tilde{p}(X=x)})}

由于\sum_yp(y|x)=1,有

p_\omega (y|x)=\frac{exp(\sum_{i=1}^{n})\omega_if_i}{\sum_{y}exp(\sum_{i=1}^n)\omega_if_i}

求出p(y|x),接下来通过优化算法(迭代尺度法、牛顿法、拟牛顿法...)就是求出\omega就欧克了。

 

参考:

https://blog.csdn.net/yutao03081/article/details/78812014  特征函数的例子就是参考这篇伯克利

https://www.cnblogs.com/hexinuaa/p/3353479.html,这个博客的最大熵模型讲的非常详细,值得学习。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值