线性回归&逻辑回归&最小二乘法&最大似然法

本文深入探讨了线性回归和逻辑回归的核心概念,包括它们的目标函数、损失函数及其背后的数学原理。通过对比两种方法,解释了为何逻辑回归在处理二分类问题时采用特定的损失函数。

线性回归

target function:

f(x)=wx+bf(x)=wx+b

 
loss function:

最小二乘的角度:

mini=0N(yif(xi))2min∑i=0N(yi−f(xi))2

最大似然的角度:

maxi=0N(12πσe(yif(xi))22σ2)max∏i=0N(12πσe−(yi−f(xi))22σ2)

=maxln{i=0N(12πσe(yif(xi))22σ2)}=maxln⁡{∏i=0N(12πσe−(yi−f(xi))22σ2)}

=maxi=0N{ln(12πσ)+ln(e(yif(xi))22σ2)}=max∑i=0N{ln⁡(12πσ)+ln⁡(e−(yi−f(xi))22σ2)}

=maxi=0N{ln(12πσ)+((yif(xi))22σ2)}=max∑i=0N{ln⁡(12πσ)+(−(yi−f(xi))22σ2)}

=Nln(12πσ)+maxi=0N((yif(xi))22σ2)=N∗ln⁡(12πσ)+max∑i=0N(−(yi−f(xi))22σ2)

=Nln(12πσ)+N2σ2mini=0N(yif(xi))2=N∗ln⁡(12πσ)+N2σ2min∑i=0N(yi−f(xi))2

Nln(12πσ)N∗ln⁡(12πσ)N2σ2N2σ2都是常数,可以不看,最终的loss function化简结果为:
mini=0N(yif(xi))2min∑i=0N(yi−f(xi))2

 
无论是最小二乘法推导,还是从最大似然推导,得到的损失函数是相同的。

相同的原因在于:
最小二乘法遵循前提:yiyi存在误差,而误差的分布满足以f(x)f(x)为中心的正态分布。

最小二乘:(yif(xi))2(yif(xi))2(yi−f(xi))2∝(yi−f(xi))2
最大似然:ln(12πσe(yif(xi))22σ2)(yif(xi))2ln⁡(12πσe−(yi−f(xi))22σ2)∝(yi−f(xi))2

PS:把maxNi=0(Pi)max∏i=0N(Pi)转换为maxlnNi=0(Pi)maxln⁡∏i=0N(Pi)这一步想法很巧妙。

 
 
 
 

逻辑回归

  在线性回归中,我们target function用f(x)=wx+bf(x)=wx+b,是因为yiyi满足线性分布,yiRyi⊆R,但是当在解决一个二分类问题/二型分布时,yi{0,1}yi⊆{0,1},就不能在用f(x)=wx+bf(x)=wx+b来进行拟合。因为得到的预估结果f(x)Rf(x)⊆R,预估范围与目标范围不匹配,同时误差不好定义。
  所以,引入了sigmod函数,用于对线性得到的结果进行一次映射:sigmod(x)=11+exsigmod(x)=11+e−x。sigmod导数:sigmod(x)=singmod(x)[1sigmod(x)]sigmod′(x)=singmod(x)∗[1−sigmod(x)]
  所以我们定义target function:

g(f(x))=sigmod(f(x))=11+ef(x)=11+ewxbg(f(x))=sigmod(f(x))=11+e−f(x)=11+e−wx−b

 
  引入sigmod后解决了区间的问题,但是loss function的定义又是一个问题。最快想到的就是类似线性回归中类似定义loss function:

mini=0N[yig(f(xi))]2min∑i=0N[yi−g(f(xi))]2

 
  这样定义其实是可以的,因为如果我们的预测准确性很高的话,lim(yig(xi))0lim(yi−g(xi))→0,则Ni=0(yig(xi))20∑i=0N(yi−g(xi))2→0,loss function达到最小值。

  以上定义的loss function的最优解满足我们的期望“误差最小”,但是我们在求解ww最优解的过程中会出现问题,我们一般是使用“梯度下降”的方式寻找最优解。但“梯度下降”能找到最优解的前提是“函数是凸函数”。很遗憾这个loss function并不满足,详情如下:

  “梯度下降”即:不断进行w=wloss(w)运算,最终ww收敛到某个稳定值。此时我们认为loss function达到最小值。
 
  进行一下模拟:

loss(w)=i=0N2[yig(f(xi))](1)gf(f(x))fw(xi)

