线性模型篇之Logistic Regression数学公式推导

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki

个人网站:http://thinkgamer.github.io


两分类与多分类

  • 两类分类(Binary Classification)
    • 类别标签y只有两种取值,通常设为{0,1}
    • 线性判别函数,即形如 y = w^T*x + b
    • 分割超平面(hyper plane),由满足f(w,x)=0的点组成
    • 决策边界(Decision boundary)、决策平面(Decision surface):即分分割超平面,决策边界将特征空间一分为二,划分成两个区域,每个区域对应一个类别。
    • 有向距离(signed distance)
  • 多样分类(Multi-class Classification)
    • 分类的类别个数大于2,多分类一般需要多个线性判别函数,但设计这些判别函数有很多方式。eg:
      • 一对其余:属于和不属于
      • 一对一
      • argmax(改进的一对其余):属于每个类别的概率,找概率最大值
    • 参考:多分类实现方式介绍和在Spark上实现多分类逻辑回归

Logistic回归

LR回归

Logistic回归(Logistic Regression,LR)是一种常见的处理二分类的线性回归模型。

为了解决连续的线性回归函数不适合做分类的问题,引入函数g:R^d -> (0,1)来预测类别标签的后验概率p(y=1 | x)

其中g(.)通常称为激活函数(activation function),其作用是把线性函数的值域从实数区间“挤压”到了(0,1)之间,可以用概率表示。在统计文献中,g(.)的逆函数g(.)^-1也称为联系函数(Link Function)

在逻辑回归中使用Logistic作为激活函数,标签y=1的后验概率为(公式-1):
p ( y = 1 ∣ x ) = σ ( w T x ) p(y=1 | x) = \sigma (w^T x) p(y=1x)=σ(wTx)
p ( y = 1 ∣ x ) = 1 1 + e x p ( − w T x ) p(y=1 | x)= \frac{1}{1+exp(-w^T x)} p(y=1x)=1+exp(wTx)1

标签 y=0的后验概率为(公式-2):
p ( y = 0 ∣ x ) = 1 − p ( y = 0 ∣ x ) p(y=0 | x) =1-p(y=0 | x) p(y=0x)=1p(y=0x)
p ( y = 0 ∣ x ) = e x p ( − w T x ) 1 + e x p ( − w T x ) p(y=0 | x)= \frac{exp(-w^T x)}{1+exp(-w^T x)} p(y=0x)=1+exp(wTx)exp(wTx)
将公式-1进行等价变换,可得(公式-3):
w T x = l o g p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) w^T x = log \frac{p(y=1 | x)}{1-p(y=1 | x)} wTx=log1p(y=1x)p(y=1x)
w T x = l o g p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) w^T x = log \frac { p(y=1 | x)}{p(y=0|x)} wTx=logp(y=0x)p(y=1x)
其中
p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) \frac { p(y=1 | x)}{p(y=0|x)} p(y=0x)p(y=1x)
为样本x正反例后验概率的比例,称为几率(odds),几率的对数称为对数几率(log odds或者logit),公式-3中第一个表达式,左边是线性函数,logistic回归可以看做是预测值为“标签的对数几率”的线性回归模型,因为Logistic回归也称为对数几率回归(Logit Regression)。

附公式-1到公式-3的推导:
p ( y = 1 ∣ x ) = 1 1 + e x p ( − w T x ) p(y=1 | x)= \frac{1}{1+exp(-w^T x)} p(y=1x)=1+exp(wTx)1
= > e x p ( − w T x ) = 1 − p ( y = 1 ∣ x ) p ( y = 1 ∣ x ) => exp(-w^Tx) = \frac{1-p(y=1 | x)}{p(y=1 | x)} =>exp(wTx)=p(y=1x)1p(y=1x)
= > − w T x = l o g 1 − p ( y = 1 ∣ x ) p ( y = 1 ∣ x ) => - w^T x = log \frac{1- p(y=1 | x)}{p(y=1 | x)} =>wTx=logp(y=1x)1p(y=1x)
= > w T x = l o g ( 1 − p ( y = 1 ∣ x ) p ( y = 1 ∣ x ) ) − 1 => w^T x = log (\frac{1- p(y=1 | x)}{p(y=1 | x)})^{-1} =>wTx=log(p(y=1x)1p(y=1x))1
= > w T x = l o g p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) => w^T x = log \frac{p(y=1 | x)}{1-p(y=1 | x)} =>wTx=log1p(y=1x)p(y=1x)
= > w T x = l o g p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) => w^T x = log \frac{p(y=1 | x)}{p(y=0 | x)} =>wTx=logp(y=0x)p(y=1x)

