(五)统计学习方法 | 逻辑斯谛回归与最大熵模型


1. 逻辑斯谛回归模型

1.1 简介与定义

逻辑斯谛回归式统计学习中的经典分类方法,属于对数线性模型

1.2 逻辑斯谛分布

X X X式连续随机变量, X X X服从逻辑斯蒂回归是指 X X X具有下列分布函数和密度函数: F ( x ) = P ( X ≤ x ) = 1 1 + e − ( x − μ ) / γ (1) F(x)=P(X\leq x)=\frac{1}{1+{\rm e}^{-(x-\mu)/\gamma}}\tag{1} F(x)=P(Xx)=1+e(xμ)/γ1(1)

f ( x ) = F ′ ( x ) = e − ( x − μ ) / γ γ ( 1 + e − ( x − μ ) / γ ) 2 (2) f(x)=F'(x)=\frac{{\rm e}^{-(x-\mu)/\gamma}}{\gamma(1+{\rm e}^{-(x-\mu)/\gamma})^2}\tag{2} f(x)=F(x)=γ(1+e(xμ)/γ)2e(xμ)/γ(2)

式中, μ \mu μ为位置参数, γ > 0 \gamma>0 γ>0为形状参数。其数学图像如下:
在这里插入图片描述
分布函数图像属于逻辑斯谛函数,曲线是一条 S S S型曲线,该曲线以 ( μ , 1 / 2 ) (\mu,1/2) (μ,1/2)为中心对称,即满足: F ( − x + μ ) − 1 2 = − F ( x + μ ) + 1 2 F(-x+\mu)-\frac{1}{2}=-F(x+\mu)+\frac{1}{2} F(x+μ)21=F(x+μ)+21

曲线在中心附近增长速度较快,在两端增长速度较慢,而参数 γ \gamma γ用于控制曲线在中心附近的增长速度。

1.3 二项逻辑斯谛回归模型

二项逻辑斯谛回归模型式一种分类模型,由条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)表示,形式为参数化的逻辑斯谛分布。这里, X X X的取值为实数, Y Y Y的取值为 0 0 0 1 1 1 P ( Y = 1 ∣ x ) = exp ⁡ ( w ⋅ x + b ) 1 + exp ⁡ ( w ⋅ x + b ) (3) P(Y=1|x)=\frac{\exp(w\cdot x+b)}{1+\exp(w\cdot x+b)}\tag{3} P(Y=1x)=1+exp(wx+b)exp(wx+b)(3)

P ( Y = 0 ∣ x ) = 1 1 + exp ⁡ ( w ⋅ x + b ) (4) P(Y=0|x)=\frac{1}{1+\exp(w\cdot x+b)}\tag{4} P(Y=0x)=1+exp(wx+b)1(4)

这里, x ∈ R n x\in\bold R^n xRn是输入, Y ∈ { 0 , 1 } Y\in\{0,1\} Y{0,1}是输出, w ∈ R n w\in\bold R^n wRn b ∈ R b\in\bold R bR是参数。 w w w称为权值向量, b b b称为偏置。根据上式可以求得对于输入实例 x x x的值,然后将实例 x x x分到概率较大的那一类。现在,将权值向量和输入向量扩充一个维度,即 w = ( w ( 1 ) , w ( 2 ) , . . . , w ( n ) , b ) T w=(w^{(1)},w^{(2)},...,w^{(n)},b)^{\rm T} w=(w(1),w(2),...,w(n),b)T x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) , 1 ) T x=(x^{(1)},x^{(2)},...,x^{(n)},1)^{\rm T} x=(x(1),x(2),...,x(n),1)T
P ( Y = 1 ∣ x ) = exp ⁡ ( w ⋅ x ) 1 + exp ⁡ ( w ⋅ x ) (5) P(Y=1|x)=\frac{\exp(w\cdot x)}{1+\exp(w\cdot x)}\tag{5} P(Y=1x)=1+exp(wx)exp(wx)(5)

P ( Y = 0 ∣ x ) = 1 1 + exp ⁡ ( w ⋅ x ) (6) P(Y=0|x)=\frac{1}{1+\exp(w\cdot x)}\tag{6} P(Y=0x)=1+exp(wx)1(6)

现在,定义几率事件发生的概率与事件不发生概率的比值,则该事件的对数几率为: l o g i t ( p ) = log ⁡ p 1 − p (7) {\rm logit}(p)=\log\frac{p}{1-p}\tag{7} logit(p)=log1pp(7)

而对于逻辑斯谛回归而言,有: log ⁡ P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = w ⋅ x (8) \log\frac{P(Y=1|x)}{1-P(Y=1|x)}=w\cdot x\tag{8} log1P(Y=1x)P(Y=1x)=wx(8)

上式表明,在逻辑斯谛回归模型中,输出 Y = 1 Y=1 Y=1的对数几率是输入 x x x的线性函数。对于式(5)和式(8),如果分子项 P ( Y = 1 ∣ x ) P(Y=1|x) P(Y=1x)越接近 1 1 1,则线性函数 w ⋅ x w\cdot x wx的值约接近正无穷;同理,如果线性函数 w ⋅ x w\cdot x wx的值约接近负无穷, P ( Y = 1 ∣ x ) P(Y=1|x) P(Y=1x)越接近 0 0 0。这也对应了上图中逻辑斯谛分布的函数图像。

1.3 模型参数估计

逻辑斯谛回归模型学习时,对于给定的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中 x i ∈ R n x_i\in \bold R^n xiRn y i ∈ { 0 , 1 } y_i\in \{0,1\} yi{0,1},可以应用极大似然估计法估计模型参数,从而得到逻辑斯谛回归模型。设: P ( Y = 1 ∣ x ) = π ( x ) ,   P ( Y = 0 ∣ x ) = 1 − π ( x ) P(Y=1|x)=\pi(x),\ P(Y=0|x)=1-\pi(x) P(Y=1x)=π(x), P(Y=0x)=1π(x)

