4.机器学习之逻辑回归算法

理论上讲线性回归模型既可以用于回归,也可以用于分类。解决回归问题,可以用于连续目标值的预测。但是针对分类问题,该方法则有点不适应,因为线性回归的输出值是不确定范围的,无法很好的一一对应到我们的若干分类中。即便是一个二分类,线性回归+阈值的方式,已经很难完成一个鲁棒性很好的分类器了。为了更好的实现分类,逻辑回归诞生了。逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性。逻辑回归是假设数据服从Bernoulli分布的,因此LR也属于参数模型,他的目的也是寻找到最优参数。logistic回归是一种广义线性回归(generalized linear model)。

【补充】在统计学中,参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。

首先回顾一下简单线性回归(只考虑一个输入变量,一个输出变量的线性回归)。[公式] 表示输入变量(自变量),第一部分例子中的X。[公式] 表示输出变量(因变量),第一部分例子中的Y。一对 [公式] 表示一组训练样本。m个训练样本 [公式] 称为训练集。上面表示法中的i代表第i个样本。大写的X代表所有输入值组成的空间。大写的Y代表所有输出值组成的空间。回归属于有监督的学习。监督学习的定义是, 给定一个训练集, 我们的目标是“学习”得到一个函数 [公式] , 使h(x)是真实值y的一个“好的”预测值。这里h叫做模型,也叫做假设(hypothesis)。

如果我们要预测的输出值是连续的,那么该问题就称作回归问题。对于简单线性回归来说,我们的模型h可以表示如下:[公式]。其中的 [公式] 和 [公式] 代表模型的参数。线性回归的目标是:求得最合适的[公式] 和 [公式],使得模型效果最好。

Regression问题的常规步骤为:

  1. 寻找h函数(即hypothesis);
  2. 构造J函数(损失函数);
  3. 想办法使得J函数最小并求得回归参数(θ)

从线性回归到逻辑回归:

我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θ,满足Y=Xθ。此时我们的Y是连续的,所以是回归模型。如果我们想要Y是离散的话,怎么办呢?一个可以想到的办法是,我们对于这个Y再做一次函数转换,变为g(Y)。如果我们令g(Y)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。下面我们开始引入二元逻辑回归。

逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

首先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):

[公式]

其函数曲线如下:

从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要。

我们知道线性回归的模型:

线性回归中广义线性回归我们提到对线性回归的结果做一个在函数g上的转换,可以变化为逻辑回归。这个函数g在逻辑回归中我们一般就取为sigmoid函数,所以逻辑回归的假设函数形式如下:

[公式]

得到二元逻辑回归模型如下:

 其中 [公式] 是样本的输入, [公式] 为我们要求取的参数。hθ(x)为模型输出,可以理解为某一分类的概率大小。而θ为分类模型要求出的模型参数。对于模型输出hθ(x),我们让它和我们的二元样本输出y(假设为0和1)有这样的对应关系,如果hθ(x)>0.5 ,即xθ>0, 则y为1。如果hθ(x)<0.5,即xθ<0, 则y为0。y=0.5是临界情况,此时xθ=0为, 从逻辑回归模型本身无法确定分类。hθ(x)的值越小,而分类为0的的概率越高,反之,值越大的话分类为1的的概率越高。如果靠近临界点,则分类准确率会下降。此处我们也可以将模型写成矩阵模式:

逻辑回归的假设

正如线性回归模型一样,逻辑回归也有假设条件,主要是两个:

(1)假设数据服从伯努利分布

(2)假设模型的输出值是样本为正例的概率

基于这两个假设,我们可以分别得出类别为1和0的后验概率估计(即二元分类回归的模型函数的值的特殊含义):

 

理解了二元分类回归的模型,接着我们就要看模型的损失函数了,我们的目标是极小化损失函数来得到对应的模型系数θ。

 

二元逻辑回归的损失函数

回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数

按照上面二元逻辑回归的定义,假设我们的样本输出是0或者1两类。那么我们有:

把这两个式子写成一个式子,就是:

前面说到逻辑回归其实是概率类模型,因此,我们通过极大似然估计(MLE)推导逻辑回归损失函数。得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数θ,即线性模型自变量的权重系数。最大似然函数L(θ)

一个连乘的函数是不好计算的,可以通过两边同事取log的形式让其变成连加,所以为了方便求解,这里我们用对数似然函数最大化:

如此就推导出了参数的最大似然估计。最大似然估计就是求使取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是在函数最优化的时候习惯让一个函数越小越好,所以我们在前边加一个负号。因为乘了一个负的系数-1,所以取最小值时的θ为要求的最佳参数。从而符合我们理解的损失函数是最小化,可以用梯度下降法求最小值,因此我们需要在上式前加一个负号便可得到最终的损失函数

 损失函数也可用矩阵法表达更加简洁:

其中E为全1向量。

