目录
LR模型是一个传统的分类模型,常用于二分类任务,属于有监督的学习模型,也是工业界常用的一种分类方式。
一、线性回归
逻辑回归其实也是线性回归的一种,首先介绍一下线性回归,给定有监督训练数据集(X,Y),X表示特征,Y表示标签,线性回归试图学习得到一个线性模型,以尽可能准确地预测实际标签的结果。
线性回归首先有一个假设,就是假设样本服从正态分布,因此,线性回归又是一种参数模型。
1.1 一元线性回归
回归模型中只含有一个自变量x,主要用来处理一个自变量x与一个因变量y之间的线性关系。
(1)构建一元线性方程
有n组数据,自变量(特征值) 与因变量(目标值)之间线性相关,假设他们之间关系为:,这个就是构建的一元线性方程。在这里,Y是我们试图预测的因变量,X是我们用来进行预测的自变量,a是回归线的斜率,b是一个常数,称为截距。
我们可以以身高(x)与体重(y)为例,二者是线性关系,身高正比于体重:
线性回归的目标就是让f(X)与y之间的差距最小,也就是权重a和偏置b取什么值的时候f(X)和y最接近
(2)构建损失函数
损失函数是来度量模型预测值与真实值不一样的程度的,或者说度量预测错误的程度,损失函数值越小,模型就越好。在回归问题中,误差平方和是回归任务中最常用的性能度量。这里就可以令损失函数等于误差平方和。则损失函数为:
因此,将九个点分别带入该二元方程得到如下:
58=160a+b
63=165a+b
...
59=162a+b
62=171a+b
损失函数(总误差)为:
(3)确定参数
如何得到最佳的a和b,使的尽可能多的到(x,y)数据点落在或者更靠近这条拟合出来的直线上,最小二乘法就是一个较好的计算方法。
可通过对L(a,b)求偏导数获得,并使得一阶倒数的值为0:
将该公式代入到上述案例中,得到关于求解未知变量a、b的二元一次方程:
求解二元一次方程组得:a = 0.421,b = -8.288
因此,在上述九个点中,通过最小二乘法得到直线方程:y = -8.288 + 0.721x
1.2 多元线性回归
现在我们把自变量x扩展为多元的情况,即多种因素共同影响因变量y。现实问题也往往是这种情况,比如,要预测房价,需要考虑包括房子大小、楼层、房龄、是否配置电梯等。
不过,这些因素对房价影响的权重是不同的。因此,我们可以使用多个权重来表示多个因素与房屋价格的关系:
与一元线性方程相同,多元线性方程的损失函数为:
上述只是x的纬度变多了,但是计算方式还是和一元线性方程一样的。
二、逻辑回归
通过在线性回归模型中引入Sigmoid函数,将线性回归的不确定范围的连续输出值映射到(0,1)范围内,成为一个概率预测问题。
Sigmond函数如下:
2.1 构建逻辑回归函数
按照章节一里的描述,多元线性回归的一般方程为:
可以简写为矩阵形式:
将特征加权求和Xβ(后面不对矩阵向量加粗了,大家应该都能理解)代入sigmond函数中的z,得到,令其为预测为正例的概率P(Y=1),那么逻辑回归的形式就有了:
2.2 求解函数参数
(1)似然函数
我们常常用概率(Probability) 来描述一个事件发生的可能性。而似然性(Likelihood) 正好反过来,意思是一个事件实际已经发生了,反推在什么参数条件下,这个事件发生的概率最大。
用数学公式来表达上述意思,就是:
已知参数 β 前提下,预测某事件 x 发生的条件概率为 :;
已知某个已发生的事件 x,未知参数 β 的似然函数为 :;
上面两个值相等,即:。
一个参数 β 对应一个似然函数的值,当 β 发生变化,也会随之变化。当我们在取得某个参数的时候,似然函数的值到达了最大值,说明在这个参数下最有可能发生x事件,即这个参数最合理。
(2)最大似然估计
采用最大似然估计的方式求解,在二分类问题中,y只取0或1,可以组合起来表示y的概率:
将sigmoid带入P,得到如下函数:
根据上一小节说的最优β的定义,也就是最大化我们见到的样本数据的概率,即求下式的最大值。
取对数后,转化成下式:
接下来想办法求上式的最大值就可以了,求解前,我们要提一下逻辑回归的损失函数。
(3)损失函数及参数求解
将上述求反(将求最大值变为求最小值),得到如下:
采用梯度下降的方式求解损失函数的最小值,根据sigmoid的特性,我们可知
当然,现在我们的x是已知的,未知的是β,所以后面是对β求导,记:
把它代入前面我们得到逻辑回归的损失函数:
简便起见,先撇开求和号看g(β,x,y)。不过这个g(β,x,y)里面也挺复杂的,我们再把里面的挑出来,单独先看它对β向量中的某个βj求偏导是什么样。根据上面的求导公式,有:
这个xi实际上指的是第i个样本的特征向量,即 ,其中只有xij会和βj相乘,因此求导后整个xi只剩xij了。
此处省略推到过程。。。,直接抄个别人图:
加上求和号:
有了偏导,也就有了梯度G,即偏导函数组成的向量。
梯度下降算法过程:
1. 初始化β向量的值,即 ,将其代入G得到当前位置的梯度;
2. 用步长α乘以当前梯度,得到从当前位置下降的距离;
3. 更新 ,其更新表达式为 ;
4. 重复以上步骤,直到更新到某个,达到停止条件,这个 就是我们求解的参数向量。