则似然函数可以写为: ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod_{i=1}^N\left[\pi(x_i)\right]^{y_i}[1-\pi(x_i)]^{1-y_i} i=1N[π(xi)]yi[1π(xi)]1yi

对似然函数求对数: L ( w ) = ∑ i = 1 N [ y i log ⁡ π ( x i ) + ( 1 − y i ) log ⁡ ( 1 − π ( x i ) ) ] = ∑ i = 1 N [ y i log ⁡ π ( x i ) 1 − π ( x i ) + log ⁡ ( 1 − π ( x i ) ) ] = ∑ i = 1 N [ y i ( w ⋅ x i ) − log ⁡ ( 1 + exp ⁡ ( w ⋅ x i ) ) ] (9) \begin{aligned}L(w)&=\sum_{i=1}^N\left[y_i\log\pi(x_i)+(1-y_i)\log(1-\pi(x_i))\right]\\ &=\sum_{i=1}^N\left[y_i\log\frac{\pi(x_i)}{1-\pi(x_i)}+\log(1-\pi(x_i))\right]\\ &=\sum_{i=1}^N\left[y_i(w\cdot x_i)-\log(1+\exp(w\cdot x_i))\right]\end{aligned}\tag{9} L(w)=i=1N[yilogπ(xi)+(1yi)log(1π(xi))]=i=1N[yilog1π(xi)π(xi)+log(1π(xi))]=i=1N[yi(wxi)log(1+exp(wxi))](9)

然后对 L ( w ) L(w) L(w)求极大值,即可得到 w w w的估计值。逻辑斯谛回归学习中通常采用的方法是梯度下降法拟牛顿法

1.4 多项逻辑斯谛回归模型

假设随机变量 Y Y Y的取值集合是 { 1 , 2 , . . . , K } \{1,2,...,K\} {1,2,...,K},那么其形式为: P ( Y = k ∣ x ) = exp ⁡ ( w k ⋅ x ) 1 + ∑ k = 1 K − 1 exp ⁡ ( w k ⋅ x ) ,   k = 1 , 2 , . . . , K − 1 (10) P(Y=k|x)=\frac{\exp(w_k\cdot x)}{1+\sum \limits_{k=1}^{K-1}\exp(w_k\cdot x)},\ k=1,2,...,K-1\tag{10} P(Y=kx)=1+k=1K1exp(wkx)exp(wkx), k=1,2,...,K1(10)

P ( Y = K ∣ x ) = 1 1 + ∑ k = 1 K − 1 exp ⁡ ( w k ⋅ x ) (11) P(Y=K|x)=\frac{1}{1+\sum \limits_{k=1}^{K-1}\exp(w_k\cdot x)}\tag{11} P(Y=Kx)=1+k=1K1exp(wkx)1(11)


2. 最大熵模型

2.1 简介与定义

最大熵模型是由最大熵原理推导实现的。

2.2 最大熵原理

最大熵原理认为,学习概率模型时,在所有可能的概率分布中,熵最大的模型是最好的模型。假设离散随机变量 X X X的概率分布是 P ( X ) P(X) P(X),则其熵是:
H ( P ) = − ∑ x P ( x ) log ⁡ P ( x ) H(P)=-\sum_xP(x)\log P(x) H(P)=xP(x)logP(x)

熵满足下列不等式:
0 ≤ H ( P ) ≤ log ⁡ ∣ X ∣ 0\leq H(P)\leq\log|X| 0H(P)logX

式中 ∣ X ∣ |X| X X X X的取值个数,当且仅当 X X X的分布是均匀分布时右边的等号成立。直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多信息的情况下,那些不确定的部分都是等可能的。最大熵原理通过熵的最大化来表示等可能性。

例题 假设随机变量 X X X 5 5 5个取值 { A , B , C , D , E } \{A,B,C,D,E\} {A,B,C,D,E},要估计取各个值的概率 P ( A ) , P ( B ) , P ( C ) , P ( D ) , P ( E ) P(A),P(B),P(C),P(D),P(E) P(A),P(B),P(C),P(D),P(E)

这些概率值满足以下约束条件: P ( A ) + P ( B ) + P ( C ) + P ( D ) + P ( E ) = 1 P(A)+P(B)+P(C)+P(D)+P(E)=1 P(A)+P(B)+P(C)+P(D)+P(E)=1

而满足这个约束条件的分布有无穷多个。如果没有任何其他信息,仍要对概率分布进行估计,一个办法就是认为这个分布中取各个值的概率都是相等的: P ( A ) = P ( B ) = P ( C ) = P ( D ) = P ( E ) = 1 5 P(A)=P(B)=P(C)=P(D)=P(E)=\frac{1}{5} P(A)=P(B)=P(C)=P(D)=P(E)=51

等概率表示了对事实的无知。有时,能从一些先验知识中得到一些对概率值的约束条件,如:
P ( A ) + P ( B ) = 3 10 P(A)+P(B)=\frac{3}{10} P(A)+P(B)=103

P ( A ) + P ( B ) + P ( C ) + P ( D ) + P ( E ) = 1 P(A)+P(B)+P(C)+P(D)+P(E)=1 P(A)+P(B)+P(C)+P(D)+P(E)=1

2.3 最大熵模型的定义

假设分类模型是一个条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) X ∈ X ∈ R n X\in\mathcal X\in\bold R^n XXRn表示输入, Y ∈ Y Y\in\mathcal Y YY表示输出, X \mathcal X X Y \mathcal Y Y分别是输入和输出的集合。这个模型表示的是对于给定的输入 X X X,以条件概率 P ( Y ∣ X ) P(Y|X) P(YX)输出 Y Y Y。给定一个训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)}

学习的目标是用最大熵原理选择最好的分类模型。给定训练数据集,可以确定联合分布 P ( X , Y ) P(X,Y) P(X,Y)的经验分布和边缘分布 P ( X ) P(X) P(X)的经验分布,分别以 P ~ ( X , Y ) {\tilde P}(X,Y) P~(X,Y) P ~ ( X ) {\tilde P}(X) P~(X)表示: P ~ ( X = x , Y = y ) = ν ( X = x , Y = y ) N {\tilde P}(X=x,Y=y)=\frac{\nu(X=x,Y=y)}{N} P~(X=x,Y=y)=Nν(X=x,Y=y)

P ~ ( X = x ) = ν ( X = x ) N {\tilde P(X=x)=\frac{\nu(X=x)}{N}} P~(X=x)=Nν(X=x)

式中 ν ( X = x , Y = y ) \nu(X=x,Y=y) ν(X=x,Y=y)表示训练数据中样本 ( x , y ) (x,y) (x,y)出现的频数, ν ( X = x ) \nu(X=x) ν(X=x)表示训练中输入 x x x出现的频数, N N N表示训练样本容量。然后用一个特征函数 f ( x , y ) f(x,y) f(x,y)描述输入 x x x和输出 y y y之间的某一个事实。其定义是: f ( x , y ) = { 1 ,   x 与 y 满 足 某 一 事 实 0 ,   否 则 f(x,y)=\left\{ \begin{aligned} & 1,\ x与y满足某一事实 \\ & 0,\ 否则 \end{aligned} \right. f(x,y)={1, xy0, 

特征函数 f ( x , y ) f(x,y) f(x,y)关于经验分布 P ~ ( X , Y ) {\tilde P}(X,Y) P~(X,Y)的期望值: E P ~ ( f ) = ∑ x , y P ~ ( x , y ) f ( x , y ) E_{\tilde P}(f)=\sum_{x,y}{\tilde P}(x,y)f(x,y) EP~(f)=x,yP~(x,y)f(x,y)

特征函数 f ( x , y ) f(x,y) f(x,y)关于模型 P ( Y ∣ X ) P(Y|X) P(YX)与经验分布 P ~ ( X , Y ) {\tilde P}(X,Y) P~(X,Y)的期望值: E P ( f ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) E_P(f)=\sum_{x,y}{\tilde P}(x)P(y|x)f(x,y) EP(f)=x,yP~(x)P(yx)f(x,y)

如果模型能够获取训练中的信息,那么就可以假设这两个期望值相等,即:
E P ~ ( f ) = E P ( f ) E_{\tilde P}(f)=E_P(f) EP~(f)=EP(f)

即:
∑ x , y P ~ ( x , y ) f ( x , y ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) \sum_{x,y}{\tilde P}(x,y)f(x,y)=\sum_{x,y}{\tilde P}(x)P(y|x)f(x,y) x,yP~(x,y)f(x,y)=x,yP~(x)P(yx)f(x,y)

上式即为模型学习的约束条件

最大熵模型 假设满足所有约束条件的模型集合为: C = { P ∈ P ∣ E P ( f i ) = E P ~ ( f i ) ,   i = 1 , 2 , . . . , n } \mathcal C=\{P\in\mathcal P|E_{P}(f_i)=E_{\tilde P}(f_i),\ i=1,2,...,n\} C={PPEP(fi)=EP~(fi), i=1,2,...,n}

定义在条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)上的条件熵为: H ( P ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) H(P)=-\sum_{x,y}{\tilde P}(x)P(y|x)\log P(y|x) H(P)=x,yP~(x)P(yx)logP(yx)

则模型集合 C \mathcal C C中条件熵 H ( P ) H(P) H(P)最大的模型称为最大熵模型

2.4 最大熵模型的学习

最大熵模型的学习过程就是求解最大熵模型的过程,也可以形式化为约束最优化问题。给定训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)}以及特征函数 f i ( x , y ) ,   i = 1 , 2 , . . . n f_i(x,y),\ i=1,2,...n fi(x,y), i=1,2,...n,最大熵模型的学习等价于约束最优化问题: max ⁡ P ∈ C   H ( P ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) \max_{P\in\mathcal C}\ H(P)=-\sum_{x,y}\tilde P(x)P(y|x)\log P(y|x) PCmax H(P)=x,yP~(x)P(yx)logP(yx)

s . t .   E P ( f i ) = E P ~ ( f i ) ,   i = 1 , 2 , . . . , n     ∑ y P ( y ∣ x ) = 1 s.t.\ E_P(f_i)=E_{\tilde P}(f_i),\ i=1,2,...,n\ \ \ \sum_{y}P(y|x)=1 s.t. EP(fi)=EP~(fi), i=1,2,...,n   yP(yx)=1

我们将求最大值转化成等价的求最小值问题:
min ⁡ P ∈ C   − H ( P ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) \min_{P\in\mathcal C}\ -H(P)=\sum_{x,y}\tilde P(x)P(y|x)\log P(y|x) PCmin H(P)=x,yP~(x)P(yx)logP(yx)

s . t .   E P ( f i ) = E P ~ ( f i ) ,   i = 1 , 2 , . . . , n     ∑ y P ( y ∣ x ) = 1 s.t.\ E_P(f_i)=E_{\tilde P}(f_i),\ i=1,2,...,n\ \ \ \sum_{y}P(y|x)=1 s.t. EP(fi)=EP~(fi), i=1,2,...,n   yP(yx)=1

对于上述优化问题,首先,引进拉格朗日乘子 w 0 , w 1 , . . . , w n w_0,w_1,...,w_n w0,w1,...,wn,定义拉格朗日函数 L ( P , w ) L(P,w) L(P,w)
L ( P , w ) ≡ − H ( P ) + w 0 ( 1 − ∑ y P ( y ∣ x ) ) + ∑ i = 1 n w i ( E P ~ ( f i ) − E P ( f i ) ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) + w 0 ( 1 − ∑ y P ( y ∣ x ) ) + ∑ i = 1 n w i ( ∑ x , y P ~ ( x , y ) f ( x , y ) − ∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) ) \begin{aligned} L(P,w)&\equiv-H(P)+w_0\left(1-\sum_{y}P(y|x)\right)+\sum_{i=1}^nw_i(E_{\tilde P}(f_i)-E_P(f_i)) \\ &=-\sum_{x,y}{\tilde P}(x)P(y|x)\log P(y|x)+w_0\left(1-\sum_{y}P(y|x)\right)+\\ &\sum_{i=1}^nw_i\left(\sum_{x,y}{\tilde P}(x,y)f(x,y)-\sum_{x,y}{\tilde P}(x)P(y|x)f(x,y)\right) \end{aligned} L(P,w)H(P)+w0(1yP(yx))+i=1nwi(EP~(fi)EP(fi))=x,yP~(x)P(yx)logP(yx)+w0(1yP(yx))+i=1nwi(x,yP~(x,y)f(x,y)x,yP~(x)P(yx)f(x,y))

