一、前言
之前我们说到有关线性回归的一些内容,有兴趣的小伙伴可以去看一下。
这一章我们主要说一下逻辑回归。逻辑回归和线性回归有区别但是更有联系。
就从逻辑回归的作用来看,我觉得它不应该叫逻辑回归,而应该叫回归逻辑,或者更直白一点叫:线性回归后的逻辑化分类算法。
没错,逻辑回归不是回归算法,而是分类算法。
为什么我们得出了线性回归的结构之后还要记性逻辑回归呢,其实很简单,这个就像我们大学考试拿等级一样,比如90分以上的人可以拿到A,90分以下的是B,而只有A等级在最后计算绩点时可以加分,这个时候你的考试分数往往不够直观,我们就需要等级化,这里的具体的考试分数可以看成线性回归的结果,而A、B等级就是逻辑回归的结果,这个90分就是一个阈值。
或者在看一个例子,又是借贷款的问题,借贷银行对你的综合情况进行评估(线性回归过程),最终得出了一个可贷估计值(假设范围是0~1),如果可贷估计值在[0,0.5),银行不借贷,如果在[0.5,1],银行借贷(逻辑回归过程)。
二、sigmoid 函数
我们说过,逻辑回归就是将线性回归产生的结果进行二分化,既然是二分化我们就需要寻找一个阈值作为二分的标准,这个时候就需要用到sigmoid函数,sigmoid函数不光可以实现一个阈值对数据进行二分化,由于其值域是0~1,所以sigmoid函数可以很好的表示概率。
sigmoid 函数的表达式为:
g(z)=1+e−z1
讲$y=\theta^Tx $代入其中便可以得到:
hθ(x)=g(θTx)=1+e−θTx1
函数的图像如下所示:

三、逻辑回归的损失函数(目标函数)
由于逻辑回归是一个分类算法,所以我们的损失函数也显得很离散:
cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))y=1y=0
完整的损失函数为:
cost(hθ(x),y)=i=1∑n−yilog(hθ(x))−(1−yi)log(1−hθ(x))
看到这里是不是觉得特别抽象,那么我就来带大家理一下:
假设有一个老师对四位同学分别根据平时表现,对专业的态度,学习效率等多方面进行学习成绩评估得出了预测结果(也就是下表的线性回归结果),并将90分以上定为等级A(也就是二分类中的类别1),90分以下定为等级B(也就是二分类中的类别0),好了,考试结果出来了,几位同学的成绩和老师的预测结果存在一些一些出入,现在需要对评估标准进行调整,我们将产生的偏置代入sigmoid函数计算出概率,我们还知道有的预测对了有的预测错了。
| 样本 |
线性回归结果 |
真实结果 |
偏置 |
sigmoid结果(概率) |
预测对错 |
| 小红 |
88 |
91 |
-2 |
0.112 |
错 |
| 小橙 |
91 |
93 |
1 |
0.734 |
对 |
| 小橙 |
99 |
100 |
9 |
0.999 |
对 |
| 小橙 |
81 |
89 |
-9 |
0.0001 |
对 |
那么损失函数值是多少呢?
cost(hθ(x),y)=−(1∗log(0.112)+1∗log(0.734)+1∗log(0.999)+0∗log(0.0001))=1.09
三、梯度下降法优化逻辑回归算法
这一下节如果看不懂,建议复习线性回归。
梯度下降法不仅可以用在逻辑回归上,还可以用在线性回归上。他的主要思想是通过迭代的方法让函数收敛到一个最小值。
具体算法如下:
首先选取一个初始点
求这一点在几个方向上的梯度最大值
设置学习率更新初始点
下面我们从一个二维函数开始看起
假设我们有一个二次函数: y=x2,并且我们不知道它的最低点是(0,0)
那么我们首先选取一个初始点为(1,1)
然后我们发现这一点的导数: y′=2x,二维情况下肯定也就只有这个方向梯度最大(毕竟只有这一个梯度)。
然后又我们设置一个学习率: α=0.4
所以此时便可以迭代出一个新的点的横坐标():x(1)=x−α⋅y′(1)=0.2
以此类推:
x(2)=x(1)−α⋅y′(0.2)=0.04x(3)=x(2)−α⋅y′(0.04)=0.008...
你会发现,迭代之后逐渐趋近最低点
这里我们需要的就是目标函数的梯度(对于一维来说也就是导数),梯度的方向就是变化率最大的方向,梯度的值就是变化率最大方向对应的变化率,上面小节我们已经知道了目标函数以及梯度:
J(θ)=21∑i=1n(y(i)−θTx(i))2=21(Xθ−y)T(Xθ−y)∇θJ(θ)=XTXθ−XTy
这个时候我们就可以按照上面的思路对θ进行迭代,此时X以及y均是已知的常数矩阵。
但是啊但是,梯度下降法很容易陷入局部最优,这个问题目前也比较棘手,没有特别好的解决方法。