来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件

在前面的学习中,我们知道逻辑回归问题可以转换为求解似然函数的极大值:

argmaxθi=1np(yixi;θ) \mathop{\arg \max}_{\theta} \prod_{i=1}^n p(y_i | x_i; \theta)

再通过一系列的转换,最终得到逻辑回归的损失函数:

loss=i=1n[yi(θTxi)+ln(1+eθTxi)] loss = \sum_{i=1}^n [ -y_i(\theta^Tx_i) + \ln (1+e^{\theta^Tx_i}) ]

为了让损失函数最小,然后使用了梯度下降算法对参数 θ\theta 不断迭代,最终得出参数 θ\theta

它的梯度如下:

lossθ=i=1n(π(xi)yi)xi \frac{\partial loss}{\partial \theta} = \sum_{i=1}^n (\pi(x_i) -y_i)x_i

其中,

π(x)=p(y=1x)=eθTx1+eθTx \pi(x) = p(y=1|x) = \frac{e^{\theta^Tx}}{1+e^{\theta^Tx}}

最后得出梯度下降的迭代公式如下:

θj:=θj+ηi=1n(y(i)π(x(i)))xj(i) \theta_j := \theta_j + \eta \sum_{i=1}^n (y^{(i)} - \pi(x^{(i)}))x_j^{(i)}

梯度下降还可以进一步衍生出随机梯度下降法,都可以很好的求解逻辑回归问题,这一节将介绍一种新的方法,牛顿法(Newton method),它可以利用曲线本身的信息,比梯度下降法更容易收敛,迭代次数更少。

牛顿法解一元函数极值

牛顿法解多元函数极值

牛顿法解逻辑回归

牛顿法迭代公式为:

θ:=θloss(θ)loss(θ) \theta := \theta - \frac{loss'(\theta)}{loss''(\theta)}

其中,loss(θ)loss'(\theta) 为损失函数关于 θ\theta 的一阶导数:

loss(θ)=lossθ=i=1n(π(xi)yi)xi loss'(\theta) = \frac{\partial loss}{\partial \theta} = \sum_{i=1}^n (\pi(x_i) -y_i)x_i

loss(θ)loss''(\theta) 为损失函数关于 θ\theta 的二阶导数:

loss(θ)=2lossθθT=i=1nxixiTπ(xi)(1π(xi)) loss''(\theta) = \frac{\partial^2 loss}{\partial \theta \partial \theta^T} = \sum_{i=1}^n x_ix_i^T \pi(x_i)(1-\pi(x_i))

https://blog.csdn.net/baimafujinji/article/details/51179381