这篇复习第二个非常经典的模型——逻辑回归。《百面机器学习》中内容不是很全,所以与上篇SVM类似,先参考《统计学习方法》和CS229对相关知识点进行总结,再看下《百面机器学习》提到几个相关面试题。

逻辑回归

逻辑回归模型

逻辑分布(logistic distribution)

X X X是连续随机变量, X X X服从逻辑分布是指 X X X具有下列分布函数和密度函数:
F ( x ) = P ( X x ) = 1 1 + e ( x μ ) / γ F(x)=P(X\leqslant x)=\frac 1 {1+e^{-(x-\mu)/\gamma}} F(x)=P(Xx)=1+e(xμ)/γ1 f ( x ) = F ( x ) = e ( x μ ) / γ γ ( 1 + e ( x μ ) / γ ) 2 f(x)=F^{\prime}(x)=\frac {e^{-(x-\mu)/\gamma}}{\gamma(1+e^{-(x-\mu)/\gamma})^2} f(x)=F(x)=γ(1+e(xμ)/γ)2e(xμ)/γ式中, μ \mu μ为位置参数, γ > 0 \gamma>0 γ>0为形状参数。

二项逻辑回归模型

二项逻辑回归模型是一种分类模型,由条件概率分布 P ( Y X ) P(Y|X) P(YX)表示,形式为参数化的逻辑分布。

二项逻辑回归模型是如下的条件概率分布:
P ( Y = 1 x ) = e x p ( w x + b ) 1 + e x p ( w x + b ) P(Y=1|x)=\frac{exp(w\cdot x+b)}{1+exp(w\cdot x+b)} P(Y=1x)=1+exp(wx+b)exp(wx+b)
P ( Y = 0 x ) = 1 1 + e x p ( w x + b ) P(Y=0|x)=\frac1{1+exp(w\cdot x+b)} P(Y=0x)=1+exp(wx+b)1
有时为了方便,将权值向量和输入向量加以扩充,仍记作 w , x w,x w,x,即 w = ( w ( 1 ) , w ( 2 ) , . . . , w ( n ) , b ) T , x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) , 1 ) T w=(w^{(1)},w^{(2)},...,w^{(n)},b)^T, x=(x^{(1)},x^{(2)},...,x^{(n)},1)^T w=(w(1),w(2),...,w(n),b)T,x=(x(1),x(2),...,x(n),1)T,逻辑回归模型变为
P ( Y = 1 x ) = e x p ( w x ) 1 + e x p ( w x ) P(Y=1|x)=\frac{exp(w\cdot x)}{1+exp(w\cdot x)} P(Y=1x)=1+exp(wx)exp(wx)
P ( Y = 0 x ) = 1 1 + e x p ( w x ) P(Y=0|x)=\frac1{1+exp(w\cdot x)} P(Y=0x)=1+exp(wx)1

一个事件的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值。如果事件发生的概率是 p p p,那么该事件的几率是 p 1 p \frac p {1-p} 1pp,该事件的对数几率是 l o g i t ( p ) = l o g p 1 p logit(p)=log\frac p{1-p} logit(p)=log1pp
对逻辑回归而言,
l o g P ( Y = 1 x ) P ( Y = 0 x ) = w x log\frac{P(Y=1|x)}{P(Y=0|x)}=w\cdot x logP(Y=0x)P(Y=1x)=wx可以看出,在逻辑回归模型中,输出 Y = 1 Y=1 Y=1的对数几率是输入 x x x的线性函数。

模型参数估计

逻辑回归模型应用极大似然估计法估计模型参数,具体如下:

设: P ( Y = 1 x ) = π ( x ) P(Y=1|x)=\pi(x) P(Y=1x)=π(x) P ( Y = 0 x ) = 1 π ( x ) P(Y=0|x)=1-\pi(x) P(Y=0x)=1π(x)

P ( Y x ) = π ( x ) Y ( 1 π ( x ) ) 1 Y P(Y|x)=\pi(x)^Y(1-\pi(x))^{1-Y} P(Yx)=π(x)Y(1π(x))1Y
似然函数为
<munderover> i = 1 N </munderover> [ π ( x i ) ] y i [ 1 π ( x i ) ] 1 y i \prod_{i=1}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} i=1N[π(xi)]yi[1π(xi)]1yi
对数似然函数为
L ( w ) = <munderover> i = 1 N </munderover> [ y i l o g π ( x i ) + ( 1 y i ) l o g ( 1 π ( x i ) ) ] L(w)=\sum_{i=1}^N[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))] L(w)=i=1N[yilogπ(xi)+(1yi)log(1π(xi))]
= <munderover> i = 1 N </munderover> [ y i l o g π ( x i ) 1 π ( x i ) + l o g ( 1 π ( x i ) ) ] =\sum_{i=1}^N \lbrack y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i)) \rbrack =i=1N[yilog1π(xi)π(xi)+log(1π(xi))]
= [ y i ( w x i ) l o g ( 1 + e x p ( w x i ) ) ] =\sum[y_i(w\cdot x_i)-log(1+exp(w\cdot x_i))] =[yi(wxi)log(1+exp(wxi))]
其实,可以发现第一个等式就是负的交叉熵损失函数。似然函数求极大,也就是损失函数求极小。逻辑回归学习中通常采用梯度下降或者拟牛顿法。

多项逻辑回归

其实就是softmax,
P ( Y = k x ) = e x p ( w k x ) <munderover> i = 1 K </munderover> e x p ( w k x ) P(Y=k|x)=\frac{exp(w_k\cdot x)}{\sum_{i=1}^K exp(w_k\cdot x)} P(Y=kx)=i=1Kexp(wkx)exp(wkx)

广义线性模型

对于sigmoid这个函数怎么来的,为什么逻辑回归要选用sigmoid函数,前面都没给出形式化的解释。后来终于在CS229课上找到答案,其实我们可以从广义线性模型展开思考。

指数分布族

在介绍广义线性模型之前,先要说下指数分布族,因为指数分布族是广义线性模型提出的假设之一。

如果一个分布可以用 p ( y ; η ) = b ( y ) e x p ( η T T ( y ) a ( η ) ) p(y;\eta)=b(y)exp(\eta^TT(y)-a(\eta)) p(y;η)=b(y)exp(ηTT(y)a(η))来表示,这个分布就属于指数分布族。
其中,

  • η \eta η:分布的自然参数;
  • T ( y ) T(y) T(y):充分统计量(通常情况下 T ( y ) = y T(y)=y T(y)=y);
  • a ( η ) a(\eta) a(η):对数分割函数;
  • e a ( η ) e^{-a(\eta)} ea(η):本质上是一个归一化常数,确保 p ( y ; η ) p(y;\eta) p(y;η)的概率和为1

伯努利分布属于指数分布族。推导过程如下,

设伯努利分布的均值为 ϕ \phi ϕ,所以 p ( y = 1 ; ϕ ) = ϕ ; p ( y = 0 ; ϕ ) = 1 ϕ p(y=1;\phi)=\phi;p(y=0;\phi)=1-\phi p(y=1;ϕ)=ϕ;p(y=0;ϕ)=1ϕ
p ( y ; ϕ ) = ϕ y ( 1 ϕ ) 1 y = e x p ( y l o g ϕ + ( 1 y ) l o g ( 1 ϕ ) ) = e x p ( y l o g ( ϕ 1 ϕ ) + l o g ( 1 ϕ ) ) p(y;\phi)=\phi^y(1-\phi)^{1-y}=exp(ylog\phi+(1-y)log(1-\phi))=exp(ylog(\frac\phi{1-\phi})+log(1-\phi)) p(y;ϕ)=ϕy(1ϕ)1y=exp(ylogϕ+(1y)log(1ϕ))=exp(ylog(1ϕϕ)+log(1ϕ))
其中, b ( y ) = 1 , T ( y ) = y , η = l o g ( ϕ 1 ϕ ) , a ( η ) = l o g ( 1 η ) = l o g ( 1 + e η ) b(y)=1,T(y)=y,\eta=log(\frac \phi {1-\phi}),a(\eta)=-log(1-\eta)=log(1+e^{\eta}) b(y)=1,T(y)=y,η=log(1ϕϕ),a(η)=log(1η)=log(1+eη)

