首页 > 技术文章 > 逻辑回归详解

Maggieli 2020-01-12 22:00 原文

 

 

1、逻辑回归概述

 

逻辑回归假设数据服从伯努利分布,通过极大化似然函数方法,运用梯度下降来求解参数,来达到将数据二分目的。本质上就是LR模型可以被认为就是一个被Sigmoid函数(logistic方程)所归一化后的线性回归模型 。

 

Logistic Regression方程如下:

 
$$P(y=1|x;\theta)=\frac{1}{1+e^{-\theta^Tx}}$$
 

$P(y=1|x;\theta)$代表的是表示的就是将因变量预测成1(阳性)的概率,具体来说它所要表达的是在给定$x$条件下事件$y$发生的条件概率,而$\theta$是该条件概率的参数。

 
$$h_\theta(x)=\theta^Tx$$
 
$$g(z)=\frac{1}{1+e^{-z}}$$
 

$h_\theta(x)$就是我们介绍的线性回归的假设函数,$g(z)$就是我们的Sigmoid函数啦。

 

为什么会用Sigmoid函数?因为它引入了非线性映射,将线性回归值域映射到0-1之间,有助于直观的做出预测类型的判断:大于等于0.5表示阳性,小于0.5表示阴性。其实,从本质来说:在分类情况下,经过学习后的LR分类器其实就是一组权值,当有测试样本输入时,这组权值与测试数据按照加权得到  

 
$$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+....+\theta_nx_n$$
 

这里的$x_1,x_2,x_3...x_n$就是每个测试样本的n个特征值。

 

Sigmoid函数的形式求出$P(y=1|x;\theta)$,从而去判断每个测试样本所属的类别。LR模型学习最关键的问题就是研究如何求解这组权值$\theta$

 

2、决策边界

 

决策边界:作用在$n$ 维空间,将不同样本分开的平面或曲面,在逻辑回归中,决策边界对应$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+....+\theta_nx_n=0$ 。

 

举个2维空间的例子,方便理解

 

image

 

上图可以很直观的看出$x+y-5=0$这条直线很合理将两类标签数据分为两部分,这时我们就定位这条直线为样本的决策边界。

当点都落在直线的右上方时,标签为1。意味着$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2>=0$ 时,则$P(y=1|x;\theta)>=0.5$。

当点都落在直线的坐下方时,标签为0。意味着$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2<0$ 时,则$P(y=1|x;\theta)<0.5$。

 

同理,对于非线性可分的情况,我们只需要引入多项式特征就可以很好的去做分类预测。

 

image

 

上图可以很直观的看出$x^2+y^2-4=0$这条曲线(假设半径为2)很合理将两类标签数据分为两部分,这时我们就定位这条直线为样本的决策边界。

当点都落在直线的曲线外和边界上时,标签为1。意味着$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2>=0$ 时,则$P(y=1|x;\theta)>=0.5$。

当点都落在直线的曲线内时,标签为0。意味着$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2<0$ 时,则$P(y=1|x;\theta)<0.5$。

 

3、代价函数

 

回归模型时,给出了线性回归的代价函数的形式(误差平方和函数),具体形式如下:

 
$$J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x_i)-y_i)^2$$
 

逻辑回归也可以视为一个广义的线性模型,那么线性模型中应用最广泛的代价函数-误差平方和函数,可不可以应用到逻辑回归呢?其实是不可以的,原因在于$Sigmoid$函数是一个复杂的非线性函数,我们将逻辑回归的假设函数带入上式中,得到$J(\theta)$是一个非凸函数。函数包含多个局部极小值点,使用梯度下降法求解损失函数最小值时,可能导致函数最后结果并非总是全局最小。所以,我们需要为逻辑回归找到一个凸代价函数,最常用的损失函数就是对数损失函数,对数损失函数可以为$LR$提供一个凸的代价函数,这样有利于使用梯度下降对参数求解。

 

逻辑回归的代价函数:$$J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x_i),y_i)$$

 

逻辑回归的损失函数是由极大似然估计推导出来的,具体结果可以写作:

 
$$J(\theta)=-\sum_{i=1}^m(y_i*\log (y_\theta(x_i)))+(1-y_i)*log (1-y_\theta(x_i))$$
 

其中,$\theta$表示求解出来的一组参数,$m$是样本的个数,$y_i$是样本$i$上真实的标签,$y_\theta(x_i)$是样本$i$上基于参数$\theta$计算出来的逻辑回归返回值,$x_i$是样本$i$各个特征的取值。我们的目标,就是求解出使$J(\theta)$最小的$\theta$取值。注意,在逻辑回归的本质函数$y(x)$里,特征矩阵$x$是自变量,参数是$\theta$。但在损失函数中,参数$\theta$是损失函数的自变量,$x$和$y$都是已知的特征矩阵和标签,相当于是损失函数的参数.

 

4、梯度下降

 

那梯度究竟如何定义呢?在多元函数上对各个自变量求$∂$偏导数,把求得的各个自变量的偏导数以向量的形式写出来,就是梯度。比如损失函数$J(\theta_1,\theta_2)$ ,其自变量是逻辑回归预测函数$y_\theta(x)$的参数$\theta_1,\theta_2$ ,在损失函数上对$\theta_1,\theta_2$ 求偏导数,求得的梯度向量$d$就是$[\frac{\partial y}{\partial \theta_1},\frac{\partial y}{\partial \theta_2}]^T$ ,简称$grad J(\theta_1,\theta_2)$。

 

在逻辑回归中,我们的损失函数如下所示:

 
$$J(\theta)=-\sum_{i=1}^m{y_i}*\log y_\theta(x_i)+{1-y_i}*\log(1-y_\theta(x_i))$$
 
$$\frac{\partial}{\partial \theta_j}(J_\theta)=d_j=\sum_{i=1}^{m}(y_\theta(x_i)-y_i)x_{ij}$$
 

公式的目的是在可能的取值上进行遍历,一次次计算梯度向量,并在梯度向量的反方向上让损失函数$J(\theta)$下降至最小值。在这个过程中,我们的$\theta$和梯度向量的大小$d$都会不断改变,而我们遍历$\theta$的过程可以描述为:

 
$$\theta_{j+1}=\theta_j-\alpha * d_j$$
 
$$=\theta_j-\alpha * \sum_{i=1}^{m}(y_\theta(x_i)-y_i)x_{ij}$$
 

其中$\theta_{j+1}$是第j次迭代后的参数向量,$\theta_j$是第j次迭代是的参数向量,$\alpha$被称为步长,控制着每走一步(每迭代一次)后$\theta$的变化,并以此来影响每次迭代后的梯度向量的大小和方向。

 

5、正则化

 

正则化是用来防止模型过拟合的过程,常用的有L1正则化和L2正则化两种选项,分别通过在损失函数后加上参数向量 的L1范式和L2范式的倍数来实现。这个增加的范式,被称为“正则项”,也被称为"惩罚项"。损失函数改变,基于损失函数的最优化来求解的参数取值必然改变,我们以此来调节模型拟合的程度。其中L1范式表现为参数向量中的每个参数的绝对值之和,L2范数表现为参数向量中的每个参数的平方和的开方值。

 
$$J(\theta)_{L1}=C*J(\theta)+\sum_{j=1}^n{|\theta_j|}(j>=1)$$
 
$$J(\theta)_{L2}=C*J(\theta)+\sqrt{\sum_{j=1}^n{(\theta_j)^2}}(j>=1)$$
 

其中$J(\theta)$是我们之前提过的损失函数,C是用来控制正则化程度的超参数,n是方程中特征的总数,也是方程中参数的总数,j代表每个参数。在这里,j要大于等于1,是因为我们的参数向量$\theta$中,第一个参数是$\theta_0$,是我们的截距,它通常是不参与正则化的。

 

6、模型优缺点

 

优点:

1.形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。

2.输出结果并不是一个离散值或确切的类型,而是一个与每个输入样本相关的概率列表,这样我们可以任意设定阈值,从而得到我们想要的分类输入。  

3.LR对数据中的小噪音的鲁棒性很好,并且轻微的多重共线性不会对其结果产生特别的影响。严重的多重共线性可以使用LR+l2正则来解决。

4.资源占用小,尤其是内存。因为只需要存储各个维度的特征值。

 

缺点:  

1.准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。

2.处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题。

3.逻辑回归本身无法筛选特征。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。

推荐阅读