From Scratch: Deviance and Three Algorithms by Hand

从零开始:偏差的推导,以及 Newton / Fisher / IRLS 三种算法的手算迭代

MTH303 Linear Statistical Models
专题:偏差的推导 与 三种算法的手算迭代
Deviance for Logistic Regression, and Newton / Fisher / IRLS by Hand
一个数据集,从 β(0)=𝟎\beta^{(0)}=\mathbf0 迭代到收敛
One dataset, iterated to convergence by three methods
:第 5 章讲义 ch5_main.pdf、补篇 supp_main.pdf
MTH303 Teaching Group ⋅\cdotSchool of Mathematics and Physics ⋅\cdot XJTLU
:verify_iterations.py

这份讲义做什么 What this note does

两个具体的请求,两份具体的答案:

  1. 偏差(deviance)在逻辑回归里怎么一步步推出来? 第 5 章只给了 D=2∑[y(θ̃−θ̂)−b(θ̃)+b(θ̂)]D=2\sum[y(\tilde\theta-\hat\theta)-b(\tilde\theta)+b(\hat\theta)],然后直接跳到 2∑[ylog⁡(y/μ̂)+(1−y)log⁡((1−y)/(1−μ̂))]2\sum[y\log(y/\hat\mu)+(1-y)\log((1-y)/(1-\hat\mu))]。中间那一步牵涉"饱和模型的 θ=±∞\theta=\pm\infty", 必须用极限处理——本讲义把它逐行写出来,并用一个六观测的数据集手算出 DD。

  2. Newton–Raphson、Fisher scoring、IRLS 能不能手算到收敛? 能。本讲义用同一个逻辑回归数据集, 从 β(0)=𝟎\beta^{(0)}=\mathbf0 出发,把三种方法的第一步各算一遍(数字完全相同),再给出 到收敛的完整迭代表(5 步),最后用 probit 展示"非典则时 Newton 与 Fisher 会分道扬镳"。

数据集与记号 The dataset and the notation

ii 1 2 3 4 5 6
xix_i 0 1 2 3 4 5
yiy_i 0 0 1 1 0 1

n=6n=6,单变量逻辑回归:πi=Pr⁡(Yi=1)=logit⁡−1(β0+β1xi)\pi_i=\Pr(Y_i=1)=\operatorname{logit}^{-1}(\beta_0+\beta_1x_i),𝒙i⊤=(1,xi)\mathbf{x}_i^{\top}=(1,x_i)。 设计矩阵的两个基本量: 𝑿⊤𝑿=(6151555),det⁡(𝑿⊤𝑿)=6⋅55−152=330−225=105.\mathbf{X}^{\top}\mathbf{X}=\begin{pmatrix}6&15\\15&55\end{pmatrix}, \qquad \det(\mathbf{X}^{\top}\mathbf{X})=6\cdot55-15^{2}=330-225=105 . (这两个数在第 §3 节手算时会反复用到。)
记号与第 5 章一致:ηi=𝒙i⊤𝜷\eta_i=\mathbf{x}_i^{\top}\boldsymbol{\beta},μi=πi\mu_i=\pi_i,wi=μi(1−μi)w_i=\mu_i(1-\mu_i), ziz_i(有的书写 ξi\xi_i)是工作响应。

先给结论,好让手算有目标

𝜷̂=(−1.68411723,0.67364689),D=6.7728380383,ℓ(𝜷̂)=−3.3864190191.\hat{\boldsymbol{\beta}}=(-1.68411723,\ 0.67364689), \qquad D=6.7728380383, \qquad \ell(\hat{\boldsymbol{\beta}})=-3.3864190191 . 拟合概率 μ̂=(0.15655105,0.26688782,0.41658131,0.58341869,0.73311218,0.84344895)\hat\mu=(0.15655105,\ 0.26688782,\ 0.41658131,\ 0.58341869,\ 0.73311218,\ 0.84344895), 并且可以当堂验算两条"典则不变量": ∑iμ̂i=3.00000000=∑iyi,∑ixiμ̂i=10.00000000=∑ixiyi.\sum_i\hat\mu_i=3.00000000=\sum_i y_i, \qquad \sum_i x_i\hat\mu_i=10.00000000=\sum_i x_iy_i .

偏差:从定义到逻辑回归的闭式 Deviance: from the definition to the logistic closed form

定义(复习)

两行

尺度化偏差:D*=−2[ℓ(𝝁̂;𝒚)−ℓ(𝒚;𝒚)]D^{*}=-2\big[\ell(\hat{\boldsymbol{\mu}};\mathbf{y})-\ell(\mathbf{y};\mathbf{y})\big];偏差:D=a(ϕ)D*D=a(\phi)\,D^{*}。
二项与伯努利 a(ϕ)=1a(\phi)=1,所以本节 D*=DD^{*}=D。展开成逐观测的形式: D=2∑i=1n{yi(θ̃i−θ̂i)−b(θ̃i)+b(θ̂i)},\begin{equation} D=2\sum_{i=1}^{n}\Big\{y_i\big(\tilde\theta_i-\hat\theta_i\big)-b(\tilde\theta_i)+b(\hat\theta_i)\Big\}, \end{equation} 其中 θ̃i\tilde\theta_i 是饱和模型(μ̃i=yi\tilde\mu_i=y_i,每个观测一个参数)对应的自然参数。