最优化的原始问题是:
min ⁡ P ∈ C max ⁡ w L ( P , w ) \min_{P\in \bold C}\max_wL(P,w) PCminwmaxL(P,w)

对偶问题是:
max ⁡ w min ⁡ P ∈ C L ( P , w ) \max_w\min_{P\in \bold C}L(P,w) wmaxPCminL(P,w)

首先求解内部的极小化问题 min ⁡ P ∈ C L ( P , w ) \min \limits_{P\in\bold C}L(P,w) PCminL(P,w),记作: Ψ ( w ) = min ⁡ P ∈ C L ( P , w ) = L ( P w , w ) \Psi(w)=\min_{P\in\bold C}L(P,w)=L(P_w,w) Ψ(w)=PCminL(P,w)=L(Pw,w)

将上式的解记为: P w = arg ⁡ min ⁡ P ∈ C L ( P , w ) = P w ( y ∣ x ) P_w=\arg \min_{P\in\bold C}L(P,w)=P_w(y|x) Pw=argPCminL(P,w)=Pw(yx)

然后求 L ( P , w ) L(P,w) L(P,w) P ( y ∣ x ) P(y|x) P(yx)的偏导数:
∂ L ( P , w ) ∂ P ( y ∣ x ) = ∑ x , y P ~ ( x ) ( log ⁡ P ( y ∣ x ) + 1 ) − ∑ y w 0 − ∑ x , y ( P ~ ( x ) ∑ i = 1 n w i f i ( x , y ) ) = ∑ x , y P ~ ( x ) ( log ⁡ P ( y ∣ x ) + 1 − w 0 − ∑ i = 1 n w i f i ( x , y ) ) \begin{aligned} \frac{\partial L(P,w)}{\partial P(y|x)}&=\sum_{x,y}\tilde P(x)(\log P(y|x)+1)-\sum_{y}w_0-\sum_{x,y}\left(\tilde P(x)\sum_{i=1}^nw_if_i(x,y)\right)\\ &=\sum_{x,y}\tilde P(x)\left(\log P(y|x)+1-w_0-\sum_{i=1}^nw_if_i(x,y)\right) \end{aligned} P(yx)L(P,w)=x,yP~(x)(logP(yx)+1)yw0x,y(P~(x)i=1nwifi(x,y))=x,yP~(x)(logP(yx)+1w0i=1nwifi(x,y))

令偏导数等于 0 0 0且在 P ~ ( x ) > 0 \tilde P(x)>0 P~(x)>0的情况下,解得:
P ( y ∣ x ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) + w 0 − 1 ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) exp ⁡ ( 1 − w 0 ) P(y|x)=\exp\left(\sum_{i=1}^nw_if_i(x,y)+w_0-1\right)=\frac{\exp\left(\sum \limits_{i=1}^nw_if_i(x,y)\right)}{\exp(1-w_0)} P(yx)=exp(i=1nwifi(x,y)+w01)=exp(1w0)exp(i=1nwifi(x,y))

由于存在约束条件 ∑ y P ( y ∣ x ) = 1 \sum \limits_{y}P(y|x)=1 yP(yx)=1,得(这里根据和为 1 1 1的条件将上式中的分母替换):
P w ( y ∣ x ) = 1 Z w ( x ) exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) P_w(y|x)=\frac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) Pw(yx)=Zw(x)1exp(i=1nwifi(x,y))

其中: Z w ( x ) = ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) Z_w(x)=\sum_{y}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) Zw(x)=yexp(i=1nwifi(x,y))

Z w ( x ) Z_w(x) Zw(x)称为规范化因子; f i ( x , y ) f_i(x,y) fi(x,y)是特征函数; w i w_i wi是特征的权值。之后,求解对偶问题外部的极大化问题: max ⁡ w Ψ ( w ) \max_w\Psi(w) wmaxΨ(w)

将其解记为 w ∗ w^* w,即: w ∗ = arg ⁡ min ⁡ w Ψ ( w ) w^*=\arg\min_w\Psi(w) w=argwminΨ(w)

解例题 首先,分别以 y 1 , y 2 , y 3 , y 4 , y 5 y_1,y_2,y_3,y_4,y_5 y1,y2,y3,y4,y5表示 A , B , C , D , E A,B,C,D,E A,B,C,D,E,于是最大熵模型学习的最优化问题是: min ⁡   − H ( P ) = ∑ i = 1 5 P ( y i ) log ⁡ P ( y i ) \min\ -H(P)=\sum_{i=1}^5P(y_i)\log P(y_i) min H(P)=i=15P(yi)logP(yi)

s . t .   P ( y 1 ) + P ( y 2 ) = P ~ ( y 1 ) + P ~ ( y 2 ) = 3 10 s.t.\ P(y_1)+P(y_2)=\tilde P(y_1)+\tilde P(y_2)=\frac{3}{10} s.t. P(y1)+P(y2)=P~(y1)+P~(y2)=103

∑ i = 1 5 P ( y i ) = ∑ i = 1 5 P ~ ( y i ) = 1 \sum_{i=1}^5P(y_i)=\sum_{i=1}^5\tilde P(y_i)=1 i=15P(yi)=i=15P~(yi)=1

