本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
由于牛顿法使用了二阶导的信息,一般比梯度法的求解速度会更快
在工程中使用牛顿法会比梯度下降法求解逻辑回归更有优势
本文讲解如何使用牛顿法求解逻辑回归
前言
大部分文章,都是介绍梯度下降法求解逻辑回归,
而笔者在扒取matlab的逻辑回归工具包glmfit的源码后,发现glmfit用的并不是梯度下降,而是牛顿法
事实上,牛顿法在求解效果上要大大优于梯度下降法,这也不得不让笔者感叹matlab作为一个商业软件的专业度
本文按照 glmfit包的实现思路,讲解牛顿法求解逻辑回归的算法原理和流程
在《逻辑回归-自实现代码》中我们再自写代码重现glmfit包的效果
本节回顾牛顿求极值的相关思想及公式
牛顿法求极值的思想回顾
牛顿法求极值的思想如下:
牛顿求极值的主要思想如下:
先初始化一个解,
然后在当前解处用二次曲线(曲面)替代原函数,
用二次曲线的极值点作为解的迭代值。
如此反复,直到满足迭代终止条件(例如达到最大迭代次数)
牛顿法求极值的迭代公式回顾
牛顿法求极值的迭代公式如下:
(1) 先初始化初始解
(2) 用牛顿法迭代:
备注:多维时,牛顿迭代公式为
其中
G为梯度(一阶导)
为的Hession矩阵(二阶导)
本文讲解牛顿法求解逻辑回归的思路及公式推导
牛顿法求解逻辑回归-思路
由于牛顿法的迭代公式为:
可知,牛顿法用于求解逻辑回归,
只需求出逻辑回归损失函数对 W的梯度与Hession矩阵,
得到牛顿迭代公式后,按牛顿法迭代即可
逻辑回归的牛顿迭代公式-推导主流程
逻辑回归的损失函数为:
它的一阶导与二阶导如下(详细推导见下文)
逻辑回归的一阶导公式
逻辑回归的梯度(一阶导)公式如下:
其中
:矩阵, N样本数, M为特征个数
即一行为一个样本,一列为一特征
: 的列向量
p : 的列向量,
逻辑回归的Hession矩阵
逻辑回归的Hession矩阵(二阶导)公式如下:
其中
:对角矩阵
逻辑回归的牛顿法迭代公式
综合上面一、二阶导的结果,可得到牛顿迭代公式如下:
其中
:对角矩阵
备注:这里的 W 为
牛顿法求解逻辑回归-迭代公式
综上,可得到逻辑回归的牛顿法迭代公式为:
其中
T是对角矩阵,
( 这里的 为 )
✍️特别说明
上述公式是根据牛顿法的定义所推导出来的原始迭代公式
但迭代公式中涉及了的逆矩阵求解,在实际工程中是不太可用的
在《牛顿求解逻辑回归-简化版》中,我们再对其进行简化,实现其工程可用性
本节补充上节中的相关公式推导过程
逻辑回归一阶导推导过程
我们先推导损失函数的一阶偏导:
单个分量的一阶偏导
对单个分量 的偏导:
代表 第i个样本第j个特征的 x 数据
//
----- 用矩阵形式替换连加形式 --------------------
这里的 即第j个特征的数据.
一阶整体偏导
根据单个分量的偏导形式,可得到整体偏导如下:
其中
:矩阵, N样本数, M为特征个数
即一行为一个样本,一列为一特征
: 的列向量
p : 的列向量,
备注:一阶偏导列向量大小: 特征个数*1
逻辑回归二阶导推导过程
下面我们推导损失函数的二阶偏导:
单个分量的二阶偏导
单个分量分析: 偏 再偏
----- 写成矩阵形式 ----------------------
其中
:对角矩阵
补充:的推导过程如下:
整体二阶偏导公式
根据单个分量的二阶偏导形式,可得到整体二阶偏导如下:
其中
:对角矩阵
参考文献
1.Collett, D. (2003) Modelling Binary Data, 2nd edition, Chapman&Hall/CRC Press.
https://www.doc88.com/p-40929070890500.html?r=1
End