loss(w)=i=0N2[yig(f(xi))](1)g(f(xi))[1g(f(xi))]xiloss′(w)=∑i=0N2∗[yi−g(f(xi))]∗(−1)∗g(f(xi))∗[1−g(f(xi))]∗xi

loss(w)=i=0N(2xi)[yig(f(xi))]g(f(xi))[1g(f(xi))]loss′(w)=∑i=0N(−2xi)∗[yi−g(f(xi))]∗g(f(xi))∗[1−g(f(xi))]

分类讨论:

yi=0yi=0时,xixi对导数的贡献为:

loss(w)=(2xi)[0g(f(xi))]g(f(xi))[1g(f(xi))]loss′(w)=(−2xi)∗[0−g(f(xi))]∗g(f(xi))∗[1−g(f(xi))]

loss(w)=2xig(f(xi))2[1g(f(xi))]loss′(w)=2xi∗g(f(xi))2∗[1−g(f(xi))]

yi=1yi=1时,xixi对导数的贡献为:

loss(w)=(2xi)[1g(f(xi))]g(f(xi))[1g(f(xi))]loss′(w)=(−2xi)∗[1−g(f(xi))]∗g(f(xi))∗[1−g(f(xi))]

loss(w)=(2xi)g(f(xi))[1g(f(xi))]2loss′(w)=(−2xi)∗g(f(xi))∗[1−g(f(xi))]2

  我们假设xi>0xi>0(不考虑xixi的影响)
  以下讨论yi=0yi=0时的情况,yi=1yi=1的情况类似。不在讨论。
  
  yi=0yi=0时,loss(w)g(f(x))loss′(w)—g(f(x)) 关系曲线大致如图:

这里写图片描述
loss(w)f(x)loss′(w)—f(x) 关系曲线大致如图:
这里写图片描述
  基于loss(w)__g(f(x))loss′(w)__g(f(x))的图像我们可以知道:yi=0yi=0时,g(f(x))g(f(x))的值越靠近1或者越靠近0时的变化越来越小。所以可以评估loss(w)__g(f(x))loss(w)__g(f(x))图像大致如下(同样假设yi=0yi=0):
这里写图片描述

  现在考虑假设情况:
  y0=0,g(x0)=0.98y0=0,g(x0)=0.98
  y1=1,g(x1)=0.80y1=1,g(x1)=0.80
  此时我们对ww进行梯度下降,gw(x0)=h0gw(x1)=h1h0>0,h1>0
  因为我们刚才讨论,g(f(x))在趋近于0或者1时导数越小,所以h0<h1h0<h1,也就是梯度下降方向:

loss(w)=gw(x0)(gw(x1))=h1h0>0−loss′(w)=−gw′(x0)−(−gw′(x1))=h1−h0>0

 
  我们发现梯度下降的方向是gw(x1)gw′(x1)主导的,w正在朝着(gw(x1))(−gw′(x1))的方向变化,这将使得g(x1)g(x1)得到优化,但代价是进一步牺牲g(x0)g(x0)的准确性,因为ww正在朝着(gw(x0))的反方向改变。
  经过这样一步之后,可能结果变成:
  y0=0,g(x0)=0.99y0=0,g(x0)=0.99
  y1=1,g(x1)=0.84y1=1,g(x1)=0.84
  更可怕的是梯度最终会稳定在gw(x0)=gw(x1))−gw′(x0)=gw′(x1))的时候。此时结果大概为:
  y0=0,g(x0)=0.9999y0=0,g(x0)=0.9999
  y1=1,g(x1)=0.999y1=1,g(x1)=0.999
  

  陷入了局部最优,失败。


分析一下错误的原因:
  进行调节的过程中,每个数据xixiloss(w)loss′(w)的贡献值为([yig(f(xi))]2)([yi−g(f(xi))]2)′,我们对ww的调节是将每个数据xi的贡献(也就是导数)相加,所以导数的(绝对值)大小可以理解为表征自己偏离正确答案的差距,应该做到预测结果越偏离真实值,导数的绝对值越大。
  显然上文中的loss function的导数并不是这样。比如yi=0yi=0时,g(xi)=0.7g(xi)=0.7时的导数的绝对值大于g(xi)=0.9g(xi)=0.9处的导数的绝对值。说明loss function认为0.7处的改善比0.9处的改善更加迫切。当若干组数据提供的梯度方向不一致时,导数又错误的表述了该组数据“等待改变的迫切情况/偏离正确的程度”。最终导致梯度相加得到的结果是不准确的,收敛到局部最优。

  那么怎么可以避免这种情况呢。就是当导数是单调的时候
  比如在yi=0loss(w)__g(f(x))yi=0时,loss′(w)__g(f(x)) 关系曲线如下图:
这里写图片描述

以上图为例。

loss(w)loss′(w)是单调的

g(f(x1))>g(f(x2)),loss(x1)>loss(x2)⇒若g(f(x1))>g(f(x2)),则loss(x1)>loss(x2)

loss(x1)+loss(x2)<2loss(x1+x22)⇒loss(x1)+loss(x2)<2∗loss(x1+x22)

loss(w)⇒loss(w)是凸函数

 
  所以我们的loss function 要满足2个条件:

1.g(f(xi))g(f(xi))越偏离yiyi时,loss(w)loss(w)值越大

2.g(f(xi))g(f(xi))越偏离yiyi时,loss(w)loss′(w)绝对值越大,其实等价于要求loss(w)loss(w)是一个凸函数

 
  所以我们给出新的loss function,定义其为:

mini=0N[(1yi)(ln(1g(f(xi))))+yi(lng(f(xi)))]min∑i=0N[(1−yi)∗(−ln⁡(1−g(f(xi))))+yi∗(−ln⁡g(f(xi)))]

 
  此式的灵感由最大似然得到。
  经过这样一个改进,在满足第一个条件的情况下,也让loss function满足了第二个条件。理由如下:

yi=0yi=0时,xixi对loss function导数的贡献为:

loss(w)=(ln(1g(f(xi))))loss′(w)=(−ln⁡(1−g(f(xi))))′

loss(w)=(1)11g(f(xi))(1)gf(f(xi))fw(xi)loss′(w)=(−1)∗11−g(f(xi))∗(−1)∗gf′(f(xi))∗fw(xi)

loss(w)=11g(f(xi))g(f(xi))[1g(f(xi))]xiloss′(w)=11−g(f(xi))∗g(f(xi))∗[1−g(f(xi))]∗xi

loss(w)=g(f(xi))xiloss′(w)=g(f(xi))∗xi

loss(w)__g(f(x))loss′(w)__g(f(x))是一个单调函数,且loss(w)loss′(w)越远离0,靠近1,其绝对值越大,满足条件。

yi=1yi=1时,xixi对loss function导数的贡献为:

loss(w)=(lng(f(xi)))loss′(w)=(−ln⁡g(f(xi)))′

loss(w)=(1)1g(f(xi))gf(f(xi))fw(xi)loss′(w)=(−1)∗1g(f(xi))∗gf′(f(xi))∗fw(xi)

loss(w)=(1)1g(f(xi))g(f(xi))[1g(f(xi))]xiloss′(w)=(−1)∗1g(f(xi))∗g(f(xi))∗[1−g(f(xi))]∗xi

loss(w)=[g(f(xi))1]xiloss′(w)=[g(f(xi))−1]∗xi

loss(w)__g(f(x))loss′(w)__g(f(x))是一个单调函数,且loss(w)loss′(w)越远离1,靠近0,其绝对值越大,满足条件。

 
  综上所述,该loss function满足两个条件,为凸函数。同时yi=0yi=1yi=0与yi=1两种情况下,loss(w)__g(f(x))loss(w)__g(f(x))loss(w)__g(f(x))loss′(w)__g(f(x))两个图像左右对称,保证了不偏向0或者1中的某一个。
  

SUCCESS SUCCESS 

回过头我们在来评估下线性回归的loss function 为什么不会出现问题:

loss=mini=0N(yif(xi))2loss=min∑i=0N(yi−f(xi))2

xixi对loss function导数的贡献为:

loss(w)=2(yif(xi))(xi)loss′(w)=2∗(yi−f(xi))∗(−xi)

可以看出如果f(xi)f(xi)yiyi差越大的话,也就是如果给出的评估与实际结果偏差越远,则loss’(w)绝对值越大。满足条件。

 
  总结整个流程就是:
  1.寻找loss function目前没有什么很好很通用的方法,所以一般用梯度下降算法。
  2.梯度的最终方向是将数据xixi的梯度相加,这就要求xixi的梯度要以全局考虑,taget(xi)taget(xi)越靠近yiyi,那xixi你的梯度就越小,把主导机会留给其他taget(xi)taget(xi)远离yiyi的数据。即

|target(xi)yi||loss(xi)||target(xi)−yi|↑,|∇loss(xi)|↑

  
  
  
PS:如果你能找到一个寻找到全局最优解的方法,且这个方法没有“凸函数”之类的前提要求。你就可以在逻辑回归中使用minNi=0[yig(f(xi))]2min∑i=0N[yi−g(f(xi))]2作为loss function。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值