引进拉格朗日乘子 w 0 , w 1 w_0,w_1 w0,w1,定义拉格朗日函数: L ( P , w ) = ∑ i = 1 5 P ( y i ) log ⁡ P ( y i ) + w 1 ( P ( y 1 ) + P ( y 2 ) − 3 10 ) + w 0 ( ∑ i = 1 5 P ( y i ) − 1 ) L(P,w)=\sum_{i=1}^5P(y_i)\log P(y_i)+w_1\left(P(y_1)+P(y_2)-\frac{3}{10}\right)+w_0\left(\sum_{i=1}^5P(y_i)-1\right) L(P,w)=i=15P(yi)logP(yi)+w1(P(y1)+P(y2)103)+w0(i=15P(yi)1)

根据朗格朗日对偶性,上述优化问题为: max ⁡ w min ⁡ P L ( P , w ) \max_w\min_PL(P,w) wmaxPminL(P,w)

首先求解 L ( P , w ) L(P,w) L(P,w)关于 P P P的极小化问题。为此,首先求偏导数: ∂ L ( P , w ) ∂ P ( y 1 ) = 1 + log ⁡ P ( y 1 ) + w 1 + w 0 \frac{\partial L(P,w)}{\partial P(y_1)}=1+\log P(y_1)+w_1+w_0 P(y1)L(P,w)=1+logP(y1)+w1+w0

∂ L ( P , w ) ∂ P ( y 2 ) = 1 + log ⁡ P ( y 2 ) + w 1 + w 0 \frac{\partial L(P,w)}{\partial P(y_2)}=1+\log P(y_2)+w_1+w_0 P(y2)L(P,w)=1+logP(y2)+w1+w0

∂ L ( P , w ) ∂ P ( y 3 ) = 1 + log ⁡ P ( y 3 ) + w 0 \frac{\partial L(P,w)}{\partial P(y_3)}=1+\log P(y_3)+w_0 P(y3)L(P,w)=1+logP(y3)+w0

∂ L ( P , w ) ∂ P ( y 4 ) = 1 + log ⁡ P ( y 4 ) + w 0 \frac{\partial L(P,w)}{\partial P(y_4)}=1+\log P(y_4)+w_0 P(y4)L(P,w)=1+logP(y4)+w0

∂ L ( P , w ) ∂ P ( y 5 ) = 1 + log ⁡ P ( y 5 ) + w 0 \frac{\partial L(P,w)}{\partial P(y_5)}=1+\log P(y_5)+w_0 P(y5)L(P,w)=1+logP(y5)+w0

然后令各偏导数为 0 0 0,解得:
P ( y 1 ) = P ( y 2 ) = e − w 1 − w 0 − 1 P(y_1)=P(y_2)={\rm e}^{-w_1-w_0-1} P(y1)=P(y2)=ew1w01

P ( y 3 ) = P ( y 4 ) = P ( y 5 ) = e − w 0 − 1 P(y_3)=P(y_4)=P(y_5)={\rm e}^{-w_0-1} P(y3)=P(y4)=P(y5)=ew01

所以有: min ⁡ P L ( P , w ) = L ( P w , w ) = − 2 e − w 1 − w 0 − 1 − 3 e − w 0 − 1 − 3 10 w 1 − w 0 \min_PL(P,w)=L(P_w,w)=-2{\rm e}^{-w_1-w_0-1}-3{\rm e}^{-w_0-1}-\frac{3}{10}w_1-w_0 PminL(P,w)=L(Pw,w)=2ew1w013ew01103w1w0

再求解 L ( P w , w ) L(P_w,w) L(Pw,w)关于 w w w的极大化问题:
max ⁡ w L ( P w , w ) = − 2 e − w 1 − w 0 − 1 − 3 e − w 0 − 1 − 3 10 w 1 − w 0 \max_wL(P_w,w)=-2{\rm e}^{-w_1-w_0-1}-3{\rm e}^{-w_0-1}-\frac{3}{10}w_1-w_0 wmaxL(Pw,w)=2ew1w013ew01103w1w0

然后求导数,并令为 0 0 0可求得 w 0 w_0 w0 w 1 w_1 w1的值。最终:
P ( y 1 ) = P ( y 2 ) = 3 20 P(y_1)=P(y_2)=\frac{3}{20} P(y1)=P(y2)=203

P ( y 3 ) = P ( y 4 ) = P ( y 5 ) = 7 30 P(y_3)=P(y_4)=P(y_5)=\frac{7}{30} P(y3)=P(y4)=P(y5)=307

2.5 极大似然估计

对偶函数的极大化等价于最大熵模型的极大似然估计。


3. 模型学习的最优化方法

逻辑斯谛回归模型、最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。这时的目标函数是光滑的凸函数,常用的方法有改进的迭代尺度法梯度下降法牛顿法拟牛顿法等。

3.1 改进的迭代尺度法

已知最大熵模型为:
P w ( y ∣ x ) = 1 Z w ( x ) exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) P_w(y|x)=\frac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) Pw(yx)=Zw(x)1exp(i=1nwifi(x,y))

其中: Z w ( x ) = ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) Z_w(x)=\sum_{y}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) Zw(x)=yexp(i=1nwifi(x,y))

对数似然函数为(这里省去了推导): ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) log ⁡ Z w ( x ) \sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_x\tilde P(x)\log Z_w(x) x,yP~(x,y)i=1nwifi(x,y)xP~(x)logZw(x)

目标是通过极大似然估计学习模型参数,即求对数似然函数的极大值 w ^ \hat w w^。而改进的迭代尺度法的思想是:假设最大熵模型当前的参数向量是 w = ( w 1 , w 2 , . . . , w n ) T w=(w_1,w_2,...,w_n)^{\rm T} w=(w1,w2,...,wn)T,我们希望找到一个新的参数向量 w + δ = ( w 1 + δ , w 2 + δ , . . . , w n + δ ) T w+\delta=(w_1+\delta,w_2+\delta,...,w_n+\delta)^{\rm T} w+δ=(w1+δ,w2+δ,...,wn+δ)T,使得模型的对数似然函数增大。如果能有这样一种参数向量更新的方法 τ \tau τ w → w + δ w\rightarrow w+\delta ww+δ,那么就可以重复使用这一方法,直到找到对数似然函数的最大值。对于给定的经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y),模型参数从 w w w w + δ w+\delta w+δ,对数似然函数的该变量是:
L ( w + δ ) − L ( w ) = ∑ x , y P ~ ( x , y ) log ⁡ P w + δ ( y ∣ x ) − ∑ x , y P ~ ( x , y ) P w ( y ∣ x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) − ∑ x P ~ ( x ) log ⁡ Z w + δ ( x ) Z w ( x ) \begin{aligned} L(w+\delta)-L(w)&=\sum_{x,y}{\tilde P}(x,y)\log P_{w+\delta}(y|x)-\sum_{x,y}{\tilde P}(x,y)P_w(y|x) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)-\sum_{x}\tilde P(x)\log\frac{Z_{w+\delta}(x)}{Z_w(x)} \end{aligned} L(w+δ)L(w)=x,yP~(x,y)logPw+δ(yx)x,yP~(x,y)Pw(yx)=x,yP~(x,y)i=1nδifi(x,y)xP~(x)logZw(x)Zw+δ(x)