逻辑回归里,饱和模型的 θ\theta 是 ±∞\pm\infty

伯努利:b(θ)=log⁡(1+eθ)b(\theta)=\log(1+e^{\theta}),π=eθ1+eθ\pi=\dfrac{e^{\theta}}{1+e^{\theta}},θ=logit⁡π\theta=\operatorname{logit}\pi。饱和模型取 π̃i=yi\tilde\pi_i=y_i,于是 yi=1⇒θ̃i=logit⁡(1)=+∞,yi=0⇒θ̃i=logit⁡(0)=−∞.y_i=1\ \Longrightarrow\ \tilde\theta_i=\operatorname{logit}(1)=+\infty, \qquad y_i=0\ \Longrightarrow\ \tilde\theta_i=\operatorname{logit}(0)=-\infty . 不能直接把 ±∞\pm\infty 代进 (见对应公式/小节)。正确做法是:先把 yθ−b(θ)y\theta-b(\theta) 作为一个整体求极限,再相减。下面两步就是这件事。

六步推导(伯努利)

第 1 步:y=1y=1 时的饱和项

取 θ→+∞\theta\to+\infty。用 log⁡(1+eθ)=θ+log⁡(1+e−θ)\log(1+e^{\theta})=\theta+\log(1+e^{-\theta}): yθ−b(θ)=θ−log⁡(1+eθ)=θ−[θ+log⁡(1+e−θ)]=−log⁡(1+e−θ)→−log⁡1=0.y\theta-b(\theta)=\theta-\log(1+e^{\theta}) =\theta-\big[\theta+\log(1+e^{-\theta})\big] =-\log(1+e^{-\theta})\ \longrightarrow\ -\log 1=0 . 所以 y=1y=1 的观测在饱和模型下的贡献是 00,不是 ∞\infty——两项的无穷大互相抵消了。

第 2 步:y=0y=0 时的饱和项

取 θ→−∞\theta\to-\infty。此时 yθ=0⋅θ=0y\theta=0\cdot\theta=0,而 b(θ)=log⁡(1+eθ)→log⁡1=0b(\theta)=\log(1+e^{\theta})\to\log 1=0: yθ−b(θ)→0−0=0.y\theta-b(\theta)\ \longrightarrow\ 0-0=0 .

第 3 步:把两个情形合并

两步合起来: yθ̃−b(θ̃)=ylog⁡y+(1−y)log⁡(1−y)=0(约定 0log⁡0=0).\begin{equation} y\tilde\theta-b(\tilde\theta)=y\log y+(1-y)\log(1-y)=0 \qquad(\text{约定 }0\log0=0). \end{equation} 这个"00"就是常识:饱和模型把每个观测都解释得完美,所以它的对数似然是 00(伯努利情形)。

第 4 步:拟合项

由 θ̂=logit⁡π̂=log⁡π̂−log⁡(1−π̂)\hat\theta=\operatorname{logit}\hat\pi=\log\hat\pi-\log(1-\hat\pi) 与 b(θ̂)=−log⁡(1−π̂)b(\hat\theta)=-\log(1-\hat\pi): yθ̂−b(θ̂)=y[log⁡π̂−log⁡(1−π̂)]+log⁡(1−π̂)=ylog⁡π̂+(1−y)log⁡(1−π̂).y\hat\theta-b(\hat\theta) =y\big[\log\hat\pi-\log(1-\hat\pi)\big]+\log(1-\hat\pi) =y\log\hat\pi+(1-y)\log(1-\hat\pi). 这正是单个观测的对数似然 ℓi(𝝁̂)\ell_i(\hat{\boldsymbol{\mu}})。

第 5 步:相减

把 (见对应公式/小节) 与第 4 步代入 (见对应公式/小节): D=2∑i=1n{0⏟饱和−[yilog⁡π̂i+(1−yi)log⁡(1−π̂i)]⏟拟合}=−2∑i=1n[yilog⁡π̂i+(1−yi)log⁡(1−π̂i)].\begin{equation} D=2\sum_{i=1}^{n}\Big\{\underbrace{0}_{\text{饱和}}-\underbrace{\big[y_i\log\hat\pi_i+(1-y_i)\log(1-\hat\pi_i)\big]}_{\text{拟合}}\Big\} =-2\sum_{i=1}^{n}\big[y_i\log\hat\pi_i+(1-y_i)\log(1-\hat\pi_i)\big]. \end{equation} 右端就是 −2ℓ(𝝁̂)-2\ell(\hat{\boldsymbol{\mu}})——因为饱和对数似然是 00。

第 6 步:写成"逐点贡献"的形式(手算用这个)

