目录
老饼讲解:一步一步上手学习

【训练】逻辑回归-牛顿法训练(上)

作者 : 老饼 发表日期 : 2026-01-07 08:20:15 更新日期 : 2026-05-16 19:52:01
老饼讲解-简单易懂,干货满满,爽过嗦螺!


由于牛顿法使用了二阶导的信息,一般比梯度法的求解速度会更快,在工程中使用牛顿法会比梯度下降法求解逻辑回归更有优势,本文讲解如何使用牛顿法求解逻辑回归。

前言

大部分文章,都是介绍梯度下降法求解逻辑回归,而笔者在扒取matlab的逻辑回归工具包glmfit的源码后,发现glmfit用的并不是梯度下降,而是牛顿法,事实上,牛顿法在求解效果上要大大优于梯度下降法,这也不得不让笔者感叹matlab作为一个商业软件的专业度,本文按照 glmfit包的实现思路,讲解牛顿法求解逻辑回归的算法原理和流程,在《逻辑回归-自实现代码》中我们再自写代码重现glmfit包的效果。

一、牛顿法求解逻辑回归

这里我们先来简单回顾一下牛顿求极值的思想,然后展示牛顿法求解逻辑回归的公式和流程。

1.1. 牛顿法求极值-回顾

牛顿法求极值的思想如下:

牛顿求极值

牛顿法求极值先初始化一个解,然后在当前解处用二次曲线(曲面)替代原函数,用二次曲线的极值点作为解的迭代值,牛顿法求极值的具体算法流程如下:

1. 先初始化初始解   

2. 将解进行迭代:      

  其中,的梯度(一阶导),的Hession矩阵(二阶导) 

如此反复(2),直到满足迭代终止条件(例如达到最大迭代次数)

1.2. 牛顿法求解逻辑回归-算法流程

由于牛顿法的迭代公式为: 

 

使用牛顿法求解逻辑回归,只需要求出逻辑回归损失函数对W的梯度G与Hession矩阵H,得到牛顿迭代公式后,按牛顿法进行迭代就可以了。

因此,牛顿法求解逻辑回归的流程如下:

1. 先初始化初始解 

2. 将解进行迭代:

           

    其中,对角矩阵,T的第个对角元素 

  备注:公式的推导见下文。

3. 重复2,直到满足迭代终止条件(例如达到最大迭代次数)

特别说明:迭代公式中涉及了的逆矩阵求解,对计算机不太友善,在下张文章,我们再讲怎么对其进行简化,使它在计算上更加便利。

二、牛顿法求解逻辑回归-迭代公式推导

下面我们来推导牛顿法求解逻辑回归时所用的迭代公式。事实上这是比较简单的,我们只需要先看看逻辑回归损失函数的梯度G(一阶导)与Hession矩阵(二阶导)分别是什么,再进一步代入牛顿迭代公式就可以了。

备注:G和H详细推导见《逻辑回归损失函数一、二阶导推导过程》

2.1. 逻辑回归-损失函数的梯度G

逻辑回归的梯度(一阶导)公式如下:

 

其中,

    矩阵, N样本数, M为特征个数

  即一行为一个样本,一列为一特征

    的列向量                               

  :的列向量,

2.2. 逻辑回归-损失函数的Hession矩阵

逻辑回归的Hession矩阵(二阶导)公式如下:

  

其中,

 的对角矩阵                     

  

2.3. 逻辑回归-牛顿法-迭代公式

综合上面一、二阶导的结果,可得到牛顿迭代公式如下:

 

其中,对角矩阵,它的第i个对角元素 

好了,以上就是逻辑回归损失函数一、二阶导推导过程了~


参考文献

【1】Collett, D. (2003) Modelling Binary Data, 2nd edition, Chapman&Hall/CRC Press.  
https://www.doc88.com/p-40929070890500.html?r=1

结束语

这里我们直接展示了使用牛顿法来训练逻辑回归的流程和公式,它看起来是简单的,但是这里需要计算的逆,所以下节我们再来讲,怎么通过加权最小二乘法去避免这个问题。



图标 评论
添加评论