利用不等式: − log ⁡ α ≥ 1 − α ,   α > 0 -\log\alpha\geq1-\alpha,\ \alpha>0 logα1α, α>0

建立对数似然函数该变量的下界:
L ( w + δ ) − L ( w ) ≥ ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) Z w + δ ( x ) Z w ( x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) exp ⁡ ∑ i = 1 n δ i f i ( x , y ) \begin{aligned} L(w+\delta)-L(w)&\geq\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_{x}\tilde P(x)\frac{Z_{w+\delta}(x)}{Z_w(x)}\\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\exp\sum_{i=1}^n\delta_if_i(x,y) \end{aligned} L(w+δ)L(w)x,yP~(x,y)i=1nδifi(x,y)+1xP~(x)Zw(x)Zw+δ(x)=x,yP~(x,y)i=1nδifi(x,y)+1xP~(x)yPw(yx)expi=1nδifi(x,y)

将上式右端记为 A ( δ ∣ w ) A(\delta|w) A(δw),即:
L ( w + δ ) − L ( w ) ≥ A ( δ ∣ w ) L(w+\delta)-L(w)\geq A(\delta|w) L(w+δ)L(w)A(δw)

A ( δ ∣ w ) A(\delta|w) A(δw)是对数似然函数该变量的一个下界。如果能够找到合适的 δ \delta δ使下界提高,那么对数似然函数也会提高。然而,函数 A ( δ ∣ w ) A(\delta|w) A(δw)中的 δ \delta δ使一个向量,含有多个变量,不易同时优化。改进的迭代尺度法试图以此只优化其中一个变量 δ i \delta_i δi而固定其他变量。为达到这一目的,改进的迭代尺度法进一步降低下界。具体地,引入一个量 f # ( x , y ) f^\#(x,y) f#(x,y) f # ( x , y ) = ∑ i f i ( x , y ) f^\#(x,y)=\sum_if_i(x,y) f#(x,y)=ifi(x,y)

因为 f i f_i fi是二值函数,故 f # ( x , y ) f^\#(x,y) f#(x,y)表示所有特征在 ( x , y ) (x,y) (x,y)出现的次数。这样, A ( δ ∣ w ) A(\delta|w) A(δw)可以改写为: A ( δ ∣ w ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) exp ⁡ ( f # ( x , y ) ∑ i = 1 n δ i f i ( x , y ) f # ( x , y ) ) (12) A(\delta|w)=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\exp\left(f^\#(x,y)\sum_{i=1}^n\frac{\delta_if_i(x,y)}{f^\#(x,y)}\right)\tag{12} A(δw)=x,yP~(x,y)i=1nδifi(x,y)+1xP~(x)yPw(yx)exp(f#(x,y)i=1nf#(x,y)δifi(x,y))(12)

根据定义, f i ( x , y ) f_i(x,y) fi(x,y)表示第 i i i个特征在 ( x , y ) (x,y) (x,y)出现的次数; f # ( x , y ) f^\#(x,y) f#(x,y)表示所有特征在 ( x , y ) (x,y) (x,y)出现的次数。所以有:
f i ( x , y ) f # ( x , y ) ≥ 0 ,   ∑ i = 1 n f i ( x , y ) f # ( x , y ) = 1 \frac{f_i(x,y)}{f^\#(x,y)}\geq0,\ \sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}=1 f#(x,y)fi(x,y)0, i=1nf#(x,y)fi(x,y)=1

根据 J e n s e n {\rm Jensen} Jensen不等式:
f ( λ i ∑ i = 1 n f ( x i ) ≤ ∑ i = 1 n λ i f ( x i ) ) f\left(\lambda_i\sum \limits_{i=1}^nf(x_i)\leq\sum \limits_{i=1}^n\lambda_if(x_i)\right) f(λii=1nf(xi)i=1nλif(xi))

所以有:
exp ⁡ ( ∑ i = 1 n f i ( x , y ) f # ( x , y ) δ i f # ( x , y ) ) ≤ ∑ i = 1 n f i ( x , y ) f # ( x , y ) exp ⁡ ( δ i f # ( x , y ) ) \exp\left(\sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}\delta_i{f^\#(x,y)}\right)\leq\sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}\exp\left(\delta_if^\#(x,y)\right) exp(i=1nf#(x,y)fi(x,y)δif#(x,y))i=1nf#(x,y)fi(x,y)exp(δif#(x,y))

由此,式(11)可以改写为:
A ( δ ∣ w ) ≥ ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) ∑ i = 1 n f i ( x , y ) f # ( x , y ) exp ⁡ ( δ i f # ( x , y ) ) A(\delta|w)\geq\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}\exp\left(\delta_if^\#(x,y)\right) A(δw)x,yP~(x,y)i=1nδifi(x,y)+1xP~(x)yPw(yx)i=1nf#(x,y)fi(x,y)exp(δif#(x,y))

记等式右端为 B ( δ ∣ w ) B(\delta|w) B(δw),于是得到: L ( w + δ ) − L ( w ) ≥ B ( δ ∣ w ) L(w+\delta)-L(w)\geq B(\delta|w) L(w+δ)L(w)B(δw)