参数学习

LR回归采用交叉熵作为损失函数,并使用梯度下降法对参数进行优化。给定N个训练样本{x_i,y_i},i<=N,使用LR对每个样本进行预测,并用输出x_i的标签为1的后验概率,记为y’i(x) (公式-4)
y i ′ ( x ) = σ ( w T x i ) , i ∈ N y'_i(x) = \sigma(w^Tx_i),i\in N yi(x)=σ(wTxi),iN
由于y_i属于{0,1},样本{x_i,y_i}的真实概率可以表示为(公式-5):
p r ( y i = 1 ∣ x i ) = y i p_r(y_i =1 | x_i) = y_i pr(yi=1xi)=yi
p r ( y i = 0 ∣ x i ) = 1 − y i p_r(y_i =0 | x_i) = 1- y_i pr(yi=0xi)=1yi
使用交叉熵损失函数,其风险函数为(公式-6):
R ( w ) = − 1 N ∑ n = 1 N ( p r ( y i = 1 ∣ x i ) l o g ( y i ′ ) + p r ( y i = 0 ∣ x i ) l o g ( 1 − y i ′ ) ) R(w)= - \frac{1}{N}\sum_{n=1}^{N} (p_r(y_i =1 | x_i) log(y_i') + p_r(y_i =0 | x_i) log(1-y_i') ) R(w)=N1n=1N(pr(yi=1xi)log(yi)+pr(yi=0xi)log(1yi))
= − 1 N ∑ n = 1 N ( y i l o g ( y i ′ ) + ( 1 − y i ′ ) l o g ( 1 − y i ′ ) ) = - \frac{1}{N}\sum_{n=1}^{N} ( y_i log(y_i') + (1-y_i') log(1-y_i') ) =N1n=1N(yilog(yi)+(1yi)log(1yi))
风险函数R(w)关于参数w的导数为(公式-7):
∂ R ( w ) ∂ w = − 1 N ∑ n = 1 N ( y i y i ′ ( 1 − y i ′ ) y i ′ x i − ( 1 − y i ) y i ′ ( 1 − y i ′ ) 1 − y i ′ x i ) \frac{ \partial R(w)}{ \partial w} = - \frac{1}{N}\sum_{n=1}^{N}( y_i \frac{y_i'(1-y_i')}{y_i'}x_i -(1-y_i)\frac{y_i'(1-y_i')}{1-y_i'}x_i ) wR(w)=N1n=1N(yiyiyi(1yi)xi(1yi)1yiyi(1yi)xi)
= − 1 N ∑ n = 1 N ( y i ( 1 − y i ′ ) x i − ( 1 − y i ) y i ′ x i ) = - \frac{1}{N}\sum_{n=1}^{N}( y_i(1-y_i')x_i -(1-y_i)y_i'x_i) =N1n=1N(yi(1yi)xi(1yi)yixi)
= − 1 N ∑ n = 1 N x i ( y i − y i ′ ) = - \frac{1}{N}\sum_{n=1}^{N}x_i(y_i-y_i') =N1n=1Nxi(yiyi)
采用梯度下降算法,Logistic的回归训练过程为:初始化w_0 为0,然后通过下式来更新迭代参数(公式-8)。
w t + 1 ← w t + α 1 N ∑ n = 1 N x i ( y i − y w t ′ ) w_{t+1} \leftarrow w_t + \alpha \frac{1}{N}\sum_{n=1}^{N} x_i(y_i-y_{w_t}') wt+1wt+αN1n=1Nxi(yiywt)
其中a是学习率,y
{wt}'是当参数为w_t 时,Logistic回归的输出。

从公式-6可知,风险函数R(w)是关于参数w的连续可导的凸函数,因此除了梯度下降算法外,Logistic还可以使用高阶的优化算法,比如牛顿法来进行优化。

说明:

  • 两个未知数相乘求导:
    ( a b ) ′ = a ′ b + a b ′ (ab)' = a'b + ab' (ab)=ab+ab
  • sigmoid函数求导后为:
    σ ′ = σ ( 1 − σ ) x \sigma ' = \sigma (1-\sigma )x σ=σ(1σ)x

LR为什么使用交叉熵作为损失函数而不是MSE,参考:https://blog.csdn.net/weixin_37567451/article/details/80895309


参考

  • https://zhuanlan.zhihu.com/p/44591359
  • https://blog.csdn.net/wgdzz/article/details/48816307

线性模型篇之Logistic Regression数学公式推导_第1张图片
打开微信扫一扫,关注微信公众号【搜索与推荐Wiki】

你可能感兴趣的:(机器学习(Python),机器学习)