对于逻辑斯蒂回归中,还有另一种最大化
l(θ)
的算法——牛顿方法。
先介绍牛顿方法,这个方法用来找到一个函数值为0的点。
它用以下的迭代更新公式:
θ:=θ−f(θ)f′(θ)
这个方法,可以通过函数在某个猜测的 θ 点上的导数,迭代调整 θ 的值来使函数值趋近零,即当迭代过程中, θ 值变化程度比较小时,就代表 f(θ) 值就趋近于零。
看下迭代过程函数图形的表现形式:
在最左侧这张图中,画出了函数 f(θ) 和 f(θ)=0 这条直线。在中间这张图中,可以看到我们开始了第一次 θ 的迭代。求出了图中( θ=4.5 )点的切线。并通过我们的切线来调整 θ 的值。第一次调整完成后, θ 的值已经调整到切线和 f(θ)=0 的交点处,即 θ=2.8 ,最右边的图就表示了第二次迭代开始。
牛顿方法可以求得一个找到函数值为0的点。我们需要用它来最大化我们逻辑斯蒂回归中的函数 l ,当函数最大值时,函数值的导数为零(这里需要判断的是极大值还是极小值,可以通过二阶导数(即函数凹凸性)来判断,二阶导数大于零即为最小值,小于零即为最大值)。所以,我们可以牛顿方法中
θ:=θ−l′(θ)l′′(θ)
在逻辑斯蒂回归中, θ 值是一个向量,那么我们需要把上面的公式改写为向量的形式:
θ:=θ−H−1∇θl(θ)
其中, ∇θl(θ) 是关于 θi 的偏导数的向量。H是一个n*n阶的矩阵,也称为Hessian矩阵,这个矩阵中元素的定义为:
Hij=∂2l(θ)∂θi∂θj
牛顿方法比梯度下降更快,可以用最少的迭代次数达到最值。一次牛顿方法的迭代比梯度下降的一次迭代需要的时间更多,因为牛顿方法的一次迭代,就要求得Hessian矩阵,但是只要是n的值比较小时,整体来说牛顿方法是比其他方法更有效率的。