这里的 B ( δ ∣ w ) B(\delta|w) B(δw)式对数似然函数该变量的一个新的下界。求 B ( δ ∣ w ) B(\delta|w) B(δw) δ i \delta_i δi的偏导数: ∂ B ( δ ∣ w ) ∂ δ i = ∑ x , y P ~ ( x , y ) f i ( x , y ) − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) f i ( x , y ) exp ⁡ ( δ i f # ( x , y ) ) \frac{\partial B(\delta|w)}{\partial \delta_i}=\sum_{x,y}\tilde P(x,y)f_i(x,y)-\sum_x\tilde P(x)\sum_yP_w(y|x)f_i(x,y)\exp\left(\delta_if^\#(x,y)\right) δiB(δw)=x,yP~(x,y)fi(x,y)xP~(x)yPw(yx)fi(x,y)exp(δif#(x,y))

令偏导数等于 0 0 0,有:
∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) exp ⁡ ( δ i f # ( x , y ) ) = E P ~ ( f i ) \sum_{x,y}\tilde P(x)P_w(y|x)f_i(x,y)\exp\left(\delta_if^\#(x,y)\right)=E_{\tilde P}(f_i) x,yP~(x)Pw(yx)fi(x,y)exp(δif#(x,y))=EP~(fi)

于是,依次对 δ i \delta_i δi求解方程即可求出 δ \delta δ

改进的迭代尺度算法

输入 特征函数 f 1 , f 2 , . . . , f n f_1,f_2,...,f_n f1,f2,...,fn;经验分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y),模型 P w ( y ∣ x ) P_w(y|x) Pw(yx)

输出 最优参数值 w i ∗ w_i^* wi;最优模型 P w ∗ P_w^* Pw

(1)对所有 i ∈ { 1 , 2 , . . . , n } i\in\{1,2,...,n\} i{1,2,...,n},取初值 w i = 0 w_i=0 wi=0

(2)对每一 i ∈ { 1 , 2 , . . . , n } i\in\{1,2,...,n\} i{1,2,...,n} δ i \delta_i δi是方程 ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) exp ⁡ ( δ i f # ( x , y ) ) = E P ~ ( f i ) \sum_{x,y}\tilde P(x)P_w(y|x)f_i(x,y)\exp\left(\delta_if^\#(x,y)\right)=E_{\tilde P}(f_i) x,yP~(x)Pw(yx)fi(x,y)exp(δif#(x,y))=EP~(fi)

的解,这里有: f # ( x , y ) = ∑ i = 1 n f i ( x , y ) f^\#(x,y)=\sum_{i=1}^nf_i(x,y) f#(x,y)=i=1nfi(x,y)

更新 w i w_i wi值: w i ← w i + δ i w_i\leftarrow w_i+\delta_i wiwi+δi

(3)如果不是所有的 w i w_i wi都收敛,重复上述步骤。

3.2 拟牛顿法

对于最大熵模型而言: P w ( y ∣ x ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) P_w(y|x)=\frac{\exp\left(\sum \limits_{i=1}^nw_if_i(x,y)\right)}{\sum \limits_{y}\exp\left(\sum \limits_{i=1}^nw_if_i(x,y)\right)} Pw(yx)=yexp(i=1nwifi(x,y))exp(i=1nwifi(x,y))

目标函数:
min ⁡ w ∈ R n   f ( w ) = ∑ x P ~ ( x ) log ⁡ ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) − ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) \min_{w\in\bold R^n}\ f(w)=\sum_x\tilde P(x)\log\sum_y\exp\left(\sum \limits_{i=1}^nw_if_i(x,y)\right)-\sum_{x,y}\tilde P(x,y)\sum \limits_{i=1}^nw_if_i(x,y) wRnmin f(w)=xP~(x)logyexp(i=1nwifi(x,y))x,yP~(x,y)i=1nwifi(x,y)

梯度:
g ( w ) = ( ∂ f ( w ) ∂ w 1 , ∂ f ( w ) ∂ w 2 , . . . , ∂ f ( w ) ∂ w n ) T g(w)=\left(\frac{\partial f(w)}{\partial w_1},\frac{\partial f(w)}{\partial w_2},...,\frac{\partial f(w)}{\partial w_n}\right)^{\rm T} g(w)=(w1f(w),w2f(w),...,wnf(w))T

其中:
∂ f ( w ) ∂ w i = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) − E P ~ ( f i ) ,   i = 1 , 2 , . . . , n \frac{\partial f(w)}{\partial w_i}=\sum_{x,y}\tilde P(x)P_w(y|x)f_i(x,y)-E_{\tilde P}(f_i),\ i=1,2,...,n wif(w)=x,yP~(x)Pw(yx)fi(x,y)EP~(fi), i=1,2,...,n

最大熵模型学习的拟牛顿法

输入 特征函数 f 1 , f 2 , . . . , f n f_1,f_2,...,f_n f1,f2,...,fn;经验分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y),目标函数 f ( w ) f(w) f(w),梯度 g ( w ) = ∇ f ( w ) g(w)=\nabla f(w) g(w)=f(w),精度要求 ε \varepsilon ε

输出 最优参数值 w i ∗ w_i^* wi;最优模型 P w ∗ P_w^* Pw

(1)选定初始点 w ( 0 ) w^{(0)} w(0),取 B 0 B_0 B0为正定对称矩阵,置 k = 0 k=0 k=0

(2)计算 g k = g ( w ( k ) ) g_k=g(w^{(k)}) gk=g(w(k))。若 ∣ ∣ g k ∣ ∣ < ε ||g_k||<\varepsilon gk<ε,则停止计算,得 w ∗ = w ( k ) w^*=w^{(k)} w=w(k);否则转(3);

(3)由 B k p k = − g k B_kp_k=-g_k Bkpk=gk,求出 p k p_k pk

