老饼讲解:一步一步上手学习
由于牛顿法使用了二阶导的信息,一般比梯度法的求解速度会更快,在工程中使用牛顿法会比梯度下降法求解逻辑回归更有优势,本文讲解如何使用牛顿法求解逻辑回归。
大部分文章,都是介绍梯度下降法求解逻辑回归,而笔者在扒取matlab的逻辑回归工具包glmfit的源码后,发现glmfit用的并不是梯度下降,而是牛顿法,事实上,牛顿法在求解效果上要大大优于梯度下降法,这也不得不让笔者感叹matlab作为一个商业软件的专业度,本文按照 glmfit包的实现思路,讲解牛顿法求解逻辑回归的算法原理和流程,在《逻辑回归-自实现代码》中我们再自写代码重现glmfit包的效果。
这里我们先来简单回顾一下牛顿求极值的思想,然后展示牛顿法求解逻辑回归的公式和流程。
牛顿法求极值的思想如下:

牛顿法求极值先初始化一个解,然后在当前解处用二次曲线(曲面)替代原函数,用二次曲线的极值点作为解的迭代值,牛顿法求极值的具体算法流程如下:
1. 先初始化初始解
2. 将解进行迭代:
其中,为的梯度(一阶导),为的Hession矩阵(二阶导)
如此反复(2),直到满足迭代终止条件(例如达到最大迭代次数)
由于牛顿法的迭代公式为:
使用牛顿法求解逻辑回归,只需要求出逻辑回归损失函数对W的梯度G与Hession矩阵H,得到牛顿迭代公式后,按牛顿法进行迭代就可以了。
因此,牛顿法求解逻辑回归的流程如下:
1. 先初始化初始解
2. 将解进行迭代:
其中,是对角矩阵,T的第个对角元素
备注:公式的推导见下文。
3. 重复2,直到满足迭代终止条件(例如达到最大迭代次数)
特别说明:迭代公式中涉及了的逆矩阵求解,对计算机不太友善,在下张文章,我们再讲怎么对其进行简化,使它在计算上更加便利。
下面我们来推导牛顿法求解逻辑回归时所用的迭代公式。事实上这是比较简单的,我们只需要先看看逻辑回归损失函数的梯度G(一阶导)与Hession矩阵(二阶导)分别是什么,再进一步代入牛顿迭代公式就可以了。
备注:G和H详细推导见《逻辑回归损失函数一、二阶导推导过程》
逻辑回归的梯度(一阶导)公式如下:
其中,
:矩阵, N样本数, M为特征个数
即一行为一个样本,一列为一特征
:的列向量
:的列向量,
逻辑回归的Hession矩阵(二阶导)公式如下:
其中,
:的对角矩阵
综合上面一、二阶导的结果,可得到牛顿迭代公式如下:
其中,是对角矩阵,它的第i个对角元素
好了,以上就是逻辑回归损失函数一、二阶导推导过程了~
参考文献
【1】Collett, D. (2003) Modelling Binary Data, 2nd edition, Chapman&Hall/CRC Press.
https://www.doc88.com/p-40929070890500.html?r=1
这里我们直接展示了使用牛顿法来训练逻辑回归的流程和公式,它看起来是简单的,但是这里需要计算的逆,所以下节我们再来讲,怎么通过加权最小二乘法去避免这个问题。
评论