逻辑回归的损失函数“对数似然函数”,在模型GBDT分类情况下也会用到,又叫作“交叉熵”。在逻辑回归中,最常用的是代价函数是交叉熵(Cross Entropy),交叉熵是一个常见的代价函数,在神经网络中也会用到。在1948年,克劳德·艾尔伍德·香农将热力学的熵,引入到信息论,因此它又被称为香农熵(Shannon Entropy),它是香农信息量(Shannon Information Content, SIC)的期望。香农信息量用来度量不确定性的大小:一个事件的香农信息量等于0,表示该事件的发生不会给我们提供任何新的信息,例如确定性的事件,发生的概率是1,发生了也不会引起任何惊讶;当不可能事件发生时,香农信息量为无穷大,这表示给我们提供了无穷多的新信息,并且使我们无限的惊讶。更多解释可以参考博客:https://blog.csdn.net/rtygbwwwerr/article/details/50778098

 

二元逻辑回归的损失函数的优化方法

 对于线性回归模型而言,可以使用最小二乘法,但对于逻辑回归而言使用传统最小二乘法求解是不合适的。对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,等牛顿法等。之前提到过梯度下降法有代数法求解和矩阵法求解,只不过代数法推导比较的繁琐。具体使用梯度下降法求解逻辑回归损失函数方法可参考https://www.cnblogs.com/pinard/p/6029432.htmlhttps://zhuanlan.zhihu.com/p/51279024 他们的推导过程。

实践中,我们一般不用操心优化方法,大部分机器学习库都内置了各种逻辑回归的优化方法,不过了解这些优化方法还是有必要的。

 

二元逻辑回归的正则化

逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。

问题的主因:过拟合问题往往源自过多的特征。

解决方法:

1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)

2)正则化(特征较多时比较有效)

逻辑回归的L1正则化的损失函数表达式如下,相比普通的逻辑回归损失函数,增加了L1的范数做作为惩罚,超参数α作为惩罚系数,调节惩罚项的大小:

其中|θ|1为θ的L1范数,逻辑回归的L1正则化损失函数的优化方法常用的有坐标轴下降法和最小角回归法。

二元逻辑回归的L2正则化损失函数表达式如下:

其中|θ|2为θ的L2范数,逻辑回归的L2正则化损失函数的优化方法和普通的逻辑回归类似。

 

二元逻辑回归的推广:多元逻辑回归

前面讲的逻辑回归的模型和损失函数都局限于二元逻辑回归,实际上二元逻辑回归的模型和损失函数很容易推广到多元逻辑回归。比如总是认为某种类型为正值,其余为0值,这种方法为最常用的one-vs-rest,简称OvR。

另一种多元逻辑回归的方法是Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。最常用的是One-Vs-One(OvO)。OvO是MvM的特例。每次我们选择两类样本来做二元逻辑回归。

多元逻辑回归算法如softmax回归。

 

逻辑回归的优缺点

优点:

1. 直接对分类可能性进行建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题

2. 形式简单,便利的观测样本概率分数,模型的可解释性非常好,特征的权重可以看到不同的特征对最后结果的影响

3. 训练速度较快。分类速度很快

4. 内存占用少

缺点:

1. 一般准确率不是很高,因为形势非常的简单,很难去拟合数据的真实分布

2. 当特征空间很大时,逻辑回归的性能不是很好

3. 很难处理数据不平衡的问题

 

逻辑回归和线性回归的区别:

1. 一个是解决回归问题,一个用于解决分类问题

2. 线性回归的样本的输出,都是连续值,y∈(+∞,−∞)而,逻辑回归中y∈{0,1},只能取0和1

3. 拟合函数本质上的差别

    线性回归决策函数:f(x)=θTX=θ1x1+θ2x2+⋯+θnxn 

   

   得逻辑回归的决策函数:f(x)=p(y=1∣x;θ)=g(θTX)

  

 4. 线性回归的拟合函数,的确是对f(x)的输出变量y的拟合,而逻辑回归的拟合函数是对为1类的样本的概率的拟合;在线性回归中θTX为预测值的拟合函数;而在逻辑回归中θTX=0为决策边界;即线性回归中得到的直线是要拟合输入样本的分布的,而逻辑回归里得到的线是决策边界,是要尽可能的将样本非开的,目的不同。

 

一句话概括逻辑回归:逻辑回归假设数据服从伯努利分布,在线性回归的基础上,套了一个二分类的Sigmoid函数,使用极大似然法来推导出损失函数,用梯度下降法优化损失函数的一个判别式的分类算法。分类的本质:在空间中找到一个决策边界来完成分类的决策

 

 

 参考文章:

https://www.cnblogs.com/pinard/p/6029432.html

https://www.cnblogs.com/huangyc/p/9813891.html

https://zhuanlan.zhihu.com/p/28408516

https://blog.csdn.net/pakko/article/details/37878837

https://zhuanlan.zhihu.com/p/51279024

 

4.机器学习之逻辑回归算法

全文结束