逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原理里面却残留着回归模型的影子,本文对逻辑回归原理做一个总结。

1. 从线性回归到逻辑回归

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

2. 二元逻辑回归的模型

3. 二元逻辑回归的损失函数

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

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

    P(y=1|x,θ)=hθ(x)

    P(y=0|x,θ)=1hθ(x)

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

    P(y|x,θ)=hθ(x)y(1hθ(x))1y

    其中y的取值只能是0或者1。

    得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数θ

    为了方便求解,这里我们用对数似然函数最大化,对数似然函数取反即为我们的损失函数J。其中:

    似然函数的代数表达式为:

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

    对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,等牛顿法等。这里推导出梯度下降法中θ每次迭代的公式。由于代数法推导比较的繁琐,我习惯于用矩阵法来做损失函数的优化过程,这里给出矩阵法推导二元逻辑回归梯度的过程。

5. 二元逻辑回归的正则化

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

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

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

    

    其中||θ||1的L1范数。

    逻辑回归的L1正则化损失函数的优化方法常用的有坐标轴下降法和最小角回归法。

 

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

    

    其中||θ||2的L2范数。

    逻辑回归的L2正则化损失函数的优化方法和普通的逻辑回归类似。

    

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

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

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

    这里只介绍多元逻辑回归的softmax回归的一种特例推导:

    首先回顾下二元逻辑回归。

7.小结

    逻辑回归尤其是二元逻辑回归是非常常见的模型,训练速度很快,虽然使用起来没有支持向量机(SVM)那么占主流,但是解决普通的分类问题是足够了,训练速度也比起SVM要快不少。如果你要理解机器学习分类算法,那么第一个应该学习的分类算法个人觉得应该是逻辑回归。理解了逻辑回归,其他的分类算法再学习起来应该没有那么难了。