机器学习:逻辑回归

逻辑回归

在谈逻辑回归之前,先看个列子。心脏病预测:
在这里插入图片描述我们有某个人的相关资料,以及他是否患有心脏病。用这些资料进行训练,我们可以得到一个预测某人是否患有心脏病的模型。这是一个二元分类问题,输出空间为(−1,+1){(-1,+1)}(1,+1),目标函数为f(x)f(x)f(x)其表达形式如图所示。但是,在实际生活中,我们并不会直接说一个人是否一定患病,通常会给出一个概率值。比如我们在看过某个人的资料后,会告诉他,你患病的概率为70%。
在这里插入图片描述
更新目标函数的输出空间为[0,1]。那么问题就来了,如果采用二元分类,我们得到是只有{-1,+1}两种结果,如果用线性回归得到的是整个实数R上的一个集合。该如何处理算法,以满足我们的需求,让输出空间在[0,1]。

针对目标函数,理想的数据集,应该是这样的:
在这里插入图片描述
理想数据集给出的结果是发病的概率,然而真是的数据集确实这样的:
在这里插入图片描述
真实的数据集只有发病和没有发病两种情况,而不会在结录结果种出现概率。

可以将真实的训练集数据视为含有噪声的理想训练数据。问题就转化为:如何用真实的数据解决软二元分类问题,假使函数该如何设计。先回顾之前线性分类和二元分类所用的假使函数,看是否能在其中得到一点启发。线性分类是我们给出特征向量:x=[x1,x2,x3....xd]x=[x_1,x_2,x_3....x_d]x=[x1,x2,x3....xd]然后计算出权重向量WWW,在根据其来进行预测。
在这里插入图片描述
二元分类只不过是在其基础上进行了取正负号操作。我们可以采用和二元分类相似的方法来解决软二元分类问题。当sss计算出来以后,我们对sss进行某个函数映射,是他的值在0和1之间。一个非常好的选择就是sigmoid函数:
在这里插入图片描述
这个函数的图像如上图所示,可以实在从整个实数集R到[0,1]的映射。有个这个函数,我们就将假设函数设置为:
在这里插入图片描述
h(x)h(x)h(x)足够的接近f(x)f(x)f(x)

三种线性模型

从开始到现在我们接触了三种线性函数:二元分类,线性回归,逻辑回归:
在这里插入图片描述
这三种函数种有一个共同点,那就是都会出现WTXW^TXWTX,前两个的错误衡量方式分别为0/1误差和均方误差。那么逻辑回归的错误该怎么衡量呢?先简单介绍一个概念似然:对于目标函数f(x)=P(+1∣X)f(x)=P(+1|X)f(x)=P(+1X),如果找到了假设函数很接近目标函数。也就是在假设空间h中找到了一个g与目标函数非常的接近,能和目标函数产生同样的数据集D,那么就称这个g是最大似然函数,公式如下:

在这里插入图片描述
由逻辑回归可以推导出下式成立:
在这里插入图片描述
考虑一个数据集D=D=D={(x1,+1),(x2,−1.....)(x_1,+1),(x_2,-1.....)(x1,+1),(x2,1.....)},则通过目标函数产生此种样本的概率可以下面的式子进行表示:
在这里插入图片描述
由目标函数fff 对公式做如下替换:

在这里插入图片描述
目标函数是未知的,已知的只有假设函数,应用极大似然公式,可以用假设函数hhh替换目标函数:
likehood(h)=P(x1)∗h(x1)∗P(x2)∗)(1−h(x2))∗......likehood(h)=P(x_1)*h(x_1)*P(x_2)*)(1-h(x_2))*......likehood(h)=P(x1)h(x1)P(x2)(1h(x2))......
逻辑回归的假设函数h(x)=h(x)=h(x)=θ(wtx)\theta(w^tx)θ(wtx),有性质:1−h(x)=h(−x)1-h(x)=h(-x)1h(x)=h(x),因此可以将上式进行转化为:
在这里插入图片描述
因为p(xi)p(x_i)p(xi)对于所有的iii都一样,也就是说似然函数只与每个样本的连乘有关,将真实样本输入yn(−1,+1)y_n(-1,+1)yn(1,+1)引入公式:可以得到下面的式子成立:
在这里插入图片描述
因为寻找的是最大似然函数,可以得到下面的式子:
在这里插入图片描述
h(x)h(x)h(x)带入得:

在这里插入图片描述

连乘不易求解,因此对上式取对数,转化为连加形式:
在这里插入图片描述
通过引入符号,将最大化问题转化为最小化问题,同时引入平均系数 1N\frac{1}{N}N1

使得公式与之前的错误衡量类似:

在这里插入图片描述
θ(s)\theta(s)θ(s)带入上式:
在这里插入图片描述

逻辑回归的误差梯度

误差的表达式已经得到,接下来要做的就是最小化这个误差。
在这里插入图片描述
比较幸运的事情是这个误差函数是个凸函数,可以象处理线性回归的误差函数那样来处理这个函数。对他进行求导,利用微积分的相关知识就可以完成这个工作,只不过求导过程略微有点麻烦。具体求导过程如下所示:
在这里插入图片描述
在这里插入图片描述
最终的计算结果为:
在这里插入图片描述
为了让误差最小,就要让最终的计算结果为0。上式可以看为θ(−ynwtxn)\theta(-y_nw^tx_n)θ(ynwtxn)−ynxn-y_nx_nynxn的线性加权,要使得这两部分的线性加权为0.有两种情况:

  • 线性可分:如果所有的权重θ(−ynwtxn)\theta(-y_nw^tx_n)θ(ynwtxn)为0,那么整个式子自然为0,使得θ(−ynwtxn)\theta(-y_nw^tx_n)θ(ynwtxn)为0的条件是,(−ynwtxn)(-y_nw^tx_n)(ynwtxn)小于0,也即:(ynwtxn)(y_nw^tx_n)(ynwtxn)>>根据sigmoid函数的性质整个函数值趋近于0.(ynwtxn)>0(y_nw^tx_n)>0(ynwtxn)>0也就意味着所有的预测值和真实值相同,只有线性可分才能做到。
  • 线性不可分:比较麻烦,只能用迭代法进行。
    在开始之前先简单回顾一下PLA的相关内容:
    在这里插入图片描述
    每次出现错误时,PLA更新了两个内容,一个是方向也即(ynxn)(y_nx_n)(ynxn)记为vvv:另一个是步长。这个概念之前没有提过,记为:η\etaη。这两个参数和终止条件决定了迭代优化算法。
    在这里插入图片描述
梯度下降

逻辑回归求解最小误差使用类似PLA的迭代算法,通过一步步改变权值向量www,寻找使得误差最小的权值向量www,该迭代方法的公式如下:
在这里插入图片描述
上式中,vvv表示分心的方向,η\etaη表示更新的步长。逻辑回归的误差函数是处处可微的凸函数,其曲线的谷底对应最小的误差。
在这里插入图片描述
那么该如何选择这两个参数使得下降的最快,在步长确定的情况下,沿着梯度的方向下降最快,也即|vvv|=1
在这里插入图片描述
以上是非线性带约束公式,寻找最小的www仍有困难,考虑将其转化为一个近似的公式,通过寻找公式中最小的www,达到寻找原公式最小www的目的,利用泰勒展开。
在这里插入图片描述
我们将EinE_{in}Einwtw_twt处展开≈Ein(wt)+(wt+ηv−wt)+ΔEin(wt)\approx{E_{in}}(w_t)+(w_t+\eta{v}-w_t)+\Delta{E_{in}(w_t)}Ein(wt)+(wt+ηvwt)+ΔEin(wt)
进一步转化为:
在这里插入图片描述
迭代的目的是让Ein(wt)E_{in}(w_t)Ein(wt)越来越小,即让Ein(wt+ηv)<Ein(wt)E_{in}(w_t+\eta{v})<E_{in}(w_t)Ein(wt+ηv)<Ein(wt)
η\etaη为标量,如果两个向量方向相反,则他们的内积最小为负。也就是说更新方向和梯度方向相反的话,就能保证每次迭代Ein(wt+ηv)<Ein(wt)E_{in}(w_t+\eta{v})<E_{in}(w_t)Ein(wt+ηv)<Ein(wt) 。于是令梯度下降方向为:
在这里插入图片描述
vvv是单位向量,每次都沿着梯度的反向更新,这种算法称为:梯度下降,实际应用中最常用的为随机梯度下降

更新方向确定后,再来看步长对下降的影响:
在这里插入图片描述
步长太小的话 下降速度过慢,步长过大又容易反复横跳。因此选取合适的步长就非常的重要:这里给出步长计算公式:
在这里插入图片描述
最终的计算公式为:

在这里插入图片描述
此时的η\etaη称为固定学习率,公式称为固定学习率的梯度下降
总结以下梯度下降的算法的流程:
在这里插入图片描述

  • 初始化权重:初始化权重向量wwww0w_0w0
  • 计算梯度:ΔEin(wt)\Delta{E_{in}(w_t)}ΔEin(wt)
  • 迭代更新
  • 计算终止:ΔEin(wt)\Delta{E_{in}(w_t)}ΔEin(wt)=0迭代结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值