逻辑回归(Logistic Regression)
软性二分类(Soft Binary Classification)
逻辑回归实际上是一种软性二分类(Soft Binary Classification),与 硬性二分类(Hard Binary Classification)的区别是数据一致,但是目标函数不同,软性二分类的目标是给出分类结果为正负样本的概率分别为多少,比如预测是否发放信用卡时,不在是 0/1 ,而是预测发放信用卡的概率的是多大。
目标函数公式如下:
f(x)=P(+1∣x)∈[0,1]
逻辑假设函数(Logistic Hypothesis)
与硬二分类(perceptron)不同的是不在使用 sign 函数,取而代之的是逻辑函数 θ(s),利用分数(wTx)来估计概率,所以逻辑假设函数(Logistic hypothesis)如下:
h(x)=θ(wTx)
其中 θ(s) 的数学表达为:
θ(s)=1+eses=1+e−s1
可以推导出 1−θ(s)=θ(−s)。
绘制出曲线如下:
可见 θ(s) 是光滑(smooth),单调(monotonic),像 S 一样的乙状(sigmoid)函数。
逻辑假设函数的最终形式为:
h(x)=1+exp(−wTx)1
那么其也具备 θ(s) 的性质,即 1−h(x)=h(−x)。
由前所述,逻辑回归的目标函数可以获取该样本为分别为正负样本的概率:
P(y∣x)={f(x)1−f(x) for y=+1 for y=−1
交叉熵误差(Cross-Entropy Error)
现在有了逻辑假设函数,那么 Ein (w) 如何设计呢,这里选择全部样本分类正确的概率,这里叫做 likelihood(h):
Consider D={(x1,1),(x2,−1),…,(xN,−1)} :
likelihood(h)=P(x1)P(1∣x1)×P(x2)P(−1∣x2)×…P(xN)P(−1∣xN)=P(x1)h(x1)×P(x2)(1−h(x2))×…P(xN)(1−h(xN))=P(x1)h(x1)×P(x2)h(−x2)×…P(xN)h(−xN)=P(x1)h(y1x1)×P(x2)h(y2x2)×…P(xN)h(ynxN)=n=1∏Nh(ynxn)
那么最佳假设函数 g 为:
g=hargmaxlikelihood(h)
为了方便计算这里将 likelihood(h) 做一下转换:
likelihood(w)∝n=1∏Nθ(ynwTxn)
现在可以将其转换为相同任务的另一种形式,将连乘和求最大值
转换为累加和求最小值
:
wmax likelihood(w)⇒wmaxln likelihood(w)⇒wmaxn=1∑Nlnθ(ynwTxn)⇒wminN1n=1∑N−lnθ(ynwTxn)⇒wminN1n=1∑N−ln(1+exp(ynwTxn)1)⇒wminN1n=1∑Nln(1+exp(ynwTxn))⇒wminN1n=1∑Nerr(w,xn,yn)⇒Ein(w)
其中 err(w,xn,yn)=ln(1+exp(ynwTxn)) 被称作交叉熵误差(cross-entropy error)。
梯度下降 (Gradient Descent)
求得的Ein 仍然是连续的(continuous), 可微的(differentiable),二次可微的(twice-differentiable),凸的(convex)函数。那么根据连续可微凸函数的最优必要条件梯度为零,便可以获得最优的hypothesis。
下面来推导一下梯度 ∇Ein(w):
为了书写方便用圆圈和方块表示两个部分:
Ein(w)=N1n=1∑Nln(□1+exp(−ynwTxn◯))
那么 Ein 在 wi 上的偏导为:
∂wi∂Ein (w)=N1n=1∑N(∂□∂ln(□))(∂◯∂(1+exp(◯)))(∂wi∂−ynWTxn)=N1n=1∑N(□1)(exp(◯))(−ynxn,i)=N1n=1∑N(exp(◯)+1exp(◯))(−ynxn,i)=N1n=1∑Nθ(◯)(−ynxn,i)
那么进一步可求得:
∇Ein(w)=N1n=1∑Nθ(−ynwTxn)(−ynxn)
如何使得梯度为零呢?
这里借鉴与PLA,使用迭代优化策略(iterative optimization approach):
For t=0,1,…
wt+1←wt+ηv
when stop, return last w as g.
其中 v 为单位方向向量,即 ∣∣v∣∣=1;而 η 代表了步长,所以用为正实数。
那么优化目标便变成:
∥v∥=1minEin(wt+ηv)
方向向量 v
那么先不考虑步长,认为其非常小,那么可以通过泰勒展开转换为:
Ein(wt+ηv)≈Ein(wt)+ηvT∇Ein(wt)
可以看出:
∥v∥=1minknown Ein (wt)+given positive ηvTknown ∇Ein (wt)
看下图,当在原始点向最优点搜索时,应当顺着负梯度方向搜索。
同时从理论上讲,在不考虑步长时,当两个向量方向相反时,其乘积最小,所以方向向量应该是与梯度方向完全相反的单位向量:
v=−∥∇Ein(Wt)∥∇Ein(Wt)
那么迭代函数(η is small)则为:
wt+1←wt−η∥∇Ein(wt)∥∇Ein(wt)
步长 η
观察下面三条曲线:
可以看出步长应当随着梯度大小进行调整,也就是第三条曲线上的搜索过程是最佳的。即步长 η 应与 ∥∇Ein(Wt)∥ 单调(monotonic)相关。
现在令 η=η⋅∥∇Ein(Wt)∥ ,那么迭代式可进一步转换为:
wt+1←wt−η∇Ein(wt)
这就是梯度下降法,一个简单而有常用的优化工具(a simple & popular optimization tool)。
算法实现
initialize w0
For t=0,1,…
-
cumpute
∇Ein(w)=N1n=1∑Nθ(−ynwTxn)(−ynxn)
-
update by
wt+1←wt−η∇Ein(wt)
-
… until ∇Ein(w)=0 or enough iterations
return wt+1 as g
逻辑回归(Logistic Regression)→分类(Classification)
在学习线性回归时就讨论过是否可以用于分类,现在进行相同的分析:
先令 s=wTx ,同时当用于二分类时 y∈{−1,+1} 所以各误差函数可以转换如下:
err0/1 (s,y)errSQR(s,y)errCE (s,y)errSCE(s,y)=[sign(s)=y]=[sign(ys)=1]=(y−s)2=(ys−1)2=ln(1+exp(−ys))=log2(1+exp(−ys))
其中 errSCE 是通过 errCE 乘以 1/ln(2) 获得的。
绘制出误差函数的曲线图关系(其中 errCE 与 errSCE 相似不再绘制):
由图可知:
err0/1(s,y)≤errSCE(s,y)=ln21errCE(s,y)
进而推导得:
Ein0/1(w)≤EinSCE(W)=ln21EinCE(w)Eout0/1(w)≤EoutSCE(W)=ln21EoutCE(w)
那么可以得知:
Eout0/1(w)≤Ein0/1(w)+Ω0/1≤ln21EinCE(w)+Ω0/1
或者:
Eout 0/1(w)≤ln21Eout CE(W)≤ln21Ein CE(W)+ln21ΩCE
进而得知:
small EinCE(w)⇒ small Eout0/1(w)
所以逻辑回归可以用于分类。
实际运用中:
- linear regression sometimes used to set w0 for PLA/pocket/logistic regression
线性回归可用于获取PLA/pocket/logistic regression的初始权重向量
- logistic regression often preferred over pocket
逻辑回归比口袋算法更为常用
随机梯度下降 (Stochastic Gradient Descent)
随机梯度下降的思想为:
stochastic gradient=true gradient+zero-mean ‘noise’ directions
即认为在迭代足够多步后:
average true gradient≈average stochastic gradient
其迭代公式为:
wt+1←wt+η−∇err(wt,xn,yn)θ(−ynwtTxn)(ynxn)
由此看出其使用单个权重的偏导替换全部的梯度,将时间复杂度由 O(N) 降为 O(1) 。