式 (见对应公式/小节) 里每一项只取 yi=0y_i=0 或 11,于是 di=−2log⁡π̂i(yi=1),di=−2log⁡(1−π̂i)(yi=0),D=∑idi.\begin{equation} d_i=-2\log\hat\pi_i\quad(y_i=1), \qquad d_i=-2\log(1-\hat\pi_i)\quad(y_i=0), \qquad D=\sum_i d_i . \end{equation} 这是手算最方便的形式:预测得越"自信地错",贡献越大。

与常见写法对照

教材常写 D=2∑[ylog⁡yμ̂+(1−y)log⁡1−y1−μ̂]D=2\sum\big[y\log\frac{y}{\hat\mu}+(1-y)\log\frac{1-y}{1-\hat\mu}\big]。它与 (见对应公式/小节) 完全等价: 2[ylog⁡yμ̂+(1−y)log⁡1−y1−μ̂]=2[ylog⁡y+(1−y)log⁡(1−y)]−2[ylog⁡μ̂+(1−y)log⁡(1−μ̂)],2\Big[y\log\frac{y}{\hat\mu}+(1-y)\log\frac{1-y}{1-\hat\mu}\Big] =2\big[y\log y+(1-y)\log(1-y)\big]-2\big[y\log\hat\mu+(1-y)\log(1-\hat\mu)\big], 而第一项在 y∈{0,1}y\in\{0,1\} 时为 00,于是回到 (见对应公式/小节)。保留 ylog⁡yy\log y 的写法是为了在 n>1n>1 时不丢常数——见下一小节。

分组二项(n>1n>1):那个 nlog⁡nn\log n 是怎么消失的

计数响应 Y∼Binomial(n,π)Y\sim\mathrm{Binomial}(n,\pi) 时 μ=nπ\mu=n\pi,饱和值是 π̃=y/n\tilde\pi=y/n,对应的 θ̃=logit⁡(yn)=log⁡yn−y,\tilde\theta=\operatorname{logit}\Big(\frac{y}{n}\Big)=\log\frac{y}{n-y}, 只要 0<y<n0<y<n 就是有限数;y=0y=0 或 y=ny=n 时同样取极限(结论不变)。

第 1 步:饱和项

yθ̃=ylog⁡y−ylog⁡(n−y),b(θ̃)=nlog⁡(1+yn−y)=nlog⁡nn−y=nlog⁡n−nlog⁡(n−y).y\tilde\theta=y\log y-y\log(n-y), \qquad b(\tilde\theta)=n\log\Big(1+\frac{y}{n-y}\Big)=n\log\frac{n}{n-y}=n\log n-n\log(n-y). 相减: yθ̃−b(θ̃)=ylog⁡y+(n−y)log⁡(n−y)−nlog⁡n.\begin{equation} y\tilde\theta-b(\tilde\theta)=y\log y+(n-y)\log(n-y)-n\log n . \end{equation}

第 2 步:拟合项与相减

同理(把 y/ny/n 换成 μ̂/n\hat\mu/n): yθ̂−b(θ̂)=ylog⁡μ̂+(n−y)log⁡(n−μ̂)−nlog⁡n.y\hat\theta-b(\hat\theta)=y\log\hat\mu+(n-y)\log(n-\hat\mu)-n\log n . 两式相减,−nlog⁡n-n\log n 正好抵消: D=2∑i=1n{yilog⁡yiμ̂i+(ni−yi)log⁡ni−yini−μ̂i}.\begin{equation} D=2\sum_{i=1}^{n}\Big\{y_i\log\frac{y_i}{\hat\mu_i}+(n_i-y_i)\log\frac{n_i-y_i}{n_i-\hat\mu_i}\Big\}. \end{equation}

数值抽检(n=5,y=2,μ̂=2.4n=5,\ y=2,\ \hat\mu=2.4)

π̂=2.4/5=0.48\hat\pi=2.4/5=0.48,π̃=2/5=0.4\tilde\pi=2/5=0.4。 D=2[2log⁡22.4+3log⁡32.6]=2[−0.364643+0.429300]=0.12931883.D=2\Big[2\log\frac{2}{2.4}+3\log\frac{3}{2.6}\Big]=2\big[-0.364643+0.429300\big]=0.12931883 . 用 −2(ℓfit−ℓsat)-2(\ell_{\text{fit}}-\ell_{\text{sat}}) 核对:ℓsat=2log⁡0.4+3log⁡0.6=−3.36505834\ell_{\text{sat}}=2\log0.4+3\log0.6=-3.36505834, ℓfit=2log⁡0.48+3log⁡0.52=−3.42971775\ell_{\text{fit}}=2\log0.48+3\log0.52=-3.42971775,两者之差乘 −2-2 得 0.129318830.12931883。

把这套公式用在我们的六观测数据上

用上节的 μ̂\hat\mu(π̂=μ̂\hat\pi=\hat\mu),逐点算 did_i,再求和。

ii xix_i yiy_i μ̂i\hat\mu_i 贡献公式 did_i
1 0 0 0.15655105 −2log⁡(1−μ̂)-2\log(1-\hat\mu) 0.34051180
2 1 0 0.26688782 −2log⁡(1−μ̂)-2\log(1-\hat\mu) 0.62091308
3 2 1 0.41658131 −2log⁡μ̂-2\log\hat\mu 1.75134725
4 3 1 0.58341869 −2log⁡μ̂-2\log\hat\mu 1.07770036
5 4 0 0.73311218 −2log⁡(1−μ̂)-2\log(1-\hat\mu) 2.64185375
6 5 1 0.84344895 −2log⁡μ̂-2\log\hat\mu 0.34051180
合计 6.772838046.77283804
三个可以当堂讲的观察

(1) 第 5 个观测贡献最大(2.64192.6419):x=4x=4 时模型预测 μ̂=0.733\hat\mu=0.733,却观测到 y=0y=0——预测越自信地错,偏差越大。
(2) 第 1 与第 6 个观测贡献相同(0.340511800.34051180):因为设计对称(x=0,…,5x=0,\dots,5)且 ∑y=3\sum y=3,模型给出 μ̂1=1−μ̂6\hat\mu_1=1-\hat\mu_6,于是 −2log⁡(1−μ̂1)=−2log⁡μ̂6-2\log(1-\hat\mu_1)=-2\log\hat\mu_6。
(3) D=∑ri2D=\sum r_i^{2},其中偏差残差 ri=sign⁡(yi−μ̂i)dir_i=\operatorname{sign}(y_i-\hat\mu_i)\sqrt{d_i}。DD 的"平方和"结构就是这样来的。

两个常见错误

(1) 直接把 θ̃=∞\tilde\theta=\infty 代进公式,得到 ∞−∞\infty-\infty 或 ∞\infty,从而误以为偏差发散。正确做法是先算 yθ−b(θ)y\theta-b(\theta) 的整体极限(第 1、2 步)。
(2) 忘记 nlog⁡nn\log n 的抵消,在 n>1n>1 时多出一项 −2nlog⁡n-2n\log n。

三种算法:更新式与它们的关系 Three algorithms and how they relate

先写清楚三种方法各自"用什么、更新什么",然后才动手算。

三个更新式

Newton–Raphson:用观测信息 JJ

把得分 U(𝜷)U(\boldsymbol{\beta}) 在当前点线性化并令其为零: 𝜷(k+1)=𝜷(k)+[J(𝜷(k))]−1U(𝜷(k)),J(𝜷)=−∂2ℓ∂𝜷∂𝜷⊤.\boldsymbol{\beta}^{(k+1)}=\boldsymbol{\beta}^{(k)}+\big[J(\boldsymbol{\beta}^{(k)})\big]^{-1}U(\boldsymbol{\beta}^{(k)}), \qquad J(\boldsymbol{\beta})=-\frac{\partial^{2}\ell}{\partial\boldsymbol{\beta}\,\partial\boldsymbol{\beta}^{\top}} .

Fisher scoring:用期望信息 II

