Logistic Regression详解

来源:互联网 发布:中国软件国际地址 编辑:程序博客网 时间:2024/05/31 13:14

Logistic Regression(简称LR)作为一个经典的机器学习分类算法,由于其出众的分类效果和简单的模型,在学术界和工业界都占有重要的地位。此外,Logistic Regression构造目标函数的思路也很值得学习和借鉴。

一、二分类问题:

Logistic函数:

      Logistic Regression的核心是Logistic函数,损失函数的构造也正是利用了Logistic函数的特点。Logistic函数形式如下:

δ(a)=11+ea

Logistic Function

从图中可以发现,当a接近6时,函数值接近于1;当a接近-6时,函数值接近于0。这为0-1分类提供了很好的特性。

损失函数:

Logistic Regression用“Logistic函数+线性模型”来预测0-1类别的概率:

P(C1|x)=δ(xw)=11+exw

其中x1×d是输入样本,wd×1是投影向量。当xw的值较大时,P(C1|x)接近于1。
P(C0|x)=1P(C1|x)

定义样本的标签为ti{0,1},则训练数据集上的似然函数为:

P(t|w)=i=1nP(C1|xi)ti(1P(C1|xi))1ti=i=1nP(C1|xi)tiP(C0|xi)1ti

很巧妙的,当ti=1时(类别1),P(t|w)增加一项P(C1|xi);当ti=0时(类别0),P(t|w)增加一项P(C0|xi)。这个小技巧已经被广泛应用,不得不佩服研究人员的智慧。

构造损失函数(Negative Log-Likelihood):也称为交叉熵(cross-entropy)误差函数,对P(t|w)取负对数

E(w)=lnP(t|w)=i=1n{tilnP(C1|xi)+(1ti)ln(1P(C1|xi))}

对损失函数进行拆分:

Cost={lnP(C1|xi)ln(1P(C1|xi))ifti=1,ifti=0.

cost1        cost0

两幅Cost图很直观的展示了P(C1|xi)ti的值对Cost的影响。当ti=1时,P(C1|xi)的值越大,Cost越小;ti=0时相反。

求偏导:

最小化损失函数求w,通常可以使用梯度下降算法得到w的局部最优值。对梯度下降算法的介绍可以参考我的另一篇博文: 深入了解梯度下降算法

P(C1|x)w=11+exww=(1+exw)1w=exw(x)(1+exw)2=exw1+exw11+exwx=(1P(C1|x))P(C1|x)x

损失函数对w求偏导:

E(w)w=i=1n{tiP(C1|xi)P(C1|xi)w+1ti1P(C1|xi)(P(C1|xi)w)}=i=1n{ti(1P(C1|xi))xi(1ti)P(C1|xi)xi}=i=1n{titiP(C1|xi)P(C1|xi)+tiP(C1|xi)}xi=i=1n{P(C1|xi)ti}xi

至此,已经可以很容易写出二分类问题Logistic Regression分类器的代码了,在此不再赘述。

二、多类情况:

   多分类问题的Logistic Regression与二分类问题很相似,多分类Logistic Regression用的是Softmax函数,但是在本质上Softmax函数和Logistic函数优化目标是一致的。

Softmax:

P(Y=i|x~,W~,b)=softmaxi(x~W~+b)=ex~W~i+bijex~W~j+bj

   在实际中,常把偏置b加入到W~矩阵内:Wi=[W~i,bi]。同时在样本x~的最后扩展一维:x=[x~,1]。Softmax式子简化后的形式是:

P(Y=i|x,W)=softmaxi(xW)=exWijexWj

类别预测:

ypred=maxiP(Y=i|x,W)

符号定义说明:

  • 向量x1×d是输入数据,整个训练集为Xn×d,每一行是一个样本;
  • 矩阵Wd×K是投影矩阵,每一列对应于一个类别,共有K个类;
  • 数据的原始标签为yn×1,对应于n个样本。

损失函数:

   把原始标签信息写成矩阵的形式Tn×K,如果第i个样本属于类别k,则tik=1,否则tik=0:

tik={10iflabel(xi)=k,iflabel(xi)k.

每个样本只属于一个类,所以可以得到(这个式子会在后面求偏导的时候用到):

ktik=1

似然函数:

P(T|W)=i=1nP(Y=yi|Xi,W)=i=1nk=1KP(Y=k|Xi,W)tik

构造损失函数(Negative Log-Likelihood):

E(W)=lnP(T|W)=i=1nk=1KtiklnP(Y=k|Xi,W)

这是多分类问题的交叉熵(cross-entropy)误差函数。

求偏导:

为了符号的简洁,记Pik=P(Y=k|Xi,W)=eXiWkjeXiWj

PicWc=eXiWcjeXiWjXi(eXiWc)2(jeXiWj)2Xi=(PicP2ic)Xi

PikWc=eXiWkeXiWc(jeXiWj)2Xi=PikPicXi,kc

损失函数对Wc求偏导:

E(W)Wc=(ni=1ticlnPicWc+ni=1kctiklnPikWc)=(i=1ntic1Pic(PicP2ic)Xi+i=1nkctik1Pik(PikPic)Xi)=(i=1ntic(1Pic)i=1nkctikPic)Xi=(i=1ntici=1nk=1KtikPic)Xi,k=1Ktik=1=(i=1ntici=1nPic)Xi=i=1n(Pictic)Xi

有了偏导之后,就可以用梯度下降算法优化参数W。也可以用BFGS或L-BFGS等算法进行优化。

和二分类问题的比较:

1、在构造损失函数时,多分类问题和二分类问题都是用的负对数似然作为目标函数。

2、优化方法相同,都可以用梯度下降算法寻找局部最优值。并且两种情况下偏导的结果也是惊人的一致,主要还是由于Softmax和Logistic函数本质上是一致的。

3、Softmax函数:

P(Y=i|x,W)=softmaxi(xW)=exWijexWj=exWijiexWj+exWi=1jiexWjexWi+1=1(jiexWj)exWi+1

jiexWj=1
softmaxi(xW)=11exWi+1=1exWi+1

所以Softmax和Logistic函数主要的区别就在于Logistic函数固定为常数1,而Softmax是一个实数jiexWj,并且是在迭代过程中不断更新的。

三、参考资料:

[1] M.Bishop: Pattern Recognition and Machine Learning(PRML,机器学习圣经)

[2]Andrew Ng: Stanford Machine Learning(Coursera)

0 0
原创粉丝点击