欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解逻辑回归(LR):公式、损失函数和推导步骤详解

最编程 2024-02-12 20:23:34
...

回归问题中,最简单的模型是线性回归。线性回归假设数据集的样本数据x_i=(x_{i1},x_{i2},...,x_{id})与输出值y_i之间近似满足一个线性关系。本文探讨的逻辑回归(logistics regression,LR)是在线性回归的基础上进行一点延伸,解决分类问题的模型。

这篇文章回答了以下问题:逻辑回归的表达形式是什么?损失函数是什么?如何进行推导(梯度下降)来得到参数值?与SVM的区别在什么地方?

一、LR与线性回归的联系

一般的,线性回归模型的表达式可以写作:

y=\omega ^Tx+b\\

但许多问题不一定是线性的,\omega ^Tx+b的值可能和实际的标记值有一定的关系。更一般的,作为对线性回归的推广,广义线性模型的一般表达式为:

y=g^{-1}(\omega ^Tx+b)\\

其中,g(·)是单调可微函数。逻辑回归模型就是广义线性模型的一种。

对于分类任务,原先用于线性回归的表达式得到的结果是一个连续的实值,那怎样转换为分类任务呢?最简单的方法是设定一个阈值,超过这个阈值视为正例,小于这个阈值视为负例。这种做法可以看做引入了一个“单位阶跃函数”。这种方法有个明显的缺点,那就是引入阈值或引入阶跃函数是不可导的,数学性质很差。第二个方法对前面方法进行了改进,使用sigmoid函数代替阈值法,众所周知sigmoid函数取值范围为(0,1)且当x=0时变化较大。sigmoid函数表达式写作:

y=\frac{1}{1+e^{-z}} \\

将sigmoid与线性回归函数结合,即为逻辑回归。简言之,逻辑回归=线性回归+sigmoid。因此,逻辑回归的表达式为:

y=\frac{1}{1+e^{-(\omega ^Tx+b)} } \\

对上式进行变化可得:

ln \frac{y}{1-y} = \omega ^T x+b \\

如果把y视为x为正例的可能性,那么1-y就是x为负例的可能性。二者的比值的实际意义是x作为正例的“相对可能性”,称为“对数几率”。所以逻辑回归的本质其实是利用线性回归去逼近真实标记的对数几率。逻辑回归对样本数据的假设是服从伯努利分布

二、损失函数推导

下面我们一步步进行推导求参数。按前面的思路,把y视为正例,即y = p(y=1|x)1-y=p(y=0|x)。这里引入变量\beta =(\omega ;b), \hat{x} =(x,1),目的是使得\omega ^Tx+b=\beta \hat{x} ,方便讨论。可以解得:

p(y=1|x)=\frac{e^{\omega ^Tx+b}}{1+e^{\omega ^Tx+b}}=\frac{e^{\beta \hat{x} }}{1+e^{\beta \hat{x}}} 
 \\p(y=0|x)=\frac{1}{1+e^{\omega ^Tx+b}}=\frac{1}{1+e^{\beta \hat{x}}}

要求出参数(\omega ,b),采用对数最大似然方法,令p_1=p(y=1|x),p_0=p(y=0|x)损失函数写作:

l(\beta )=log\coprod\nolimits_{i=1}^m (p_1)^{y_1}(1-p_1)^{1-y_1}=\sum_{i=1}^m (y_1logp_1+(1-y_1)log(1-p_1))\\

结合p_i的定义,推导得:
l(\beta )=\sum_{i=1}^m y_i\beta \hat{x} -log(1+e^{\beta \hat{x} }) \\

三、参数更新公式推导

接下来,要去求(\omega ,b)= arg \max_{(\omega ,b)} l(\beta ) 。问题变成了求以对数似然函数最大化为目标的优化问题,采用梯度下降(上升)或拟牛顿法解决。关于梯度下降(上升)方法,这里是求最大值,对应的是梯度上升,一般常见的是梯度下降法使损失函数最小化,所以我们在这里加一个负号,要求的梯度可以写作:

J(\beta)=-\frac{1}{m}l(\beta) \\  \frac{\nabla}{\nabla \beta }J(\beta)=-\frac{1}{m}  \frac{\nabla}{\nabla \beta } l(\beta )\\

我们把损失函数的初始写法带入,推导:

-\frac{1}{m}  \frac{\nabla}{\nabla \beta } l(\beta )=-\frac{1}{m} \sum_{i=1}^m y_i \frac{1}{p_i} \frac{\nabla}{\nabla \beta }p_i-(1-y_i)\frac{1}{1-p_i} \frac{\nabla}{\nabla \beta } p_i\\

由于p_i=p(y=1|x)=\frac{1}{1+e^{-\beta \hat{x} }} =sig(\beta \hat{x} )是一个sigmoid函数,所以它的导数sig(x){’}=sig(x)*(1-sig(x))。接着推导:

-\frac{1}{m}  \frac{\nabla}{\nabla \beta } l(\beta )=-\frac{1}{m}\sum_{i=1}^m ( y_i \frac{1}{sig(\beta \hat{x} )}-(1-y_i)\frac{1}{1-sig(\beta \hat{x} )} ) sig(\beta \hat{x})(1-sig(\beta \hat{x}))\frac{\nabla}{\nabla \beta }  (\beta \hat{x} )\\=-\frac{1}{m}\sum_{i=1}^m(y_i(1-sig(\beta \hat{x} ) )-(1-y_i)sig(\beta \hat{x} ))x\\ =\frac{1}{m}\sum_{i=1}^m (sig(\beta \hat{x} )-y_i)x \\=\frac{1}{m}\sum_{i=1}^m ( p_i-y_i)x

整理一下,也就是:

  \frac{\nabla}{\nabla \beta }J(\beta)=\frac{1}{m}\sum_{i=1}^m ( p_i-y_i)x \\

所以参数更新公式为:

\beta =\beta -\alpha *   \frac{\nabla}{\nabla \beta }J(\beta)\\

这就是梯度下降法求参数的更新公式。

四、LR与SVM的区别

(待更新)