𝜷(k+1)=𝜷(k)+[I(𝜷(k))]−1U(𝜷(k)),I(𝜷)=𝔼[J(𝜷)].\boldsymbol{\beta}^{(k+1)}=\boldsymbol{\beta}^{(k)}+\big[I(\boldsymbol{\beta}^{(k)})\big]^{-1}U(\boldsymbol{\beta}^{(k)}), \qquad I(\boldsymbol{\beta})=\mathbb{E}\big[J(\boldsymbol{\beta})\big]. 好处:II 不含 𝒚\mathbf{y},只需一阶量(VV 与 g′g'),而且总正定。

IRLS:把它写成加权最小二乘

𝜷(k+1)=(𝑿⊤𝑾𝑿)−1𝑿⊤𝑾𝒛,wi=1V(μi)g′(μi)2,zi=ηi+g′(μi)(yi−μi).\boldsymbol{\beta}^{(k+1)}=\big(\mathbf{X}^{\top}\mathbf{W}\mathbf{X}\big)^{-1}\mathbf{X}^{\top}\mathbf{W}\mathbf{z}, \qquad w_i=\frac{1}{V(\mu_i)g'(\mu_i)^{2}},\quad z_i=\eta_i+g'(\mu_i)(y_i-\mu_i).

对逻辑回归,三者是同一个迭代

三行代数

逻辑回归(典则连接 logit\operatorname{logit}): ℓ(𝜷)=∑i[yiηi−log⁡(1+eηi)],U(𝜷)=𝑿⊤(𝒚−𝝁),\ell(\boldsymbol{\beta})=\sum_i\big[y_i\eta_i-\log(1+e^{\eta_i})\big], \qquad U(\boldsymbol{\beta})=\mathbf{X}^{\top}(\mathbf{y}-\boldsymbol{\mu}), ∂2ℓ∂𝜷∂𝜷⊤=−𝑿⊤diag⁡(μi(1−μi))𝑿⇒J(𝜷)=𝑿⊤𝑾𝑿,𝑾=diag⁡(μi(1−μi)).\frac{\partial^{2}\ell}{\partial\boldsymbol{\beta}\partial\boldsymbol{\beta}^{\top}} =-\mathbf{X}^{\top}\operatorname{diag}\big(\mu_i(1-\mu_i)\big)\mathbf{X} \quad\Longrightarrow\quad J(\boldsymbol{\beta})=\mathbf{X}^{\top}\mathbf{W}\mathbf{X},\qquad \mathbf{W}=\operatorname{diag}\big(\mu_i(1-\mu_i)\big). 二阶导里没有 𝒚\mathbf{y},所以 I=𝔼[J]=JI=\mathbb{E}[J]=J——Newton 与 Fisher 的步长处处相同。 再把 UU 写成 𝑿⊤𝑾(z−𝑿𝜷)\mathbf{X}^{\top}\mathbf{W}(z-\mathbf{X}\boldsymbol{\beta})(因为 z−η=(y−μ)/(μ(1−μ))z-\eta=(y-\mu)/(\mu(1-\mu))),就得到 IRLS 的式子。

方法 用哪个矩阵 一步的形式 在 logit 下
Newton J=−∇2ℓJ=-\nabla^{2}\ell 𝜷+J−1U\boldsymbol{\beta}+J^{-1}U 与 Fisher 完全相同
Fisher I=𝔼[J]=𝑿⊤𝑾𝑿I=\mathbb{E}[J]=\mathbf{X}^{\top}\mathbf{W}\mathbf{X} 𝜷+I−1U\boldsymbol{\beta}+I^{-1}U 同上
IRLS 𝑾\mathbf{W}、𝒛\mathbf{z} (𝑿⊤𝑾𝑿)−1𝑿⊤𝑾𝒛(\mathbf{X}^{\top}\mathbf{W}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{W}\mathbf{z} 同一个步的算法写法
这不等于"三种方法没区别"

它们只在典则连接下重合。换成 probit(§5),J≠IJ\ne I,Newton 与 Fisher 立刻分家——届时 Newton 6 步收敛,Fisher 要 14 步,极限相同。

手算第 1 步:三种方法各走一遍 Iteration 1 by hand, three ways

起点:𝜷(0)=(0,0)⊤\boldsymbol{\beta}^{(0)}=(0,0)^{\top}

ηi≡0⇒μi=logit⁡−1(0)=0.5\eta_i\equiv0\Rightarrow\mu_i=\operatorname{logit}^{-1}(0)=0.5,于是 wi=μi(1−μi)=0.25(对所有 i),𝑾=0.25𝑰6.w_i=\mu_i(1-\mu_i)=0.25\ (\text{对所有 }i), \qquad \mathbf{W}=0.25\,\mathbf{I}_6 .

先算两个公共量:UU 与 𝑿⊤𝑾𝑿\mathbf{X}^{\top}\mathbf{W}\mathbf{X}

得分: U=𝑿⊤(𝒚−𝝁)=(∑i(yi−0.5)∑ixi(yi−0.5))=(3−310−7.5)=(02.5),U=\mathbf{X}^{\top}(\mathbf{y}-\boldsymbol{\mu})= \begin{pmatrix}\sum_i(y_i-0.5)\\[2pt] \sum_i x_i(y_i-0.5)\end{pmatrix} =\begin{pmatrix}3-3\\[2pt]10-7.5\end{pmatrix} =\begin{pmatrix}0\\2.5\end{pmatrix}, 因为 ∑yi=3\sum y_i=3、∑xiyi=0+0+2+3+0+5=10\sum x_iy_i=0+0+2+3+0+5=10、∑xi=15\sum x_i=15。
信息矩阵: 𝑿⊤𝑾𝑿=0.25𝑿⊤𝑿=0.25(6151555)=(1.53.753.7513.75),det⁡=1.5×13.75−3.752=6.5625.\mathbf{X}^{\top}\mathbf{W}\mathbf{X}=0.25\,\mathbf{X}^{\top}\mathbf{X} =0.25\begin{pmatrix}6&15\\15&55\end{pmatrix} =\begin{pmatrix}1.5&3.75\\3.75&13.75\end{pmatrix}, \qquad \det=1.5\times13.75-3.75^{2}=6.5625 . 逆矩阵: (𝑿⊤𝑾𝑿)−1=16.5625(13.75−3.75−3.751.5).\big(\mathbf{X}^{\top}\mathbf{W}\mathbf{X}\big)^{-1} =\frac{1}{6.5625}\begin{pmatrix}13.75&-3.75\\-3.75&1.5\end{pmatrix}.

方法一:Newton–Raphson

𝜷(1)=𝜷(0)+J−1U=16.5625(13.75−3.75−3.751.5)(02.5)=16.5625(−9.3753.75)=(−1.428571430.57142857).\boldsymbol{\beta}^{(1)}=\boldsymbol{\beta}^{(0)}+J^{-1}U =\frac{1}{6.5625}\begin{pmatrix}13.75&-3.75\\-3.75&1.5\end{pmatrix}\begin{pmatrix}0\\2.5\end{pmatrix} =\frac{1}{6.5625}\begin{pmatrix}-9.375\\3.75\end{pmatrix} =\begin{pmatrix}-1.42857143\\0.57142857\end{pmatrix}. 两个分量正好是分数:−9.375/6.5625=−10/7-9.375/6.5625=-10/7,3.75/6.5625=4/73.75/6.5625=4/7。

方法二:Fisher scoring

I(𝜷(0))=𝔼[J]=𝑿⊤𝑾𝑿I(\boldsymbol{\beta}^{(0)})=\mathbb{E}[J]=\mathbf{X}^{\top}\mathbf{W}\mathbf{X},与上一步同一个矩阵,所以 𝜷(1)=(0,0)⊤+I−1U=(−107,47)⊤,\boldsymbol{\beta}^{(1)}=(0,0)^{\top}+I^{-1}U=\Big(-\tfrac{10}{7},\ \tfrac{4}{7}\Big)^{\top}, 与 Newton 逐位相同。这不是巧合:逻辑回归的二阶导不含 𝒚\mathbf{y}。

方法三:IRLS(加权最小二乘)

工作响应:zi=ηi+yi−μiμi(1−μi)=0+yi−0.50.25=4yi−2z_i=\eta_i+\dfrac{y_i-\mu_i}{\mu_i(1-\mu_i)}=0+\dfrac{y_i-0.5}{0.25}=4y_i-2,即 𝒛=(−2,−2,2,2,−2,2)⊤.\mathbf{z}=(-2,\ -2,\ 2,\ 2,\ -2,\ 2)^{\top}. 加权右端: 𝑿⊤𝑾𝒛=0.25𝑿⊤𝒛=0.25(∑zi∑xizi)=0.25(010)=(02.5).\mathbf{X}^{\top}\mathbf{W}\mathbf{z}=0.25\,\mathbf{X}^{\top}\mathbf{z} =0.25\begin{pmatrix}\sum z_i\\ \sum x_iz_i\end{pmatrix} =0.25\begin{pmatrix}0\\10\end{pmatrix} =\begin{pmatrix}0\\2.5\end{pmatrix}. (∑zi=0\sum z_i=0,∑xizi=0(−2)+1(−2)+2(2)+3(2)+4(−2)+5(2)=10\sum x_iz_i=0(-2)+1(-2)+2(2)+3(2)+4(-2)+5(2)=10。)于是 𝜷(1)=(𝑿⊤𝑾𝑿)−1𝑿⊤𝑾𝒛=16.5625(13.75−3.75−3.751.5)(02.5)=(−107,47)⊤.\boldsymbol{\beta}^{(1)}=\big(\mathbf{X}^{\top}\mathbf{W}\mathbf{X}\big)^{-1}\mathbf{X}^{\top}\mathbf{W}\mathbf{z} =\frac{1}{6.5625}\begin{pmatrix}13.75&-3.75\\-3.75&1.5\end{pmatrix}\begin{pmatrix}0\\2.5\end{pmatrix} =\Big(-\tfrac{10}{7},\ \tfrac{4}{7}\Big)^{\top}.

第 1 步的三个数字

𝜷(1)=(−1.42857143,0.57142857)⊤,D(1)=6.8017987882,ℓ(1)=−3.4008993941.\boldsymbol{\beta}^{(1)}=(-1.42857143,\ 0.57142857)^{\top}, \qquad D^{(1)}=6.8017987882, \qquad \ell^{(1)}=-3.4008993941 . 三种方法给出同一组数——这正是 §2 的结论在具体数据上的体现。

迭代到收敛 Iterating to convergence

第 2 步的中间量(想自己复算的话从这里开始)

用 𝜷(1)=(−1.42857143,0.57142857)\boldsymbol{\beta}^{(1)}=(-1.42857143,\ 0.57142857) 算 ηi=β0+β1xi\eta_i=\beta_0+\beta_1x_i,再算 μi=logit⁡−1(ηi)\mu_i=\operatorname{logit}^{-1}(\eta_i):

ii 1 2 3 4 5 6
xix_i 0 1 2 3 4 5
ηi\eta_i −1.4286-1.4286 −0.8571-0.8571 −0.2857-0.2857 0.28570.2857 0.85710.8571 1.42861.4286
μi\mu_i 0.19332 0.29794 0.42905 0.57095 0.70206 0.80668
wiw_i 0.15595 0.20917 0.24497 0.24497 0.20917 0.15595
ziz_i −2.6682-2.6682 −2.2815-2.2815 2.04502.0450 2.03722.0372 −2.4993-2.4993 2.66822.6682

由此 𝑿⊤𝑾𝑿=(1.220170393.050425963.0504259610.63916770),det⁡=3.67649879,𝑿⊤𝑾𝒛=(02.01124316),\mathbf{X}^{\top}\mathbf{W}\mathbf{X}=\begin{pmatrix}1.22017039&3.05042596\\3.05042596&10.63916770\end{pmatrix}, \quad \det=3.67649879, \qquad \mathbf{X}^{\top}\mathbf{W}\mathbf{z}=\begin{pmatrix}0\\2.01124316\end{pmatrix}, 解出 𝜷(2)=(−1.66874756,0.66749902)\boldsymbol{\beta}^{(2)}=(-1.66874756,\ 0.66749902)。顺便注意这条式子里的 ∑zi=0\sum z_i=0:因为 xx 关于 2.52.5 对称、yy 成对互补(yi+y6−i=1y_i+y_{6-i}=1),每个迭代点都恰好有 ∑μi=∑yi\sum\mu_i=\sum y_i。这是这组数据带来的便利;一般数据在未收敛时 ∑(yi−μi)≠0\sum(y_i-\mu_i)\ne0。

完整迭代表

kk β0(k)\beta_0^{(k)} β1(k)\beta_1^{(k)} max⁡j|Δβj|\max_j|\Delta\beta_j| D(k)D^{(k)} ℓ(𝜷(k))\ell(\boldsymbol{\beta}^{(k)})
1 −1.42857143-1.42857143 0.571428570.57142857 1.43×1001.43\times10^{0} 6.801798796.80179879 −3.40089939-3.40089939
2 −1.66874756-1.66874756 0.667499020.66749902 2.40×10−12.40\times10^{-1} 6.772938566.77293856 −3.38646928-3.38646928
3 −1.68405596-1.68405596 0.673622380.67362238 1.53×10−21.53\times10^{-2} 6.772838046.77283804 −3.38641902-3.38641902
4 −1.68411723-1.68411723 0.673646890.67364689 6.13×10−56.13\times10^{-5} 6.772838046.77283804 −3.38641902-3.38641902
5 −1.68411723-1.68411723 0.673646890.67364689 9.79×10−109.79\times10^{-10} 6.772838046.77283804 −3.38641902-3.38641902
二次收敛,看得见

步长序列 1.43,2.40×10−1,1.53×10−2,6.13×10−5,9.79×10−101.43,\ 2.40\times10^{-1},\ 1.53\times10^{-2},\ 6.13\times10^{-5},\ 9.79\times10^{-10},相邻比值是 0.168,0.064,0.0040,1.6×10−5.0.168,\quad 0.064,\quad 0.0040,\quad 1.6\times10^{-5}. 比值本身在迅速变小——这正是二次收敛的样子(误差大致按平方缩小,有效数字每步翻倍)。所以逻辑回归"通常 4–5 步"是有道理的。

收敛后的三条验收

可以当堂核对

(1) 得分归零: U(𝜷̂)=𝑿⊤(𝒚−𝝁̂)=𝟎U(\hat{\boldsymbol{\beta}})=\mathbf{X}^{\top}(\mathbf{y}-\hat{\boldsymbol{\mu}})=\mathbf{0},即 ∑i(yi−μ̂i)=3−3.00000000=0,∑ixi(yi−μ̂i)=10−10.00000000=0.\sum_i(y_i-\hat\mu_i)=3-3.00000000=0, \qquad \sum_i x_i(y_i-\hat\mu_i)=10-10.00000000=0 . (2) 典则不变量: ∑iμ̂i=∑iyi=3\sum_i\hat\mu_i=\sum_i y_i=3、∑ixiμ̂i=∑ixiyi=10\sum_i x_i\hat\mu_i=\sum_i x_iy_i=10。
(3) 偏差与似然: D=6.77283804D=6.77283804,ℓ(𝜷̂)=−3.38641902\ell(\hat{\boldsymbol{\beta}})=-3.38641902,且 D=−2ℓD=-2\ell(饱和似然为 00)。

停止准则怎么写

三种都合法:max⁡j|βj(k+1)−βj(k)|<ε\max_j|\beta_j^{(k+1)}-\beta_j^{(k)}|<\varepsilon(上表用的就是这个)、 |ℓ(k+1)−ℓ(k)|<ε|\ell^{(k+1)}-\ell^{(k)}|<\varepsilon、或 max⁡j|Uj|<ε\max_j|U_j|<\varepsilon。 不要用"DD 不再变化"单独作判据:DD 在 𝜷̂\hat{\boldsymbol{\beta}} 附近是二阶平的,DD 看起来没变时 𝜷\boldsymbol{\beta} 可能还差一点。

换成 probit:Newton 与 Fisher 分家 Probit: where the three methods part company

同一份数据、同一个起点 𝜷(0)=𝟎\boldsymbol{\beta}^{(0)}=\mathbf0,只把 logit 换成 probit。此时 g′(μ)=1/φ(z)g'(\mu)=1/\varphi(z)(z=Φ−1(μ)z=\Phi^{-1}(\mu)), wi=φ(zi)2μi(1−μi),I=𝑿⊤𝑾𝑿,w_i=\frac{\varphi(z_i)^{2}}{\mu_i(1-\mu_i)}, \qquad I=\mathbf{X}^{\top}\mathbf{W}\mathbf{X}, 而观测信息多出一项(因为 ∂2θ/∂η2≠0\partial^{2}\theta/\partial\eta^{2}\ne0): J=I−∑i(yi−μi)∂∂η[φ(ηi)μi(1−μi)]𝒙i𝒙i⊤.J=I-\sum_i(y_i-\mu_i)\,\frac{\partial}{\partial\eta}\Big[\frac{\varphi(\eta_i)}{\mu_i(1-\mu_i)}\Big]\mathbf{x}_i\mathbf{x}_i^{\top}. 于是 J≠IJ\ne I。

第 1 步仍然相同——原因很巧

在 𝜷(0)=𝟎\boldsymbol{\beta}^{(0)}=\mathbf0 处 ηi=0\eta_i=0、μi=0.5\mu_i=0.5,而那一项的系数里含有 (1−2μi)(1-2\mu_i) 与 ηi\eta_i,两者同时为 00,所以额外项恰好为零: J(𝟎)=I(𝟎)⇒𝜷(1)=(−0.89522438,0.35808975)⊤,J(\mathbf0)=I(\mathbf0)\ \Longrightarrow\ \boldsymbol{\beta}^{(1)}=(-0.89522438,\ 0.35808975)^{\top}, 两种方法的第一步一模一样。差异从第 2 步开始。

kk Newton β0\beta_0 Newton β1\beta_1 Fisher (β0,β1)(\beta_0,\beta_1)
1 −0.89522438-0.89522438 0.358089750.35808975 (−0.89522438,0.35808975)(-0.89522438,\ 0.35808975)
2 −1.07688427-1.07688427 0.421619230.42161923 (−1.05646086,0.41591413)(-1.05646086,\ 0.41591413)
3 −1.08584149-1.08584149 0.424532420.42453242 (−1.08240843,0.42354618)(-1.08240843,\ 0.42354618)
4 −1.08586268-1.08586268 0.424539060.42453906 (−1.08547856,0.42442795)(-1.08547856,\ 0.42442795)
5 (已收敛) (−1.08582023,0.42452681)(-1.08582023,\ 0.42452681)
⋮\vdots ⋮\vdots
14 (−1.08586268,0.42453906)(-1.08586268,\ 0.42453906)
两条路径的三个结论

(1) 极限相同: (−1.08586268,0.42453906)(-1.08586268,\ 0.42453906)——同一似然,同一最大值。
(2) 速度不同: Newton 6 步,Fisher 14 步。Fisher 的 |U||U| 每步只缩小到约 0.110.11 倍(线性收敛),Newton 则近似平方缩小。
(3) 原因清楚: J≠IJ\ne I,Fisher 用的是"平均曲率",在远离解时低估了曲率;Newton 用真实曲率,所以快。典则连接下两者相等,差异消失。

小结与检查清单 Summary and a checklist

偏差:手算就用这两个式子

伯努利: D=∑idi,di=−2log⁡π̂i(yi=1),di=−2log⁡(1−π̂i)(yi=0).D=\sum_i d_i,\qquad d_i=-2\log\hat\pi_i\ (y_i=1),\qquad d_i=-2\log(1-\hat\pi_i)\ (y_i=0). 二项(计数): D=2∑i[yilog⁡yiμ̂i+(ni−yi)log⁡ni−yini−μ̂i].D=2\sum_i\Big[y_i\log\frac{y_i}{\hat\mu_i}+(n_i-y_i)\log\frac{n_i-y_i}{n_i-\hat\mu_i}\Big]. 两者都等于 −2[ℓ(𝝁̂)−ℓ(𝒚)]-2\big[\ell(\hat{\boldsymbol{\mu}})-\ell(\mathbf{y})\big];推导的关键是先算 yθ−b(θ)y\theta-b(\theta) 的整体极限,而不是把 θ̃=±∞\tilde\theta=\pm\infty 直接代进去。

三种算法:一句话各自是什么

Newton == 用真实曲率;Fisher == 用平均曲率;IRLS == 把 Fisher 写成加权最小二乘。
典则连接(本讲义的 logit)下,三者逐位相同;非典则(probit、伽马配 log 等)下 Newton 与 Fisher 路径不同、极限相同,IRLS 只对应 Fisher。

六条检查清单

(1) 偏差公式里 y=0y=0 时用 log⁡(1−μ̂)\log(1-\hat\mu)、y=1y=1 时用 log⁡μ̂\log\hat\mu,别写反。
(2) n>1n>1 时检查 −nlog⁡n-n\log n 有没有抵消。
(3) 典则模型收敛后验算 ∑μ̂i=∑yi\sum\hat\mu_i=\sum y_i 与 ∑xiμ̂i=∑xiyi\sum x_i\hat\mu_i=\sum x_iy_i。
(4) 用 max⁡j|Δβj|\max_j|\Delta\beta_j| 判停,不要只看 DD。
(5) 逻辑回归里 Newton 与 Fisher 的结果应当逐位相同;若不同,说明代码里某一处把 JJ 和 II 混了。
(6) 换非典则连接后若两者仍完全相同,反而要怀疑:是不是根本没把 g′g' 用上。



:ch5_main.pdf(第 5 章)⋅\cdot supp_main.pdf(补篇)⋅\cdot links_main.pdf(链接专题)

This page was generated by DeepSeek 4.1 Flash from the course LaTeX source; the derivations and numerical steps are reproduced verbatim.

本页由 DeepSeek 4.1 Flash 依据课程 LaTeX 讲义生成,推导与数值迭代过程均按原讲义保留。