高斯分布同样属于指数分布族,推导过程如下,

设方差 σ 2 = 1 \sigma^2=1 σ2=1,均值为 μ \mu μ
p ( y ; μ ) = 1 2 π e x p ( 1 2 ( y μ ) 2 ) = 1 2 π e x p ( 1 2 y 2 ) e x p ( μ y 1 2 μ 2 ) p(y;\mu)=\frac1 {\sqrt{2\pi}}exp(-\frac12(y-\mu)^2)=\frac 1{\sqrt{2\pi}}exp(-\frac12y^2)\cdot exp(\mu y-\frac12\mu^2) p(y;μ)=2π 1exp(21(yμ)2)=2π 1exp(21y2)exp(μy21μ2)
其中, η = μ , T ( y ) = y , a ( η ) = 1 2 μ 2 = 1 2 η 2 , b ( y ) = 1 2 π e x p ( 1 2 y 2 ) \eta=\mu,T(y)=y,a(\eta)=\frac12\mu^2=\frac12\eta^2,b(y)=\frac1{\sqrt{2\pi}}exp(-\frac12y^2) η=μ,T(y)=y,a(η)=21μ2=21η2,b(y)=2π 1exp(21y2)

另外,多项式分布,泊松分布, γ \gamma γ分布,指数分布, β \beta β分布,狄利克雷分布等也都属于指数分布族。

构建广义线性模型

构建广义线性模型基于以下三个假设:

  1. y x ; θ <mtext> ~ </mtext> E x p o n e n t i a l F a m i l y ( η ) y|x;\theta \text{\textasciitilde}ExponentialFamily(\eta) yx;θ~ExponentialFamily(η)。给定样本x与参数 θ \theta θ y y y的分布服从以 η \eta η为参数的指数分布族中的某个分布;
  2. 给定 x x x,广义线性模型的目标是求解 T ( y ) x T(y)|x T(y)x。大部分情况下, T ( y ) = y T(y)=y T(y)=y,所以我们的目标变为求 h ( x ) = E [ y x ] h(x)=E[y|x] h(x)=E[yx](比如在逻辑回归中, h θ ( x ) = p ( y = 1 x ; θ ) = 0 p ( y = 0 x ; θ ) + 1 p ( y = 1 ; x , θ ) = E [ y ; x , θ ] h_\theta(x)=p(y=1|x;\theta)=0\cdot p(y=0|x;\theta)+1\cdot p(y=1|;x,\theta)=E[y|;x,\theta] hθ(x)=p(y=1x;θ)=0p(y=0x;θ)+1p(y=1;x,θ)=E[y;x,θ]
  3. η = θ T x \eta=\theta^Tx η=θTx

逻辑回归的广义线性模型

  • 对于二分类,很自然想到y服从伯努利分布,所以满足第一个假设。
  • 第二个假设,对于伯努利分布来说, p ( y = 1 x ; θ ) = ϕ , p ( y = 0 x ; θ ) = 1 ϕ p(y=1|x;\theta)=\phi,p(y=0|x;\theta)=1-\phi p(y=1x;θ)=ϕ,p(y=0x;θ)=1ϕ
    参照前面伯努利分布推导过程, h θ ( x ) = E [ y x ; θ ] = ϕ = 1 1 + e η h_\theta(x)= E[y|x;\theta]=\phi=\frac1{1+e^{-\eta}} hθ(x)=E[yx;θ]=ϕ=1+eη1
  • 根据第三个假设, η = θ T x \eta=\theta^Tx η=θTx,所以 ϕ = 1 1 + e η = 1 1 + e θ T x \phi=\frac1{1+e^{-\eta}}=\frac1{1+e^{-\theta^Tx}} ϕ=1+eη1=1+eθTx1

得到sigmoid函数。

百面机器学习中的问题

问题1 逻辑回归相比于线性回归,有何异同?

首先,逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者的最本质的区别。逻辑回归中,因变量取值是一个二元分布,模型学习得出的是 E [ y x ; θ ] E[y|x;\theta ] E[yx;θ] ,即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。而线性回归中实际上求解的是 y = θ T x y&#x27; = {\theta ^{\rm{T}}}x y=θTx ,是对我们假设的真实关系 y = θ T x + ε y = {\theta ^{\rm{T}}}x + \varepsilon y=θTx+ε 的一个近似,其中 ϵ \epsilon ϵ代表误差项,我们使用这个近似项来处理回归问题。

逻辑回归与线性回归最大的区别,即逻辑回归中的因变量为离散的,而线性回归中的因变量是连续的。并且在自变量x与超参数θ确定的情况下,逻辑回归可以看作广义线性模型(Generalized Linear Models)在因变量y服从二元分布时的一个特殊情况;而使用最小二乘法求解线性回归时,我们认为因变量y服从正态分布。

当然逻辑回归和线性回归也不乏相同之处,首先我们可以认为二者都使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上就是在自变量x与超参数 θ θ θ确定,因变量y服从正态分布的假设下,使用极大似然估计的一个化简;而逻辑回归中通过对似然函数的学习,得到最佳参数 θ θ θ。另外,二者在求解超参数的过程中,都可以使用梯度下降的方法,这也是监督学习中一个常见的相似之处。

问题2 当使用逻辑回归处理多标签的分类问题时,有哪些常见做法,分别应用于哪些场景,它们之间又有怎样的关系?

当存在样本可能属于多个标签的情况时,我们可以训练k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归为第i类,训练该分类器时,需要把标签重新整理为“第i类标签”与“非第i类标签”两类。通过这样的办法,我们就解决了每个样本可能拥有多个标签的情况。
若每个样本只属于其中一类,则可以使用多项逻辑回归即softmax进行分类。
h θ ( x ) = [ <mstyle displaystyle="false" scriptlevel="0"> p ( y = 1 x ; θ ) </mstyle> <mstyle displaystyle="false" scriptlevel="0"> p ( y = 2 x ; θ ) </mstyle> <mstyle displaystyle="false" scriptlevel="0"> . </mstyle> <mstyle displaystyle="false" scriptlevel="0"> . </mstyle> <mstyle displaystyle="false" scriptlevel="0"> . </mstyle> <mstyle displaystyle="false" scriptlevel="0"> p ( y = k x ; θ ) </mstyle> ] = 1 <munderover> j = 1 k </munderover> e θ j T x [ <mstyle displaystyle="false" scriptlevel="0"> e θ 1 T x </mstyle> <mstyle displaystyle="false" scriptlevel="0"> e θ 2 T x </mstyle> <mstyle displaystyle="false" scriptlevel="0"> . </mstyle> <mstyle displaystyle="false" scriptlevel="0"> . </mstyle> <mstyle displaystyle="false" scriptlevel="0"> . </mstyle> <mstyle displaystyle="false" scriptlevel="0"> e θ k T x </mstyle> ] h_\theta(x)=\begin{bmatrix} p(y=1|x;\theta)\\ p(y=2|x;\theta)\\ .\\.\\.\\ p(y=k|x;\theta)\\ \end{bmatrix}=\frac1{\sum_{j=1}^ke^{\theta^T_jx}}\begin{bmatrix} e^{\theta^T_1x}\\ e^{\theta^T_2x}\\ .\\.\\.\\ e^{\theta^T_kx}\\ \end{bmatrix} hθ(x)=p(y=1x;θ)p(y=2x;θ)...p(y=kx;θ)=j=1keθjTx1eθ1Txeθ2Tx...eθkTx

参考链接

逻辑斯蒂回归,最大熵模型及其等价性