(4)一维搜索:求 λ k \lambda_k λk使得: f ( w ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( w ( k ) + λ p k ) f(w^{(k)}+\lambda_kp_k)=\min_{\lambda\geq0}f(w^{(k)}+\lambda p_k) f(w(k)+λkpk)=λ0minf(w(k)+λpk)

(5)置 w ( k + 1 ) = w ( k ) + λ k p k w^{(k+1)}=w^{(k)}+\lambda_kp_k w(k+1)=w(k)+λkpk

(6)计算 g k + 1 = g ( w ( k + 1 ) ) g_{k+1}=g(w^{(k+1)}) gk+1=g(w(k+1)),若 ∣ ∣ g k + 1 ∣ ∣ < ε ||g_{k+1}||<\varepsilon gk+1<ε,则停止计算,得 w ∗ = w ( k + 1 ) w^*=w^{(k+1)} w=w(k+1);否则按下式求出 B k + 1 B_{k+1} Bk+1 B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k B_{k+1}=B_k+\frac{y_ky_k^{\rm T}}{y_k^{\rm T}\delta_k}-\frac{B_k\delta_k\delta_k^{\rm T}B_k}{\delta_k^{\rm T}B_k\delta_k} Bk+1=Bk+ykTδkykykTδkTBkδkBkδkδkTBk

其中:
y k = g k + 1 − g k ,   δ k = w ( k + 1 ) − w k y_k=g_{k+1}-g_k,\ \delta_k=w^{(k+1)}-w^k yk=gk+1gk, δk=w(k+1)wk

(7)置 k = k + 1 k=k+1 k=k+1,转(3)。


4. Python实现逻辑斯谛回归

首先加载数据集:

# https://github.com/Dod-o/Statistical-Learning-Method_Code/blob/master/Logistic_and_maximum_entropy_models/logisticRegression.py#L36
def load_data(file):
    # 定义空列表
    dataArr = []
    labelArr = []
    # 打开并处理文件
    with open(file, "r") as f:
        lines = f.readlines()
        for line in lines:
            # 针对csv文件格式,使用','分割数据
            curLine = line.strip().split(',')
            # 逻辑斯谛回归模型是一个二分类算法,定义0-4为0、5-9为+1
            # csv文件第一列存放着具体类别
            if int(curLine[0]) < 5:
                labelArr.append(0)
            else:
                labelArr.append(1)
            # 处理具体数据,除以255归一化
            dataArr.append([int(num) / 255 for num in curLine[1:]])
        # 返回
        return dataArr, labelArr

根据训练得到的 w w w作预测:

def predict(_w, _x):
    # 点积
    wx = np.dot(_w, _x)
    # 根据式(5)和式(6)
    p = np.exp(wx) / (1 + np.exp(wx))
    # 如果p大于0.5,则类别为1;否则为0
    if p > 0.5:
        return 1
    else:
        return 0

定义逻辑斯谛回归主体函数。这里,根据式(9): L ( w ) = ∑ i = 1 N [ y i ( w ⋅ x i ) − log ⁡ ( 1 + exp ⁡ ( w ⋅ x i ) ) ] L(w)=\sum_{i=1}^N\left[y_i(w\cdot x_i)-\log(1+\exp(w\cdot x_i))\right] L(w)=i=1N[yi(wxi)log(1+exp(wxi))]

使用随机梯度下降法求上述函数的最值,首先计算 L ( w ) L(w) L(w)相对于 w w w的梯度:
d L ( w ) d w = ∑ i = 1 N [ y i ⋅ x i − exp ⁡ ( w ⋅ x i ) ⋅ x i 1 + exp ⁡ ( w ⋅ x i ) ] \frac{dL(w)}{dw}=\sum_{i=1}^N\left[y_i\cdot x_i-\frac{\exp(w\cdot x_i)\cdot x_i}{1+\exp(w\cdot x_i)}\right] dwdL(w)=i=1N[yixi1+exp(wxi)exp(wxi)xi]

由于是求似然函数的极大值,这里使用梯度上升:

# https://github.com/Dod-o/Statistical-Learning-Method_Code/blob/master/Logistic_and_maximum_entropy_models/logisticRegression.py#L97
def logistic_regression(train_data, train_label, it=200):
    # 将x增加一维
    for i in range(len(train_data)):
        train_data[i].append(1)
    # 转换数据集形式
    train_data = np.array(train_data)
    # 初始化w和b,w得维数保持和x一致,且最后一位为b
    w = np.zeros(train_data.shape[1])
    # 设置步长
    h = 0.01
    for i in range(it):
        for j in range(train_data.shape[0]):
            # 获取对应索引的数据
            wx = np.dot(w, train_data[j])
            xi = train_data[j]
            yi = train_label[j]
            # 梯度上升
            w += h * (xi * yi - (np.exp(wx) * xi) / (1 + np.exp(wx)))
        print("{} / {}".format(i, it))
    # 返回学习到的w
    return w

测试集上的表现:

def model_test(test_data, test_label, w):
    # 将x增加一维
    for i in range(len(test_data)):
        test_data[i].append(1)
    # 错误计数
    errorCnt = 0
    for i in range(len(test_data)):
        if test_label[i] != predict(w, test_data[i]):
            errorCnt += 1
    # 返回准确率
    return 1 - errorCnt / len(test_data)

5. 逻辑斯谛回归与最大熵模型总结

逻辑斯谛回归模型源自逻辑斯谛分布,其分布函数 F ( x ) F(x) F(x) S S S形函数。逻辑斯谛回归模型是由输入的线性函数表示的输出的对数几率模型。最大熵模型可以由最大熵原理推导得出。最大熵原理是概率模型学习或估计的一个准则。逻辑斯谛回归模型和最大熵都属于对数线性模型。逻辑斯谛回归模型和最大熵模型学习一般采用极大似然估计,或正则化的极大似然估计。逻辑斯谛回归模型及最大熵模型学习可以形式化为无约束最优化问题,求解该最优化问题的算改进的迭代尺度法、梯度下降法和拟牛顿法等。


参考

  1. 统计学习方法/李航著。—2版。—北京:清华大学出版社,2019(2019.6重印).
  2. https://github.com/Dod-o/Statistical-Learning-Method_Code(逻辑斯谛回归代码).


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值