逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原理里面却残留着回归模型的影子,本文对逻辑回归原理做一个总结。
- 从线性回归到逻辑回归
我们知道,线性回归的模型是求出输出特征向量 Y 和输入样本矩阵 X 之间的线性关系系数,满足。此时我们的 Y 是连续的,所以是回归模型。如果我们想要 Y 是离散的话,怎么办呢?一个可以想到的办法是,我们对于这个 Y 再做一次函数转换,变为。如果我们令的值在某个实数区间的时候是类别 A,在另一个实数区间的时候是类别 B,以此类推,就得到了一个分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。下面我们开始引入二元逻辑回归。
- 二元逻辑回归的模型
上一节我们提到对线性回归的结果做一个在函数 g 上的转换,可以变化为逻辑回归。这个函数 g 在逻辑回归中我们一般取为 sigmoid 函数,形式如下:
它有一个非常好的性质,即当 z 趋于正无穷时,趋于 1,而当 z 趋于负无穷时,趋于 0,这非常适合于我们的分类概率模型。另外,它还有一个很好的导数性质:
这个通过函数对求导很容易得到,后面我们会用到这个式子。
如果我们令中的 z 为:,这样就得到了二元逻辑回归模型的一般形式:
其中 x 为样本输入,为模型输出,可以理解为某一分类的概率大小。而为分类模型的要求出的模型参数。对于模型输出,我们让它和我们的二元样本输出 y(假设为 0 和 1)有这样的对应关系,如果,即, 则 y 为 1。如果,即, 则 y 为 0。y=0.5 是临界情况,此时为,从逻辑回归模型本身无法确定分类。
的值越小,而分类为 0 的的概率越高,反之,值越大的话分类为 1 的的概率越高。如果靠近临界点,则分类准确率会下降。
此处我们也可以将模型写成矩阵模式:
其中为模型输出,为 mx1 的维度。X 为样本特征矩阵,为 mxn 的维度。为分类的模型系数,为 nx1 的向量。
理解了二元分类回归的模型,接着我们就要看模型的损失函数了,我们的目标是极小化损失函数来得到对应的模型系数。
- 二元逻辑回归的损失函数
回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数。
我们知道,按照第二节二元逻辑回归的定义,假设我们的样本输出是 0 或者 1 两类。那么我们有:
把这两个式子写成一个式子,就是:
其中 y 的取值只能是 0 或者 1。
得到了 y 的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数。
为了方便求解,这里我们用对数似然函数最大化,对数似然函数取反即为我们的损失函数 )。其中:
似然函数的代数表达式为:
其中 m 为样本的个数。
对似然函数对数化取反的表达式,即损失函数表达式为:
损失函数用矩阵法表达更加简洁:
其中 E 为全 1 向量。
- 二元逻辑回归的损失函数的优化方法
对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,等牛顿法等。这里推导出梯度下降法中每次迭代的公式。由于代数法推导比较的繁琐,我习惯于用矩阵法来做损失函数的优化过程,这里给出矩阵法推导二元逻辑回归梯度的过程。
对于,我们用对向量求导可得:
这一步我们用到了向量求导的链式法则,和下面三个基础求导公式的矩阵形式:
为函数
对于刚才的求导公式我们进行化简可得:
从而在梯度下降法中每一步向量的迭代公式如下:
其中,为梯度下降法的步长。
实践中,我们一般不用操心优化方法,大部分机器学习库都内置了各种逻辑回归的优化方法,不过了解至少一种优化方法还是有必要的。
- 二元逻辑回归的正则化
逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有 L1 正则化和 L2 正则化。
逻辑回归的 L1 正则化的损失函数表达式如下,相比普通的逻辑回归损失函数,增加了 L1 的范数做作为惩罚,超参数作为惩罚系数,调节惩罚项的大小。
二元逻辑回归的 L1 正则化损失函数表达式如下:
其中为的 L1 范数。
逻辑回归的 L1 正则化损失函数的优化方法常用的有坐标轴下降法和最小角回归法。
二元逻辑回归的 L2 正则化损失函数表达式如下:
其中为的 L2 范数。
逻辑回归的 L2 正则化损失函数的优化方法和普通的逻辑回归类似。
- 二元逻辑回归的推广:多元逻辑回归
前面几节我们的逻辑回归的模型和损失函数都局限于二元逻辑回归,实际上二元逻辑回归的模型和损失函数很容易推广到多元逻辑回归。比如总是认为某种类型为正值,其余为 0 值,这种方法为最常用的 one-vs-rest,简称 OvR.
另一种多元逻辑回归的方法是 Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。最常用的是 One-Vs-One(OvO)。OvO 是 MvM 的特例。每次我们选择两类样本来做二元逻辑回归。
这里只介绍多元逻辑回归的 softmax 回归的一种特例推导:
首先回顾下二元逻辑回归。
其中 y 只能取到 0 和 1。则有:
如果我们要推广到多元逻辑回归,则模型要稍微做下扩展。
我们假设是 K 元分类模型, 即样本输出 y 的取值为 1,2,。。。,K。
根据二元逻辑回归的经验,我们有:
…
上面有 K - 1 个方程。
加上概率之和为 1 的方程如下:
从而得到 K 个方程,里面有 K 个逻辑回归的概率分布。
解出这个 K 元一次方程组,得到 K 元逻辑回归的概率分布如下:
k = 1,2,…K-1
多元逻辑回归的损失函数推导以及优化方法和二元逻辑回归类似,这里就不累述。
7. 小结
逻辑回归尤其是二元逻辑回归是非常常见的模型,训练速度很快,虽然使用起来没有支持向量机(SVM)那么占主流,但是解决普通的分类问题是足够了,训练速度也比起 SVM 要快不少。如果你要理解机器学习分类算法,那么第一个应该学习的分类算法个人觉得应该是逻辑回归。理解了逻辑回归,其他的分类算法再学习起来应该没有那么难了。