逻辑回归(Logistic Regression)

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑回归(Logistic Regression)相关的知识,希望对你有一定的参考价值。

逻辑回归(Logistic Regression)

 


线性模型

逻辑回归,本质是一种线性模型 y = w x + b y=wx+b y=wx+b

不过逻辑回归和线性模型不同的是,为了实现二分类任务,加了 s i g m o d sigmod sigmod 函数。

  • 这个不仅要满足映射到 [0,1],还要满足:当 x = 0 时;y 正好为 0.5;且 x = 负无穷 和 x = 正无穷的时候,y 分别趋近于 0 和 1。
  • s i g m o i d sigmoid sigmoid 是连续可导函数,为我们计算带来了方便。
  • s i g m o i d sigmoid sigmoid 是最简单的满足这样条件的函数,更“自然”,数学上的解释 —— 满足最大似然估计的结果

s i g m o i d sigmoid sigmoid 函数,使得预测的结果从样本成绩变成了样本成绩的概率。

  • 样本成绩: y = w x + b y=wx+b y=wx+b
  • 样本成绩的概率: p = σ ( y ) = 1 1 + e w x + b p=\\sigma(y) =\\frac11+e^wx+b p=σ(y)=1+ewx+b1

如果这个概率 p > 0.5 p > 0.5 p>0.5,把这个数据分类为 y = 1 y=1 y=1(正样本)。

如果这个概率 p < 0.5 p < 0.5 p<0.5,就把这个数据分类为 y = 0 y=0 y=0(负样本)。

 


损失函数

这个损失函数的意义是模型预测出来的值 p p p 要和样本的标签值 y y y 尽量一致,即正样本的预测值要尽量为正,负样本要为负,否则会产生一个损失值。

按照 y 、 p y、p yp 之间的关系,我们反过来设计:

  • 如果样本的标签值 y = 1 y=1 y=1,模型预测出来的值 p 越小 p 越小 p越小,损失值越大
  • 如果样本的标签值 y = 0 y=0 y=0,模型预测出来的值 p 越大 p 越大 p越大,损失值越小

用数学语言表达:

  • − l o g ( p )      i f      y = 1 -log(p)~~~~if~~~~y=1 log(p)    if    y=1
  • − l o g ( 1 − p )      i f      y = 0 -log(1-p)~~~~if~~~~y=0 log(1p)    if    y=0

函数图像:

p p p 接近 1 时,损失函数接近正无穷,会分为正样本,但实际值却是负样本。

所以,我们会给一个正无穷的惩罚,直到 p p p 的减小,惩罚值会越来越低,直到当 p = 0 p=0 p=0 时,会分为负样本,实际值也是负样本,就没有惩罚。

不过目前这个损失函数是分类函数形式,我们需要合并为一个函数:

  • L ( p , y ) = − y   l o g ( p ) − ( 1 − y )   l o g ( 1 − p ) ) L(p, y)=-y~log(p) - (1-y)~ log(1-p)) L(p,y)=y log(p)(1y) log(1p))

这是对单个训练样本(一张图)的损失函数,但我们输入都神经网络的通常是一个训练集(大量的图片)。

我们需要累加单个训练样本的结果,再求平均值:

  • 1 m ∑ i = 1 m L ( p i , y i ) \\frac1m\\sum_i=1^mL(p_i, y_i) m1i=1mL(pi,yi)

为什么使用这个损失函数呢?

这个损失函数(逻辑回归)的函数图像是一个向下凸的图形。


因为学习,就是找到一组 w 和 b,使这个损失函数最小。

也就是在这个函数图像的底部找到一组 w 和 b。

这个损失函数没有局部最优解,只存在唯一的全局最优解。

我们要做的,是求出成本函数的梯度,而后运用梯度下降法求出损失最小的一组 w 和 b。

 


损失函数的梯度

损失函数 L o s s ( p , y ) Loss(p, y) Loss(p,y),是指对单个样本的做的损失。

成本函数 J ( θ ) J(\\theta) J(θ),是数据集上总的成本和损失。

  • J ( θ ) = − 1 m ∑ m i = 1 y i l o g ( σ ( X b i θ ) ) + ( 1 − y i ) l o g ( 1 − σ ( X b i θ ) ) J(\\theta)=-\\frac1m\\sum_m^i=1y_ilog(\\sigma(X^i_b\\theta))+(1-y_i)log(1-\\sigma(X^i_b\\theta)) J(θ)=m1mi=1yilog(σ(Xbiθ))+(1yi)log(1σ(Xbiθ))

求损失函数的梯度: Δ J = ∂ J ( θ ) ∂ θ 0 ∂ J ( θ ) ∂ θ 1 ⋅ ⋅ ⋅ ∂ J ( θ ) ∂ θ n \\Delta J= \\beginBmatrix \\frac\\partial J (\\theta)\\partial\\theta_0 \\\\ \\frac\\partial J (\\theta)\\partial\\theta_1 \\\\ ··· \\\\ \\frac\\partial J (\\theta)\\partial\\theta_n \\endBmatrix ΔJ= θ0J(θ)θ1J(θ)⋅⋅⋅θnJ(θ)

比较难处理的就是 σ ( t ) \\sigma(t) σ(t)

  • σ ( t ) = 1 1 + e − t = ( 1 + e − t ) − 1 \\sigma(t)=\\frac11+e^-t=(1+e^-t)^-1 σ(t)=1+et1=(1+et)1

σ ( t ) \\sigma(t) σ(t) 求导: