林轩田之机器学习课程笔记( how can machines learn之logistic regression)(32之10)

欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen

概要

上节课我们求解了线性回归问题,同时采用线性回归问题的解去求解二分类问题,那么本节主要讲解逻辑回归,顺便说一下,在实际工作中逻辑回归会作为一个base line。比如在百度凤巢的ctr中,会收集大量的特征,然后采用逻辑回归求解,现在已经采用深度学习的方法。所以一般来说在做机器学习的时候,采用简单到复杂的模型。

逻辑回归问题

首先回顾机器学习流程,对于分类问题如下:
这里写图片描述
但是在医院中我们还需要知道一个病人未来一段时间比如生病的概率是多少,手术成功的概率是多少?
有的时候不想知道这个结果,而是想知道得到这个结果的概率是多少。
这个时候,我们的 f(x) 表示为,给定一个X,取+1的概率是多少。取-1,就是1减喽。

f(x)=P(+1|X){+1,1}

假如资料中的标签已经有各种的概率,那么直接采用线性回归就完事儿了啊,但是实际情况是得不到这样的标签的。
这里写图片描述
这里可以将右边的标签看做是左边有噪音的结果。比如我本来想得到0.7的概率,结果返回到了+1,本来想0.3,结果返回了-1。
这里写图片描述
那么现在只有0和1的标签,那么怎么来求解概率呢?
首先想到的是将各个特征找到一个权重相乘相加,但是这样得到的是一个实数,我们需要的是一个概率,在0~1之间的值。如何做呢?这个时候采用逻辑函数来将结果映射到0~1之间。
这里写图片描述
单独看看逻辑函数如下:
这里写图片描述
逻辑函数:
θ(s)=11+es

这么顺便说一下,逻辑函数应用的范围比较广,在深度学习中,逻辑函数可以作为激活函数

逻辑回归损失函数

我们对比下线性回归,逻辑回归,二分类的损失函数:
这里写图片描述
那么逻辑回归的损失函数是啥呢?如何来最小化呢?这就引入了似然函数,如下图所示;
这里写图片描述
所以最后我们的假设为:

g=argmaxh likelihood(h)

又因为: h(x)=1h(x)
这里写图片描述
我们将h通过w来进行替换,因为我们最后想要的是w。
maxw likelihood(w)=n=1Nθ(ynwTxn)

我们将上面的式子稍作转换,因为一般在求解的时候,更多的是求最小。上面的式子等价于:
minw1Nn=1Nlnθ(ynwTxn)=minw1Nn=1Nln(1+e(ynwTxn))=minw1Nn=1Nerr(yn,w,xn)

其中 err(yn,w,xn)=ln(1+e(ynwTxn)) ,这个我们称为交叉熵损失函数。
关于交叉熵损失函数参考:
http://blog.csdn.net/jasonzzj/article/details/52017438
这里要说明的是逻辑回归的损失函数是一个凸函数,如下图:
这里写图片描述

逻辑回归损失函数的梯度

我们知道现在有了逻辑回归的损失函数,现在需要最小化之,求得w。当目标函数是可微,凸函数那么我们直接求得偏导数为0的地方就好了。求得梯度得到:

Ein(w)=1Nn=1Nθ(ynwTxn)(ynxn)=1Nn=1Nynθ(ynwTxn)xn

要使得梯度为0。一种情况是所以的 θ=0 当且仅当 ynwTxn>>0 这表示我们的资料是线性可分的。所以如果资料线性可分的情况下,那么可以得到梯度为0。
只要不可分,那么不能采用这样的办法,这貌似不是一个闭式解。
又因为我们知道逻辑回归的损失函数是一个凸函数,那么可不可以采用像PLA的方式来求解呢?
这里写图片描述

梯度下降求解

在上节中我们知道,逻辑回归没有闭式解,损失函数是凸函数。那么我们想象采用PLA的方式,一步步的更新我们的w,使得其趋于谷底,达到最好。

wt+1=wt+ηv

那么现在我们需要解决两件事情:
1)v,确定w的更新方向。
2) η ,更新步长。
来使得 Ein 减小。现在先假设步长固定的,确定好方向。

泰勒展开式来拯救我们了,任何的函数,在定义域的一个很小区间内,我们可以展开为其一阶导数的函数,那么上面的 Ein 展开为:
这里写图片描述
那么该问题就转换为了:
这里写图片描述
所以我们要想 wt 走到下一步 wt+1 变小的话,那么v应该是一阶梯度的负方向。所以:

v=Ein(wt)||Ein(wt)||v

所以我们已经确定w更新的方向。那么每一步走多大呢?
如果很小,就会导致运算非常慢,如果很大步呢?那就会导致凸函数可能跑到山谷对面了。
这里写图片描述

泰勒展开也是限定在比较小的范围内才成立。不能太大,太小运算过慢。所以最好是坡度比较大,走大步一点,坡度小走小点。这个时候坡度大就是表示梯度大,坡度小,梯度就小了。所以:

η||Ein(wt)||

由上面得式子我们得到:
wt+1=wtηEin(wt)||Ein(wt)||=wtkEin(wt)

这里 k=η||Ein(wt)|| 。这个不就是我们需要求解的 η 么?
所以最后我们得到:
wt+1=wtηEin(wt)

所以我们只要不断的迭代算算,就一定会得到我们需要的解。

关于逻辑回归的代码可以参考:
http://blog.csdn.net/cqy_chen/article/details/64479457

欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值