第 07b 章 极分解、奇异值与矩阵逼近
对应原书:Horn & Johnson《Matrix Analysis》第 2 版,第 7 章的 7.3 节 The polar and singular value decompositions 与 7.4 节 Consequences of the polar and singular value decompositions(书 p.448–477,PDF p.468–497)。SVD 的存在性与基本性质见第 02b 章;半正定平方根见第 07a 章。
记号说明:原书用 \(\|\cdot\|_2\) 同时表示向量的 Euclid 范数和矩阵的 Frobenius 范数,用三竖线 \(|||\cdot|||_2\) 表示谱范数。为避免混淆,本章矩阵的 Frobenius 范数一律写作 \(\|A\|_F\),谱范数(最大奇异值)写作 \(\|A\|_2=\sigma_1(A)\)。奇异值按递减排列 \(\sigma_1\ge\sigma_2\ge\cdots\);Hermitian 矩阵的特征值沿用原书习惯按递增排列 \(\lambda_1\le\cdots\le\lambda_n\)。
上一章说明了半正定矩阵可以"开平方"。这一章把它用到任意矩阵上:每个矩阵都能写成"半正定 × 酉"(极分解),奇异值就是那个半正定因子的特征值。由此得到一组在量化里天天用到的最优性定理:截断 SVD 是一切酉不变范数下的最佳低秩逼近(PCA 与因子模型);两组载荷之间的最佳旋转由一次 SVD 给出(Procrustes);离一组相关因子最近的正交因子是极分解的酉因子(对称正交化);最后,Kantorovich 不等式精确刻画了条件数如何拖慢梯度法、如何把正交方向压扁。
学习目标
读完本章,你应当能够:
- 陈述并证明极分解 \(A=PU=UQ\),知道 \(P=(AA^*)^{1/2}\) 唯一而 \(U\) 何时唯一,并能由 \(A^*A\) 的特征分解构造薄 SVD。
- 用 Jordan–Wielandt 矩阵把 Hermitian 特征值的结论(Weyl、交错、Courant–Fischer、Hoffman–Wielandt)移植到奇异值,理解奇异值关于扰动是 1-Lipschitz 的。
- 掌握 von Neumann 迹不等式,并由它推出 Eckart–Young–Mirsky 最佳低秩逼近、最小范数最小二乘解、酉 Procrustes 问题、最近酉矩阵。
- 理解酉不变范数与对称规范函数的对应、Schatten 范数与 Ky Fan 范数,以及 Ky Fan 占优定理的含义。
- 掌握 Kantorovich 与 Wielandt 不等式及其等价性,会用它推出最速下降法的收敛率 \(((\kappa-1)/(\kappa+1))^2\),并理解病态协方差的几何后果。
- 在量化中应用:PCA 低秩因子模型的误差、跨期因子载荷对齐、因子对称正交化、优化器收敛与病态诊断。
读前导读
这一章在解决什么问题。 一句话:PCA 和因子模型背后的"最优性"从哪里来,以及它们在哪些地方天然不确定。
你在 CFA 里学过多因子模型 \(r=Bf+\varepsilon\),也见过"前三个主成分解释了国债收益率曲线 95% 以上的变动"(水平、斜率、曲率)。这一章回答几个 CFA 没讲的问题:
- 为什么用前 \(k\) 个主成分? 因为截断 SVD 是"用 \(k\) 个因子重构收益矩阵"误差最小的办法,而且不管用什么合理的误差度量(Frobenius、谱范数、核范数……),它都是最优的(Eckart–Young–Mirsky)。
- 主成分方差估得准吗? 准。奇异值对数据扰动是 1-Lipschitz 的:数据差多少,奇异值最多差多少。
- 因子载荷唯一吗? 不唯一。同一个协方差可以由无数组载荷生成,它们之间只差一个旋转。所以每月滚动做 PCA,"第 2 因子"可能这个月是规模、下个月变成价值的某种混合;比较之前要先用 Procrustes 旋转对齐。
- 风格因子相关时怎样正交化? Gram–Schmidt 结果依赖排序;对称正交化(极分解)给出离原因子最近、且与顺序无关的正交因子。
- 为什么病态协方差让优化器又慢又不稳? Kantorovich 不等式给出最速下降每步误差的缩小比例 \(((\kappa-1)/(\kappa+1))^2\),Wielandt 不等式说明条件数大的矩阵会把两个垂直的组合"压"成几乎平行的风险暴露。
需要先想起来的数学。
- 奇异值分解(SVD)。任何 \(T\times N\) 矩阵 \(A=V\Sigma W^*\):\(W\) 的列是"输入空间"的正交方向(PCA 载荷),\(V\) 的列是"输出空间"的正交方向(主成分得分的标准化时间序列),\(\sigma_i\) 是每个方向的放大倍数。对去均值收益矩阵,\(\sigma_i^2/(T-1)\) 就是第 \(i\) 个主成分的方差。见第 02b 章与 第 00 册第 06 章 线性代数速成。
- 迹与 Frobenius 范数。\(\operatorname{tr}A=\sum a_{ii}\);\(\|A\|_F^2=\sum_{ij}|a_{ij}|^2=\operatorname{tr}(A^*A)=\sum\sigma_i^2\)。迹满足"循环换位" \(\operatorname{tr}(XY)=\operatorname{tr}(YX)\)。例:\(\operatorname{tr}\begin{bmatrix}1&2\\3&4\end{bmatrix}=5\),Frobenius 范数平方 \(=1+4+9+16=30\)。
- 正交(酉)矩阵。\(U^TU=I\),作用是旋转或反射,不改变长度和夹角,所以 \(\|UA\|_F=\|A\|_F\)。
- 半正定平方根。\((A^*A)^{1/2}\) 是第 07a 章构造的唯一半正定平方根:特征值开方、特征向量不变。
- 最速下降(梯度下降)。沿负梯度方向走一步再走一步,直到梯度为零。见 第 00 册第 05 章 多元微积分与优化。
符号提示:本章 \(\sigma_i\) 是奇异值,不是波动率;\(A^\dagger\)(读作 dagger)是 Moore–Penrose 广义逆;\(\|\cdot\|_{[k]}\) 是前 \(k\) 个奇异值之和。
怎么读这一章。 核心必读:7.4.1–7.4.2(极分解与薄 SVD,就是 PCA 的计算流程)、7.4.3 的 Corollary 7.3.5(奇异值稳定)、7.4.4(旋转不定性)、7.5.2(Eckart–Young)、7.5.4(Procrustes)、7.7.4(最速下降收敛率)。7.5.1 的迹定理只需记住结论和"对齐时最大"的直觉;7.6 节(酉不变范数、Ky Fan)第一次可以只看表格和结论;7.7.1 中两个不等式等价的证明可以跳过。实战 1、2 与 PCA 实务直接相关,建议细读。
7.4 极分解
7.4.1 动机与定理
复数 \(z=re^{i\theta}\):模 \(r\ge0\) 唯一,相位 \(e^{i\theta}\) 只在 \(z\ne0\) 时唯一。把 \(r\) 看成 \(1\times1\) 半正定矩阵、\(e^{i\theta}\) 看成 \(1\times1\) 酉矩阵,矩阵版本就是极分解:任何线性变换 = 先旋转、再沿正交方向伸缩(或反过来)。
Theorem 7.3.1(极分解,polar decomposition)。 \(A\in M_{n,m}\)。
- (a) \(n<m\):\(A=PU\),\(P\in M_n\) 半正定,\(U\in M_{n,m}\) 行正交规范。\(P=(AA^*)^{1/2}\) 唯一;\(\operatorname{rank}A=n\) 时 \(U\) 也唯一。
- (b) \(n=m\):\(A=PU=UQ\),\(P,Q\) 半正定,\(U\) 酉。\(P=(AA^*)^{1/2}\)、\(Q=(A^*A)^{1/2}\) 唯一;\(A\) 非奇异时 \(U\) 唯一。
- (c) \(n>m\):\(A=UQ\),\(Q\in M_m\) 半正定,\(U\in M_{n,m}\) 列正交规范,\(Q=(A^*A)^{1/2}\) 唯一;\(\operatorname{rank}A=m\) 时 \(U\) 唯一。
- (d) \(A\) 实时 \(P,Q,U\) 都可取实。
证明(方阵情形):由 SVD \(A=V\Sigma W^*\),
令 \(P=V\Sigma V^*\),\(Q=W\Sigma W^*\),\(U=VW^*\)。\(P^2=AA^*\),由第 07a 章平方根的唯一性,\(P=(AA^*)^{1/2}\) 唯一。\(A\) 非奇异时 \(P\) 正定,\(U=P^{-1}A\) 被唯一确定。长方阵情形对 \([\Sigma_n\ 0]\) 分块即可。
推导拆解:中间那步是在 \(V\Sigma W^*\) 里"插入一个单位阵" \(V^*V=I\) 或 \(W^*W=I\): \(V\Sigma W^*=V\Sigma(V^*V)W^*=(V\Sigma V^*)(VW^*)\);同理 \(V\Sigma W^*=(VW^*)(W\Sigma W^*)\)。 验证 \(P^2=AA^*\):\(AA^*=V\Sigma W^*W\Sigma V^*=V\Sigma^2V^*\),而 \(P^2=V\Sigma V^*V\Sigma V^*=V\Sigma^2V^*\)。 白话解释:\(A=UQ\) 读作"先在输入空间沿 \(W\) 的方向分别伸缩 \(\sigma_i\) 倍(\(Q\)),再整体旋转(\(U\))"。\(Q\) 记录"拉伸多少",与坐标系无关的风险信息都在它里面;\(U\) 只是"朝向"。对收益数据矩阵 \(A\)(\(T\times N\)),\(Q^2=A^TA\) 正是(未除以 \(T-1\) 的)样本协方差,所以 协方差只看得到 \(Q\),看不到 \(U\)——这就是下面"旋转不定性"的来源。
几点推论:
- 奇异值就是 \(P\)(或 \(Q\))的特征值(7.3.P1)。
- \(AA^*\) 与 \(A^*A\) 酉相似:\(A=PU\) ⇒ \(AA^*=P^2=U(A^*A)U^*\)。
- 列满秩的 \(A\in M_{n,m}\)(\(n>m\))的极分解 \(A=UQ\) 中,\(U=A(A^*A)^{-1/2}\)。这在量化里叫对称正交化(实战 2)。
- \(A\) 正规 ⇔ \(PU=UP\)(7.3.P35)。
7.4.2 薄 SVD:从 \(A^*A\) 的特征分解出发
Theorem 7.3.2。 \(A\in M_{n,m}\),\(\operatorname{rank}A=r\)。设 \(A^*A=W\Lambda W^*\),\(\Lambda=\operatorname{diag}(\sigma_1^2,\dots,\sigma_r^2)\oplus0\),\(\sigma_1\ge\cdots\ge\sigma_r>0\)。取 \(W\) 的前 \(r\) 列 \(W_1\),则存在列正交规范的 \(V_1\in M_{n,r}\) 使
任何对角化 \(A^*A\) 的酉矩阵都可以充当右奇异向量矩阵。
量化读法:\(A\) 是 \(T\times N\) 的去均值收益矩阵,\(A^TA\)(除以 \(T-1\))是样本协方差。PCA 先求协方差的特征向量 \(W_1\)(载荷),再用 \(V_1\Sigma_r=AW_1\) 得到主成分得分(因子收益的时间序列)。这正是 7.3.2 的公式。\(N\gg T\) 时则先对 \(AA^T\)(\(T\times T\))做特征分解更便宜,两者通过 SVD 对偶(第 01 章实战 2 讨论过 \(AB\) 与 \(BA\))。
推导拆解:为什么 \(V_1=AW_1\Sigma_r^{-1}\) 的列正交规范。 \(V_1^*V_1=\Sigma_r^{-1}W_1^*(A^*A)W_1\Sigma_r^{-1}\);而 \(W_1\) 的列是 \(A^*A\) 的特征向量,\(W_1^*A^*AW_1=\operatorname{diag}(\sigma_1^2,\dots,\sigma_r^2)=\Sigma_r^2\);所以 \(V_1^*V_1=\Sigma_r^{-1}\Sigma_r^2\Sigma_r^{-1}=I\)。 再验证 \(V_1\Sigma_rW_1^*=AW_1W_1^*=A\):\(W_1W_1^*\) 是到 \(A\) 行空间的投影,\(A\) 在零空间方向上本来就是 0,所以投影不改变 \(A\)。 金融直觉:PCA 的流程一一对应:
- \(W_1\)(\(N\times r\)):载荷。第 \(i\) 列告诉你第 \(i\) 个主成分组合在每只股票上的权重。
- \(AW_1\)(\(T\times r\)):每天每个主成分组合的收益,即"因子收益"。
- \(\sigma_i^2/(T-1)\):第 \(i\) 个因子收益的方差。前 \(k\) 个的方差占比 \(\sum_{i\le k}\sigma_i^2/\sum_i\sigma_i^2\) 就是"解释的方差比例"。 例:500 只股票、250 天,若 \(\sigma_1^2\) 占全部 \(\sum\sigma_i^2\) 的 35%,说明第一主成分(通常是市场因子)解释了截面收益总方差的 35%。
7.4.3 Jordan–Wielandt 矩阵:把特征值定理搬到奇异值
Theorem 7.3.3。 \(A\in M_{n,m}\),\(q=\min\{n,m\}\)。Hermitian 矩阵
的特征值是 \(\pm\sigma_1,\dots,\pm\sigma_q\) 以及 \(|n-m|\) 个 0。
与 \(A^*A\)(特征值 \(\sigma_i^2\))相比,\(\mathcal A\) 与奇异值的关系是线性的,所以 Hermitian 矩阵的加法型定理可以直接搬过来:
Corollary 7.3.5(奇异值的扰动界)。 \(A,B\in M_{n,m}\):
推导拆解:
- 为什么 \(\mathcal A\) 的特征值是 \(\pm\sigma_i\):设 \(Aw_i=\sigma_iv_i\)、\(A^*v_i=\sigma_iw_i\)(SVD 的定义)。则
\[\begin{bmatrix}0&A\\A^*&0\end{bmatrix}\begin{bmatrix}v_i\\w_i\end{bmatrix}=\begin{bmatrix}Aw_i\\A^*v_i\end{bmatrix}=\sigma_i\begin{bmatrix}v_i\\w_i\end{bmatrix},\]把 \(w_i\) 换成 \(-w_i\) 就得到特征值 \(-\sigma_i\)。- \(A\) 换成 \(B\),\(\mathcal A\) 就换成 \(\mathcal B\),且 \(\mathcal A-\mathcal B\) 的谱范数等于 \(\|A-B\|_2\)。对 Hermitian 矩阵 \(\mathcal A,\mathcal B\) 用 Weyl 不等式(排序后的特征值之差不超过差矩阵的谱范数),再只看正的那一半特征值,就得到奇异值的界。 为什么不直接用 \(A^*A\):\(A^*A\) 的特征值是 \(\sigma_i^2\),而 \(\|A^*A-B^*B\|\) 和 \(\|A-B\|\) 的关系不是线性的,得不到干净的界。
前者来自 Weyl 不等式,后者来自 Hoffman–Wielandt 定理(第 06 章)。奇异值关于矩阵扰动是 1-Lipschitz 的:数据矩阵差一点,奇异值就只差一点。这是 PCA 方差解释比例可以稳定估计的理论保证;但注意,奇异向量没有这样的保证——奇异值相近时向量可以剧烈转动(实战 2 的前半部分)。
Corollary 7.3.6(删行删列的交错)。 删去 \(A\) 的一行或一列,新奇异值与原奇异值交错:\(\sigma_1\ge\hat\sigma_1\ge\sigma_2\ge\hat\sigma_2\ge\cdots\)。删去一个交易日或一只股票,第 \(k\) 大奇异值不会跳过相邻的奇异值。
Theorem 7.3.8(Courant–Fischer 型刻画)。
特别地 \(\|Ax\|_2\le\sigma_1(A)\|x\|_2\),\(\sigma_k(AB)\le\sigma_1(A)\sigma_k(B)\)。
7.4.4 \(A^*A=B^*B\) 的刻画:旋转不定性
Theorem 7.3.11。 \(A\in M_{p,n}\),\(B\in M_{q,n}\),\(p\le q\)。则 \(A^*A=B^*B\) ⇔ 存在列正交规范的 \(V\in M_{q,p}\) 使 \(B=VA\)。实情形 \(V\) 可取实。
证明思路:两者有同一个 \(A^*A\),所以由 7.3.2 可取同一个 \(W_1\)、\(\Sigma_r\),\(A=V_1\Sigma_rW_1^*\),\(B=V_2\Sigma_rW_1^*\);\(V_1\) 与 \(V_2\) 的列都正交规范,可以用一个酉矩阵把一个映到另一个。
量化读法:两个数据矩阵(或两组因子载荷)有相同的 Gram 矩阵,当且仅当它们相差一个正交变换。统计因子模型只能识别 \(BB^T\),载荷 \(B\) 只确定到右乘一个正交阵为止;第 07a 章说协方差的平方根因子只差一个旋转,也是这件事。一个漂亮的应用是由 Cholesky 推 QR(7.3.P34):\(X^TX=R^TR\)(Cholesky),由本定理 \(X=QR\)。
金融直觉:一个两因子的例子。设两只股票的载荷矩阵(行是股票、列是因子)为 \(B=\begin{bmatrix}1&0.5\\1&-0.5\end{bmatrix}\),因子收益独立、方差为 1,则系统协方差 \(BB^T=\begin{bmatrix}1.25&0.75\\0.75&1.25\end{bmatrix}\)。可以把因子解释为"市场"(两只股票载荷都是 1)和"多空价差"(载荷 \(\pm0.5\))。 现在把因子旋转 \(45^\circ\):\(B'=BV\),\(V=\frac1{\sqrt2}\begin{bmatrix}1&-1\\1&1\end{bmatrix}\)。新载荷约为 \(\begin{bmatrix}1.06&-0.35\\0.35&-1.06\end{bmatrix}\),\(B'B'^T\) 与 \(BB^T\) 完全相同。新的两个因子更像"偏向股票 1 的因子"和"偏向股票 2 的因子"。 两种解释在协方差层面无法区分。所以统计因子模型的载荷需要额外约定才能确定(如"第一个因子方差最大、因子之间不相关"就是 PCA 的约定),而"这个因子代表什么"的经济解释,本质上依赖你选了哪个旋转。基本面因子模型用可观测的特征(市值、估值)直接固定载荷,就是绕开了这一不确定性。
7.4.5 7.3 节习题中的常用结论
- Moore–Penrose 广义逆(7.3.P7):\(A^\dagger=W\Sigma^\dagger V^*\)(非零奇异值取倒数),由 \(AA^\dagger A=A\)、\(A^\dagger AA^\dagger=A^\dagger\)、\(AA^\dagger\) 与 \(A^\dagger A\) Hermitian 唯一确定。
- 最小二乘(7.3.P9、P15):\(x=A^\dagger b\) 是 \(Ax=b\) 的最小范数最小二乘解;\(A^\dagger=\lim_{t\to0^+}A^*(AA^*+tI)^{-1}\),即岭回归在惩罚趋于 0 时收敛到伪逆解。
- 奇异值的 Weyl 不等式(7.3.P16):\(\sigma_{i+j-1}(A+B)\le\sigma_i(A)+\sigma_j(B)\),\(\sigma_{i+j-1}(AB^*)\le\sigma_i(A)\sigma_j(B)\)。
- Weyl 乘积不等式(7.3.P17):\(|\lambda_1\cdots\lambda_k|\le\sigma_1\cdots\sigma_k\)(特征值按模递减),\(\sum_{i\le k}|\lambda_i|\le\sum_{i\le k}\sigma_i\)。特别地 \(\rho(A)\le\sigma_1(A)\)。VAR 系数矩阵的谱半径小于 1 不代表 \(\|A\|_2<1\),冲击可能先放大再衰减(第 02a 章"偏离正规性")。
- 迹与奇异值(7.3.P18):\(|\operatorname{tr}A|\le\sum\sigma_i\),等号 ⇔ \(A\) 是半正定矩阵乘一个模 1 的数。
- \(2\times2\) 显式公式(7.3.P26):半正定 \(A\in M_2\) 有 \(A^{1/2}=(A+\sqrt{\det A}\,I)/\sqrt{\operatorname{tr}A+2\sqrt{\det A}}\)。
- 7.3.P21:小扰动(小于最小正奇异值)不能降低秩,但可以升高秩——这就是为什么样本协方差几乎总是"满秩"的,即使真实协方差是低秩加小噪声。
7.5 von Neumann 迹定理与最佳逼近
7.5.1 von Neumann 迹定理
Theorem 7.4.1.1(von Neumann)。 \(A,B\in M_{m,n}\),\(q=\min\{m,n\}\):
这是本节所有逼近定理的"发动机"。方阵情形的证明在第 08b 章(8.7.6):把迹写成奇异值的双线性形式 \(\sum_{i,j}\sigma_i(A)\sigma_j(B)c_{ij}\),系数矩阵被一个双随机矩阵控制,再用 Birkhoff 定理把最大值推到置换矩阵上,最后用重排不等式。长方阵补零即可。直观上它是 Cauchy–Schwarz 的加强:把两个矩阵的奇异向量"对齐"时内积最大。
白话解释:\(\operatorname{Re}\operatorname{tr}(AB^*)=\operatorname{Re}\sum_{ij}a_{ij}\bar b_{ij}\) 是把两个矩阵当成长向量做内积(Frobenius 内积)。它的标量版本是重排不等式:两组数 \(a_1\ge a_2\ge\cdots\) 和 \(b_1\ge b_2\ge\cdots\),配对相乘再求和,"大配大、小配小"时和最大。 金融例子:把资金 \(a_i\) 分配到预期收益 \(b_i\) 的策略上,总收益 \(\sum a_ib_{\pi(i)}\) 在"最多的钱给收益最高的策略"时最大。von Neumann 定理说矩阵也一样:内积的上界是"最大奇异值配最大奇异值",而达到上界需要两个矩阵的奇异向量方向对齐。 小例子:\(A=\operatorname{diag}(3,1)\),\(B=\operatorname{diag}(2,1)\),\(\operatorname{tr}(AB^T)=7=3\cdot2+1\cdot1\),取到上界;若 \(B=\operatorname{diag}(1,2)\)(大方向不对齐),奇异值仍是 2、1,上界仍是 7,但 \(\operatorname{tr}=5\)。
Corollary 7.4.1.3。
- (a) \(\|A-B\|_F^2\ge\sum_i(\sigma_i(A)-\sigma_i(B))^2\)(Hoffman–Wielandt 的奇异值版);
- (b) \(\sum_i\sigma_i(A)=\max_U\operatorname{Re}\operatorname{tr}(AU)\),\(U\) 取遍酉矩阵(迹范数的变分刻画),最大值在极分解的酉因子处取得;
- (d) \(\sum\sigma_i(AB^*)\le\sum\sigma_i(A)\sigma_i(B)\)。
(a) 的证明只有一行:\(\|A-B\|_F^2=\sum\sigma_i^2(A)-2\operatorname{Re}\operatorname{tr}(AB^*)+\sum\sigma_i^2(B)\),再用迹定理。
Theorem 7.4.1.4(等号刻画)。 方阵 \(A\) 满足 \(\operatorname{Re}\operatorname{tr}A=\sum\sigma_i(A)\) ⇔ \(A\) 半正定。由此(Corollary 7.4.1.5),(a) 取等时 \(AB^*\) 与 \(B^*A\) 都半正定。
7.5.2 最近奇异矩阵与最佳秩 \(k\) 逼近
设 \(A\in M_n\) 非奇异。若 \(B\) 奇异,\(\sigma_n(B)=0\),由 (a)
而把 SVD 中的 \(\sigma_n\) 置零得到的 \(B_0\) 恰好达到它。所以**\(A\) 到奇异矩阵集合的 Frobenius 距离是 \(\sigma_n(A)\)**(谱范数距离也是 \(\sigma_n\))。\(\sigma_{n-1}>\sigma_n\) 时最近奇异矩阵唯一(7.4.P17)。量化读法:最小奇异值小 = 离"奇异"近 = 存在一个几乎零方差的组合;协方差估计里这通常是噪声而非真实结构。
最佳秩 \(k\) 逼近(Eckart–Young)。 \(A\in M_{m,n}\),\(\operatorname{rank}B=k\) 时
截断 SVD \(A_k=\sum_{i\le k}\sigma_iv_iw_i^*\) 达到下界;唯一 ⇔ \(\sigma_k>\sigma_{k+1}\)。7.5.5 节将证明:截断 SVD 在所有酉不变范数下同时最优,谱范数下的最小误差是 \(\sigma_{k+1}\)。这是 PCA、统计因子模型、协方差去噪(保留前 \(k\) 个主成分)的数学基础。
推导拆解:两个不等号各用了什么。
- 第一个 \(\ge\):Corollary 7.4.1.3(a),即 \(\|A-B\|_F^2\ge\sum_i(\sigma_i(A)-\sigma_i(B))^2\)。再用 \(\operatorname{rank}B=k\),\(B\) 只有前 \(k\) 个奇异值可能非零,\(i>k\) 的项就是 \(\sigma_i(A)^2\)。
- 第二个 \(\ge\):丢掉前 \(k\) 项(它们非负)。
- 取等:\(B=A_k\) 时前 \(k\) 个奇异值与 \(A\) 相同,第一项为 0;且 \(A-A_k=\sum_{i>k}\sigma_iv_iw_i^*\),其 Frobenius 范数平方正好是 \(\sum_{i>k}\sigma_i^2\)。 金融直觉:把 \(T\times N\) 的去均值收益矩阵 \(A\) 近似成 \(k\) 个因子的结果 \(B=FL^T\)(\(F\) 是 \(T\times k\) 的因子收益、\(L\) 是 \(N\times k\) 的载荷),\(\operatorname{rank}B\le k\)。Eckart–Young 说:在所有 \(k\) 因子模型里,PCA 的样本内残差平方和最小,最小值就是被丢掉的奇异值平方和。所以"前 \(k\) 个主成分解释的方差比例"可以理解为"最好的 \(k\) 因子模型的样本内 \(R^2\)"。 但要记住这是样本内最优:截断 SVD 会把一部分噪声也吸收为因子(实战 1 读法第 2 条)。
7.5.3 最小二乘的 SVD 解
\(A\in M_{m,n}\)(\(m\ge n\)),\(\operatorname{rank}A=k\),\(A=V\Sigma W^*\)。令 \(\xi=W^*x\),\(\beta=V^*b\),则 \(\|Ax-b\|_2=\|\Sigma\xi-\beta\|_2\),各坐标解耦:
列满秩时退化为正规方程解 \((A^*A)^{-1}A^*b\)。公式中的 \(1/\sigma_i\) 说明:小奇异值方向上的观测噪声会被放大 \(1/\sigma_i\) 倍——截断 SVD 回归(丢掉小 \(\sigma_i\))和岭回归(把 \(1/\sigma_i\) 换成 \(\sigma_i/(\sigma_i^2+t)\))都是在处理这一点(第 02b 章实战)。
推导拆解:
- \(\|Ax-b\|_2=\|V\Sigma W^*x-b\|_2=\|V(\Sigma\xi-V^*b)\|_2=\|\Sigma\xi-\beta\|_2\):先代入 SVD、令 \(\xi=W^*x\),再提出 \(V\);\(V\) 是酉矩阵,不改变长度。
- \(\Sigma\) 是对角的(前 \(k\) 个对角元非零),所以 \(\|\Sigma\xi-\beta\|_2^2=\sum_{i\le k}(\sigma_i\xi_i-\beta_i)^2+\sum_{i>k}\beta_i^2\),每个坐标独立。
- 前一部分取 \(\xi_i=\beta_i/\sigma_i\) 变成 0;后一部分与 \(\xi\) 无关,就是最小残差。\(\xi_i\)(\(i>k\))不影响残差,取 0 使 \(\|x\|\) 最小。
- 变回 \(x=W\xi=\sum_{i\le k}(\beta_i/\sigma_i)w_i\)。 金融直觉:用高度相关的因子(例如价值和低波动、规模和流动性)做回归时,\(X\) 有一个很小的奇异值 \(\sigma_{\min}\),对应"两个因子之差"这个方向。回归系数在这个方向上的分量是 \(\beta_i/\sigma_{\min}\)——数据里一点点噪声被除以很小的数,系数就会大幅摆动,表现为两个因子的系数一正一负、绝对值很大、每期翻转。这和 CFA 二级讲的多重共线性(系数标准误很大、符号不稳定)是同一现象,这里给出了它的精确来源。
7.5.4 用酉矩阵逼近:Procrustes 问题
承接说明:第 02b 章 2.12 节已给出正交 Procrustes 的解 \(Q=PR^T\) 并用于滚动 PCA 对齐;本节用 von Neumann 迹定理给出完整证明,并推广到数量倍酉矩阵与最近酉矩阵。
数量倍酉矩阵(7.4.4)。 \(\min_{c,U}\|A-cU\|_F\) 在 \(|c|=\frac1n\sum\sigma_i(A)\)、\(U\) 取极分解酉因子 \(U_0\) 时达到,最小值 \(\|A\|_F^2-n\mu^2\),\(\mu\) 为奇异值均值。
酉 Procrustes 问题(7.4.5)。 给定 \(A,B\in M_{m,n}\),求酉 \(U\) 使 \(\|A-UB\|_F\) 最小。展开
等号 ⇔ \(AB^*U^*\) 半正定。算法:对 \(AB^*\) 做 SVD \(AB^*=V\Sigma W^*\),取 \(U_0=VW^*\)(即 \(AB^*\) 的极分解酉因子)。
推导拆解:
- 展开:\(\|A-UB\|_F^2=\operatorname{tr}\big((A-UB)^*(A-UB)\big)=\|A\|_F^2+\|UB\|_F^2-2\operatorname{Re}\operatorname{tr}(A^*UB)\)。\(U\) 酉,\(\|UB\|_F=\|B\|_F\)。
- 交叉项改写:\(\operatorname{tr}(A^*UB)\) 与 \(\operatorname{tr}(AB^*U^*)\) 互为共轭(迹的循环性加取共轭转置),实部相同。所以只需最大化 \(\operatorname{Re}\operatorname{tr}(AB^*U^*)\)。
- 由 von Neumann 定理,\(\operatorname{Re}\operatorname{tr}(AB^*U^*)\le\sum\sigma_i(AB^*)\sigma_i(U^*)=\sum\sigma_i(AB^*)\)(酉矩阵的奇异值全为 1)。
- 验证 \(U_0=VW^*\) 取到:\(AB^*U_0^*=V\Sigma W^*WV^*=V\Sigma V^*\),半正定,迹等于 \(\sum\sigma_i\)。 记忆方法:Procrustes 只需要"交叉乘积矩阵" \(AB^*\) 的 SVD,把中间的 \(\Sigma\) 扔掉、把两边的正交矩阵拼起来。
"Procrustes"出自希腊神话中把旅人拉长或截短以适应床的强盗;在统计中指"把一个构型旋转到尽量贴近另一个"。量化用途:不同时间窗口、不同股票池、不同估计方法得到的因子载荷,只确定到一个旋转(7.3.11),比较或拼接之前必须先用 Procrustes 对齐(实战 2)。若旋转作用在右边(\(\min_Q\|A-BQ\|\)),把问题转置即可:\(B^*A=U\Sigma W^*\),\(Q=UW^*\)。
双边旋转(7.4.6)。 \(\min_{U,T}\|A-UBT\|_F\) 的最小值是 \(\|\Sigma(A)-\Sigma(B)\|_F\),由两边的奇异向量对齐达到。
最近酉矩阵(7.4.P15–P16)。 到酉矩阵集合的距离是 \(\|\Sigma(A)-I\|\)(任意酉不变范数),由极分解的酉因子达到。列满秩长方阵 \(A\) 的极分解因子 \(A(A^*A)^{-1/2}\) 是"离 \(A\) 最近的列正交矩阵"。最近 Hermitian 矩阵(7.4.P13):到 Hermitian 矩阵集合的距离是 \(\frac12\|A-A^*\|\),由 Hermitian 部分 \(\frac12(A+A^*)\) 达到——估计出的"协方差"因数值误差不对称时,取 \((S+S^T)/2\) 是最优修正。
金融直觉:对称正交化(又叫 Löwdin 正交化)怎么理解。设三个风格因子的收益序列(标准化后)排成 \(F\) 的三列,\(F^TF\) 是它们的相关矩阵 \(C\)。要找一组两两不相关的新因子 \(O\),并且每个新因子都尽量像原来的那个。
- Gram–Schmidt:第 1 个因子不动,第 2 个减去它在第 1 个上的投影,第 3 个减去在前两个上的投影。结果依赖顺序,排在第一的因子"拿走"所有共同部分。这和 Cholesky 依赖资产排序是同一件事(第 07a 章)。
- 对称正交化:\(O=FC^{-1/2}\)。它对三个因子一视同仁,并且在所有正交因子组中 \(\|F-O\|_F\) 最小。 两因子例子:相关系数 \(\rho>0\) 时,\(C^{-1/2}\) 的对角元相等、非对角元为负,新因子 \(o_1=a f_1-b f_2\)、\(o_2=a f_2-b f_1\),两个因子各自"扣掉"对方的同等份额。在归因中,这避免了"谁排在前面,共同收益就记在谁头上"的任意性。
7.6 酉不变范数
7.6.1 对称规范函数
酉不变范数(unitarily invariant norm) 满足 \(\|UAV\|=\|A\|\) 对所有酉 \(U,V\)。由 SVD,\(\|A\|=\|\Sigma(A)\|\) 只依赖奇异值。定义 \(g(x)=\|\operatorname{diag}(x)\|\),它继承了范数性质,并且是绝对的(\(g(x)=g(|x|)\))、置换不变的。这样的向量范数叫对称规范函数(symmetric gauge function)。
Theorem 7.4.7.2(von Neumann)。 酉不变范数与对称规范函数一一对应:\(\|A\|=g(s(A))\),\(s(A)\) 是奇异值向量。
三角不等式是难点,证明用对偶范数与迹定理的形式 7.4.1.3(c)。例子:
| 对称规范函数 \(g\) | 对应的酉不变范数 | 名称 |
|---|---|---|
| \(\ell_2\) | \((\sum\sigma_i^2)^{1/2}\) | Frobenius 范数 |
| \(\ell_\infty\) | \(\sigma_1\) | 谱范数 |
| \(\ell_1\) | \(\sum\sigma_i\) | 迹范数 / 核范数 |
| \(\ell_p\) | \((\sum\sigma_i^p)^{1/p}\) | Schatten \(p\)-范数 |
| 前 \(k\) 大分量之和 | \(\sigma_1+\cdots+\sigma_k\) | Ky Fan \(k\)-范数 \(|A|_{[k]}\) |
核范数是"秩的凸包络",在低秩矩阵补全、稳健 PCA(低秩 + 稀疏分解)等问题中作为秩的凸替代出现。
7.6.2 Ky Fan 占优定理
Theorem 7.4.8.4(Ky Fan 占优定理,Ky Fan's dominance theorem)。 \(\|A\|\le\|B\|\) 对所有酉不变范数成立 ⇔ \(\|A\|_{[k]}\le\|B\|_{[k]}\) 对 \(k=1,\dots,q\) 成立。
证明用 Abel 分部求和:任何酉不变范数可写成 \(\max\sum_i\sigma_i(A)\sigma_i(\Sigma)\),而
系数全非负。所以只需比较有限个 Ky Fan 范数,就能断言"在任何合理的度量下 \(A\) 都比 \(B\) 小"。
白话解释:这是一个"累积和比较"的定理,和你熟悉的二阶随机占优、Lorenz 曲线是同一种思路。二阶随机占优不要求每一点的分布函数都更好,只要求累积面积处处更好,就能保证所有风险厌恶投资者都偏好它。这里也一样:只要把奇异值从大到小排好,\(A\) 的前 \(k\) 个之和对每个 \(k\) 都不超过 \(B\) 的,那么不论用 Frobenius、谱范数、核范数还是任何其他酉不变范数衡量,\(A\) 都不比 \(B\) 大。 Abel 分部求和那一步就是把"加权和"改写成"累积和的非负加权和":权重 \(\sigma_i(\Sigma)\) 递减,所以相邻差 \(\sigma_i(\Sigma)-\sigma_{i+1}(\Sigma)\ge0\)。 用途:比较两个协方差估计量的误差矩阵时,若 Ky Fan 范数全部更小,就不必争论"用哪个范数评价"。
7.6.3 逼近界对所有酉不变范数成立
Theorem 7.4.9.1。 对每个酉不变范数,\(\|A-B\|\ge\|\Sigma(A)-\Sigma(B)\|\)。
证明:对 Jordan–Wielandt 矩阵用 Lidskii 型优超(第 04a 章,定理 4.3.47),得到所有 Ky Fan 范数下的不等式,再用 Ky Fan 占优定理。
推论(Eckart–Young–Mirsky):\(\operatorname{rank}B=k\) 时
截断 SVD 在所有酉不变范数下同时是最佳秩 \(k\) 逼近。
Corollary 7.4.9.3(Mirsky)。 \(A,B\) Hermitian,对任意酉不变范数
这是 Hoffman–Wielandt(Frobenius)与 Weyl(谱范数)界的统一推广:协方差矩阵的估计误差有多大,排序后的特征值误差就不会更大,无论用哪种酉不变范数度量。
7.6.4 矩阵范数与绝对范数
- Theorem 7.4.10.1:\(M_n\) 上的酉不变范数是矩阵范数(次乘性 \(\|AB\|\le\|A\|\|B\|\))⇔ \(\|A\|\ge\sigma_1(A)\)。Ky Fan 范数、Schatten \(p\)-范数(\(p\ge1\))都是。
- Theorem 7.4.11.1:既酉不变又是绝对范数(只依赖 \(|a_{ij}|\))的,只有 Frobenius 范数的正数倍。所以谱范数不是绝对范数:把矩阵元素改变符号会改变谱范数(7.4.11 的 \(B_\pm\) 例子:\(B_+\) 奇异值为 \(\sqrt{\alpha^2+\beta^2}\) 与 0,\(B_-\) 奇异值为 \(\alpha,\beta\),元素绝对值却相同)。
7.7 Kantorovich 与 Wielandt 不等式
7.7.1 两个不等式
设 \(A\in M_n\) 正定,最小、最大特征值为 \(\lambda_1,\lambda_n\),\(\kappa=\lambda_n/\lambda_1\)。由 Cauchy–Schwarz,单位向量 \(x\) 总有 \((x^*Ax)(x^*A^{-1}x)\ge1\)。Kantorovich 不等式给出反方向的界:
Kantorovich 不等式(7.4.12.1)。
Wielandt 不等式(7.4.12.2)。 对 \(x\perp y\):
Kantorovich 的证明(原书的巧妙做法):\(\lambda_nI-A\)、\(A-\lambda_1I\) 都半正定,与 \(A^{-1}\) 两两交换,所以乘积半正定:
即 \(x^*Ax+\lambda_1\lambda_n\,x^*A^{-1}x\le(\lambda_1+\lambda_n)x^*x\)。令 \(t_0=\lambda_1\lambda_nx^*A^{-1}x\),两边乘 \(t_0\):\(t_0(x^*Ax)\le t_0(\lambda_1+\lambda_n)x^*x-t_0^2\),右端作为 \(t\) 的二次函数最大值为 \((\lambda_1+\lambda_n)^2(x^*x)^2/4\),整理即得。
推导拆解:
- 为什么乘积半正定:三个矩阵都是 \(A\) 的多项式(或 \(A^{-1}\)),共用 \(A\) 的特征向量;在第 \(i\) 个特征方向上,乘积的特征值是 \((\lambda_n-\lambda_i)(\lambda_i-\lambda_1)/\lambda_i\),三个因子都 \(\ge0\)。
- 展开:\((\lambda_nI-A)(A-\lambda_1I)=-A^2+(\lambda_1+\lambda_n)A-\lambda_1\lambda_nI\),右乘 \(A^{-1}\) 得 \(-A+(\lambda_1+\lambda_n)I-\lambda_1\lambda_nA^{-1}\)。
- 记 \(a=x^*Ax\),\(t_0=\lambda_1\lambda_n\,x^*A^{-1}x\),\(c=(\lambda_1+\lambda_n)x^*x\),第 2 步给出 \(a+t_0\le c\),即 \(a\le c-t_0\)。
- 两边乘 \(t_0>0\):\(at_0\le ct_0-t_0^2\)。把右边看成 \(t\) 的二次函数 \(ct-t^2\),其最大值在 \(t=c/2\) 处为 \(c^2/4\)。所以 \(at_0\le c^2/4\)。
- 代回:\(\lambda_1\lambda_n(x^*Ax)(x^*A^{-1}x)\le(\lambda_1+\lambda_n)^2(x^*x)^2/4\),两边除以 \(\lambda_1\lambda_n\)。 数值例子:\(A=\operatorname{diag}(1,4)\),\(x=(1,1)/\sqrt2\),\(x^*Ax=2.5\),\(x^*A^{-1}x=0.625\),乘积 \(1.5625\);界 \((1+4)^2/(4\cdot4)=1.5625\),正好取等(\(x\) 是两个极端特征向量的等权组合)。
二者等价。 Kantorovich ⇒ Wielandt:对 \(2\times2\) 正定矩阵 \(B=\begin{bmatrix}a&b\\\bar b&c\end{bmatrix}\) 取 \(x=e_1\),Kantorovich 化为 \(|b|^2/(ac)\le((\mu_2-\mu_1)/(\mu_2+\mu_1))^2\);对正交规范的 \(x,y\) 取 \(B=[x\ y]^*A[x\ y]\),由 Poincaré 分离定理 \(\lambda_1\le\mu_1\le\mu_2\le\lambda_n\),而 \((1-t)^2/(1+t)^2\) 在 \(t>1\) 上递增。Wielandt ⇒ Kantorovich:对非特征向量的单位向量 \(x\) 取 \(y=A^{-1}x-(x^*A^{-1}x)x\perp x\) 代入。
取等条件。 设 \(Au=\lambda_1u\)、\(Av=\lambda_nv\)(单位向量),\(x=(u+v)/\sqrt2\)、\(y=(u-v)/\sqrt2\) 时两个不等式都取等。
7.7.2 几何意义:病态把正交方向压扁
设 \(B\) 非奇异,\(\kappa=\sigma_1(B)/\sigma_n(B)\)。对 \(A=B^*B\)(条件数 \(\kappa^2\))用 Wielandt:
定义 \(\theta_\kappa\in(0,\pi/2]\),\(\cos\theta_\kappa=(\kappa^2-1)/(\kappa^2+1)\)(于是 \(\sin\theta_\kappa=2\kappa/(\kappa^2+1)\),\(\cot(\theta_\kappa/2)=\kappa\))。\(\theta_\kappa\) 是一对正交向量经 \(B\) 映射后夹角的最小可能值。\(\kappa=10\) 时这个角只有约 \(11.4°\):两个原本垂直的方向被映射到几乎平行。病态协方差矩阵(例如高度共线的因子)正是这样把"不同"的组合压成"几乎相同"的风险暴露,优化器于是可以用两个几乎相同的暴露做大额对冲——这就是均值–方差优化"误差最大化"的几何根源。
原书勘误:(7.4.12.8) 的系数。 原书在此给出练习:对 \(A=B^*B\) 用 Kantorovich 不等式。正确结果是
推导:\(A=B^*B\) 的特征值比为 \(\kappa^2\),\(x^*Ax=\|Bx\|^2\),\(x^*A^{-1}x=\|B^{-*}x\|^2\),代入 Kantorovich 得 \(\|Bx\|^2\|B^{-*}x\|^2\le\frac{(\kappa^2+1)^2}{4\kappa^2}\|x\|^4\),开方即可。原书扫描页上 (7.4.12.8) 的系数印成 \(\frac{2\kappa}{\kappa^2+1}\),这不可能正确:由 Cauchy–Schwarz,\(\|x\|^2=|\langle Bx,B^{-*}x\rangle|\le\|Bx\|\|B^{-*}x\|\),左端总是 \(\ge\|x\|^2\),而 \(\frac{2\kappa}{\kappa^2+1}\le1\)。它与紧随其后的 (7.4.12.9) 也矛盾。应以 \(\frac{\kappa^2+1}{2\kappa}\) 为准(实战 3 数值验证)。
7.7.3 7.4 节习题中的推论
- 标量 Kantorovich(7.4.P1):\(\alpha_i\ge0\)、\(\sum\alpha_i=1\)、\(\lambda_i\in[\lambda_1,\lambda_n]\) 时 \((\sum\alpha_i\lambda_i)(\sum\alpha_i\lambda_i^{-1})\le A^2/G^2\),\(A,G\) 为 \(\lambda_1,\lambda_n\) 的算术、几何平均。最速下降法的收敛率由此得出(7.7.4 节)。
- 相关系数受条件数控制(7.4.P2):正定矩阵满足 \(|a_{ij}|^2\le\big(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}\big)^2a_{ii}a_{jj}\)。对相关矩阵:\(|\rho_{ij}|\le(\kappa-1)/(\kappa+1)\)。反过来,若两只资产相关系数为 0.99,相关矩阵的条件数至少是 \((1+0.99)/(1-0.99)=199\)。
- \(x\) 与 \(Ax\) 的夹角(7.4.P4):\(\frac{\langle x,Ax\rangle}{\|x\|\|Ax\|}\ge\frac{2\sqrt\kappa}{\kappa+1}\)。梯度方向与"牛顿方向"的夹角上界由此而来。
- **Bergström 不等式(7.4.P10)**与 Berenstein–Veinstein 不等式(7.4.P11):\((x,A)\mapsto x^*A^{-1}x\) 联合凸,即 \(x^*A^{-1}x+y^*B^{-1}y\ge(x+y)^*(A+B)^{-1}(x+y)\)。夏普比率平方 \(\mu^T\Sigma^{-1}\mu\) 关于 \((\mu,\Sigma)\) 联合凸,在稳健组合优化中有用。
- Greub–Rheinboldt 不等式(7.4.P3):Kantorovich 对两个交换正定矩阵的推广。
- 反向重排不等式(7.4.P9):\(\sum\alpha_i^\downarrow\beta_i^\downarrow\le\frac{m+M}{2\sqrt{mM}}\sum\alpha_i\beta_i\)。
7.7.4 最速下降法的收敛率
考虑 \(f(w)=\frac12w^TAw-b^Tw\),\(A\) 正定(例如无约束均值–方差问题 \(\frac12w^T\Sigma w-\mu^Tw\),或最小二乘的正规方程)。最速下降取 \(g=\nabla f(w)=Aw-b\),精确线搜索步长 \(\alpha=g^Tg/g^TAg\)。记误差 \(E(w)=(w-w^*)^TA(w-w^*)=2[f(w)-f(w^*)]\),直接计算得
不等号正是 Kantorovich。\(\kappa=100\) 时每步误差最多缩小到 \(0.96\) 倍,要 200 多步才能缩小一个数量级以上;\(\kappa=4\) 时每步缩小到 \(0.36\) 倍。界是紧的:梯度落在 \(u_1+u_n\) 方向时每步恰好达到它,迭代在两个方向之间"之字形"来回。这就是为什么风险模型、组合优化求解器要做预条件(把 \(\kappa\) 变小)或改用共轭梯度、牛顿类方法(第 04 册)。
推导拆解(误差恒等式,练习 9 的提示展开):
- \(g=Aw_k-b=A(w_k-w^*)\),因为 \(Aw^*=b\)。记 \(e_k=w_k-w^*\),则 \(g=Ae_k\),\(E(w_k)=e_k^TAe_k=g^TA^{-1}g\)。
- \(e_{k+1}=e_k-\alpha g\),\(E(w_{k+1})=e_k^TAe_k-2\alpha g^TAe_k+\alpha^2g^TAg=E(w_k)-2\alpha g^Tg+\alpha^2g^TAg\)。
- 代入 \(\alpha=g^Tg/g^TAg\):后两项合成 \(-(g^Tg)^2/g^TAg\)。
- 除以 \(E(w_k)=g^TA^{-1}g\) 即得比值 \(1-\frac{(g^Tg)^2}{(g^TAg)(g^TA^{-1}g)}\);Kantorovich 说分母不超过 \(\frac{(\kappa+1)^2}{4\kappa}(g^Tg)^2\)。 数值核对:原文"\(\kappa=100\) 时……要 200 多步才能缩小一个数量级以上"的说法偏保守,容易误读。按界计算,误差缩小到 1/10 需要 \(\ln0.1/\ln0.9608\approx58\) 步;200 步后的界是 \(0.9608^{200}\approx3.4\times10^{-4}\)(与实战 3 输出一致),即约 3.5 个数量级。正确的读法是:\(\kappa=100\) 时每缩小一个数量级约需 58 步,\(\kappa=4\) 时只需约 2.3 步。 金融直觉:误差在最大、最小特征方向之间"之字形"来回,就像在一条狭长山谷里下山:沿陡峭的谷壁方向(\(\lambda_n\),例如市场因子方向)一步走过头,沿平缓的谷底方向(\(\lambda_1\),例如某个低风险的多空价差)几乎不动。预条件(如先按波动率标准化、或用因子模型的结构做变量替换)就是把狭长山谷"压圆"。
量化实战
实战 1:PCA 低秩因子模型的最优性与稳定性
场景:\(T=500\) 天、\(N=60\) 只股票的收益由 3 个因子驱动,加特质噪声。用截断 SVD 提取 \(k\) 个统计因子,检验 Eckart–Young–Mirsky 定理的三条结论:误差公式、所有酉不变范数下最优、奇异值对数据扰动稳定。
import numpy as np
rng = np.random.default_rng(7)
# ---------- 1. 模拟 3 因子收益:T 天 × N 只股票 ----------
T, N, K = 500, 60, 3
F = rng.standard_normal((T, K)) * np.array([0.012, 0.007, 0.005]) # 因子收益
B = rng.normal(1.0, 0.3, (N, K)) * np.array([1, 0.8, 0.6]) # 载荷
B[:, 1:] = rng.normal(0, 1, (N, K - 1))
E = rng.standard_normal((T, N)) * 0.01 # 特质收益
R = F @ B.T + E
X = R - R.mean(0) # 去均值
# ---------- 2. 截断 SVD = 最佳秩 k 逼近(Eckart–Young–Mirsky) ----------
U, s, Vt = np.linalg.svd(X, full_matrices=False)
print("前 6 个奇异值:", np.round(s[:6], 4))
for k in [1, 3, 5]:
Xk = (U[:, :k] * s[:k]) @ Vt[:k]
D = X - Xk
print("k=%d Frobenius 误差 %.4f = sqrt(sum s_i^2, i>k) %.4f | 谱范数误差 %.4f = s_{k+1} %.4f"
% (k, np.linalg.norm(D), np.sqrt((s[k:] ** 2).sum()), np.linalg.norm(D, 2), s[k]))
# 任意别的秩 3 逼近都不会更好:例如用"真实因子"做回归得到的秩 3 矩阵
coef, *_ = np.linalg.lstsq(F - F.mean(0), X, rcond=None)
X_true = (F - F.mean(0)) @ coef
for name, ordn in [("Frobenius", 'fro'), ("谱范数", 2), ("核范数", 'nuc')]:
print("%-9s: 截断 SVD %.4f vs 真实因子回归 %.4f"
% (name, np.linalg.norm(X - (U[:, :3] * s[:3]) @ Vt[:3], ordn), np.linalg.norm(X - X_true, ordn)))
# ---------- 3. 奇异值是 1-Lipschitz 的(Weyl / Hoffman–Wielandt 型界,原书 7.3.5) ----------
X2 = X + rng.standard_normal((T, N)) * 0.002 # 数据扰动(如复权误差、异常值修正)
s2 = np.linalg.svd(X2, compute_uv=False)
print("max|s_i - s_i'| = %.4f ≤ ||ΔX||_2 = %.4f" % (np.abs(s - s2).max(), np.linalg.norm(X2 - X, 2)))
print("sqrt(sum (s_i - s_i')^2) = %.4f ≤ ||ΔX||_F = %.4f"
% (np.sqrt(((s - s2) ** 2).sum()), np.linalg.norm(X2 - X)))
关键输出:
前 6 个奇异值: [2.1065 1.26 0.9169 0.2909 0.2861 0.2811]
k=1 Frobenius 误差 2.2883 = sqrt(sum s_i^2, i>k) 2.2883 | 谱范数误差 1.2600 = s_{k+1} 1.2600
k=3 Frobenius 误差 1.6756 = sqrt(sum s_i^2, i>k) 1.6756 | 谱范数误差 0.2909 = s_{k+1} 0.2909
k=5 Frobenius 误差 1.6252 = sqrt(sum s_i^2, i>k) 1.6252 | 谱范数误差 0.2811 = s_{k+1} 0.2811
Frobenius: 截断 SVD 1.6756 vs 真实因子回归 1.7180
谱范数 : 截断 SVD 0.2909 vs 真实因子回归 0.2935
核范数 : 截断 SVD 12.4704 vs 真实因子回归 13.1050
max|s_i - s_i'| = 0.0077 ≤ ||ΔX||_2 = 0.0593
sqrt(sum (s_i - s_i')^2) = 0.0341 ≤ ||ΔX||_F = 0.3464
读法:
- 奇异值在第 3 个之后明显断层(0.92 → 0.29),后面是一片近似相等的噪声奇异值——这是判断因子个数的"碎石图"。误差公式 \(\|X-X_k\|_F=(\sum_{i>k}\sigma_i^2)^{1/2}\) 与 \(\|X-X_k\|_2=\sigma_{k+1}\) 精确成立。
- 即使知道真实因子收益、用回归得到的秩 3 拟合,在三种范数下误差都比截断 SVD 大。这不矛盾:截断 SVD 最小化的是样本内重构误差,它会把一部分噪声也当成因子吸收进去。样本内最优 ≠ 样本外最优,这正是统计因子"过拟合"的来源。
- 扰动 \(\Delta X\) 的谱范数 0.059,所有奇异值的变化都不超过它(实际只有 0.008)。奇异值、因而"前 \(k\) 个因子解释的方差比例"是稳定的统计量。
实战 2:跨期因子载荷对齐(Procrustes)与因子对称正交化
场景一:每月滚动做一次 PCA。前几个特征值接近时,特征向量在它们张成的子空间内可以任意旋转,每月得到的"第 1 因子"可能完全不是同一个东西;直接比较载荷或把因子收益拼接成长序列都是错误的。场景二:价值、动量、规模等风格因子彼此相关,回归归因时希望先正交化,但 Gram–Schmidt 依赖顺序(排在前面的因子"吃掉"共同部分)。对称正交化给出与顺序无关、且离原因子最近的正交因子。
import numpy as np
from scipy.linalg import polar, orthogonal_procrustes
rng = np.random.default_rng(11)
# ---------- 1. 两个窗口的 PCA 载荷:符号与旋转都不确定 ----------
N, K, T = 40, 3, 250
B = np.linalg.qr(rng.standard_normal((N, K)))[0] * np.sqrt(N) # 真实载荷(列正交、等长)
fvol = np.array([0.010, 0.0099, 0.0098]) # 三个因子波动几乎相同 → 特征向量不稳定
def pca_loadings(seed):
g = np.random.default_rng(seed)
R = g.standard_normal((T, K)) * fvol @ B.T + g.standard_normal((T, N)) * 0.004
w, V = np.linalg.eigh(np.cov(R.T))
return V[:, ::-1][:, :K] # 前 K 个特征向量(N×K,列正交)
V1, V2 = pca_loadings(1), pca_loadings(2)
print("两窗口载荷逐列相关(理想为 ±1):",
np.round([np.corrcoef(V1[:, j], V2[:, j])[0, 1] for j in range(K)], 3))
# 酉 Procrustes:min_Q ||V1 - V2 Q||_F,Q 正交。解:V2^T V1 = U Σ W^T,Q = U W^T
Q, _ = orthogonal_procrustes(V2, V1)
U_, S_, Wt = np.linalg.svd(V2.T @ V1)
print("scipy 解与 SVD 公式一致:", np.allclose(Q, U_ @ Wt))
sign = np.diag(np.sign(np.sum(V1 * V2, 0))) # 只做符号对齐
print("对齐前 %.4f | 只调符号 %.4f | Procrustes 旋转 %.4f"
% (np.linalg.norm(V1 - V2), np.linalg.norm(V1 - V2 @ sign), np.linalg.norm(V1 - V2 @ Q)))
print("下界 ||V1||^2 - 2 tr P + ||V2||^2 的平方根: %.4f" % np.sqrt(2 * K - 2 * S_.sum()))
# ---------- 2. 对称正交化:离原因子最近的一组正交因子 = 极分解的酉因子 ----------
T2 = 1000
G = rng.standard_normal((T2, 3))
Fac = G @ np.array([[1, 0.6, 0.3], [0, 0.8, 0.4], [0, 0, 0.87]]) # 三个相关的风格因子
Fac = (Fac - Fac.mean(0)) / Fac.std(0) / np.sqrt(T2) # 标准化,使 Fac^T Fac = 相关矩阵
print("\n原因子相关矩阵:\n", np.round(Fac.T @ Fac, 3))
Upol, P = polar(Fac) # Fac = Upol @ P,Upol 列正交,P = (Fac^T Fac)^{1/2}
Qgs, Rgs = np.linalg.qr(Fac) # Gram–Schmidt:依赖因子顺序
Qgs = Qgs * np.sign(np.diag(Rgs))
for name, O in [("对称正交化(极分解)", Upol), ("Gram–Schmidt(QR)", Qgs)]:
print("%-20s 正交? %s 与原因子的距离 %.4f 逐列与原因子相关:"
% (name, np.allclose(O.T @ O, np.eye(3)), np.linalg.norm(Fac - O)),
np.round(np.sum(O * Fac, 0), 3))
关键输出:
两窗口载荷逐列相关(理想为 ±1): [ 0.933 0.305 -0.262]
scipy 解与 SVD 公式一致: True
对齐前 2.0063 | 只调符号 1.7316 | Procrustes 旋转 0.0595
下界 ||V1||^2 - 2 tr P + ||V2||^2 的平方根: 0.0595
原因子相关矩阵:
[[1. 0.609 0.286]
[0.609 1. 0.48 ]
[0.286 0.48 1. ]]
对称正交化(极分解) 正交? True 与原因子的距离 0.5852 逐列与原因子相关: [0.943 0.92 0.965]
Gram–Schmidt(QR) 正交? True 与原因子的距离 0.8117 逐列与原因子相关: [1. 0.793 0.877]
读法:
- 两个窗口估计的是同一个因子结构,但逐列相关只有 0.93、0.31、−0.26:第 2、3 个特征向量在近似退化的子空间里转了一个大角度。只调符号无济于事;一次 Procrustes 旋转后距离从 2.0 降到 0.06,而且恰好等于 7.4.5 节给出的理论下界 \(\big(\|V_1\|_F^2-2\operatorname{tr}P+\|V_2\|_F^2\big)^{1/2}\)。结论:只有前 \(k\) 个特征向量张成的子空间是稳定的,单个特征向量不一定;跨期比较统计因子时应比较子空间(或先对齐)。
- 对称正交化(\(U=F(F^TF)^{-1/2}\),即极分解的酉因子)是所有正交因子组中离原因子最近的(7.4.P15),三个因子"平等地"各让出一部分;Gram–Schmidt 让第 1 个因子原封不动(相关 1.0),后面的因子被大幅改造(0.79)。在因子归因中,对称正交化避免了"谁排在前面谁占便宜"的任意性。
实战 3:条件数、Kantorovich 界与最速下降
场景:用最速下降(带精确线搜索)求解无约束均值–方差问题 \(\min_w\frac12w^T\Sigma w-\mu^Tw\)。对比条件数 100 与 4 两种协方差,验证收敛率界 \(((\kappa-1)/(\kappa+1))^2\) 及其紧性;再验证 Wielandt 的"正交方向被压扁"和勘误后的 (7.4.12.8)。
import numpy as np
rng = np.random.default_rng(5)
# ---------- 1. 最速下降解 min 0.5 w^T Σ w - μ^T w(均值–方差无约束问题) ----------
n = 50
Q = np.linalg.qr(rng.standard_normal((n, n)))[0]
def make(lmin, lmax):
lam = np.geomspace(lmin, lmax, n)
return lam, (Q * lam) @ Q.T
mu = rng.standard_normal(n)
def steepest_descent(Sigma, w, iters):
w_star = np.linalg.solve(Sigma, mu)
err = lambda v: (v - w_star) @ Sigma @ (v - w_star) # = 2[f(w) - f*]
out = [err(w)]
for _ in range(iters):
g = Sigma @ w - mu # 梯度
a = (g @ g) / (g @ Sigma @ g) # 精确线搜索步长
w = w - a * g
out.append(err(w))
return np.array(out), w_star
for lmin, lmax, iters in [(0.04, 4.0, 200), (1.0, 4.0, 20)]:
lam, Sigma = make(lmin, lmax)
kappa = lam[-1] / lam[0]; bound = ((kappa - 1) / (kappa + 1)) ** 2
e, w_star = steepest_descent(Sigma, np.zeros(n), iters)
print("κ = %5.0f Kantorovich 界 %.4f 实际最大误差比 %.4f %d 步后误差比 %.2e(界 %.2e)"
% (kappa, bound, (e[1:] / e[:-1]).max(), iters, e[-1] / e[0], bound ** iters))
# 最坏起点:梯度 ∝ u_1 + u_n(最小、最大特征向量等权),Kantorovich 取等
w0 = w_star + Q[:, 0] / lam[0] + Q[:, -1] / lam[-1]
e2, _ = steepest_descent(Sigma, w0, 4)
print(" 最坏起点的逐步误差比:", np.round(e2[1:] / e2[:-1], 4))
# ---------- 2. Wielandt:病态把正交方向压成近共线;(7.4.12.8) 的正确系数 ----------
m = 6
Ub = np.linalg.qr(rng.standard_normal((m, m)))[0]; Wb = np.linalg.qr(rng.standard_normal((m, m)))[0]
sv = np.geomspace(10, 1, m) # 奇异值 10 … 1,κ = 10
Bm = (Ub * sv) @ Wb.T
k = sv[0] / sv[-1]
w1, wn = Wb[:, 0], Wb[:, -1] # 最大、最小奇异值的右奇异向量
x, y = w1 + wn, w1 - wn # 一对正交向量
cosB = (Bm @ x) @ (Bm @ y) / np.linalg.norm(Bm @ x) / np.linalg.norm(Bm @ y)
print("\nκ(B) = %.0f: x⊥y 映射后夹角余弦 %.6f = Wielandt 界 (κ²-1)/(κ²+1) = %.6f (夹角 %.1f°)"
% (k, cosB, (k**2 - 1) / (k**2 + 1), np.degrees(np.arccos(cosB))))
Binv_star = np.linalg.inv(Bm).T
val = np.linalg.norm(Bm @ x) * np.linalg.norm(Binv_star @ x) / (x @ x)
print("||Bx||·||B^{-*}x||/||x||^2 = %.4f;正确上界 (κ²+1)/(2κ) = %.4f;原书印出的 2κ/(κ²+1) = %.4f"
% (val, (k**2 + 1) / (2 * k), 2 * k / (k**2 + 1)))
z = rng.standard_normal(m)
print("任取一个 x:比值 %.4f ≥ 1(Cauchy–Schwarz 下界)"
% (np.linalg.norm(Bm @ z) * np.linalg.norm(Binv_star @ z) / (z @ z)))
关键输出:
κ = 100 Kantorovich 界 0.9608 实际最大误差比 0.9554 200 步后误差比 2.88e-05(界 3.35e-04)
最坏起点的逐步误差比: [0.9608 0.9608 0.9608 0.9608]
κ = 4 Kantorovich 界 0.3600 实际最大误差比 0.3419 20 步后误差比 4.56e-11(界 1.34e-09)
最坏起点的逐步误差比: [0.36 0.36 0.36 0.36]
κ(B) = 10: x⊥y 映射后夹角余弦 0.980198 = Wielandt 界 (κ²-1)/(κ²+1) = 0.980198 (夹角 11.4°)
||Bx||·||B^{-*}x||/||x||^2 = 5.0500;正确上界 (κ²+1)/(2κ) = 5.0500;原书印出的 2κ/(κ²+1) = 0.1980
任取一个 x:比值 1.8878 ≥ 1(Cauchy–Schwarz 下界)
读法:
- 一般起点下实际收敛略快于界(界是最坏情况),但最坏起点下每一步都恰好等于 \(((\kappa-1)/(\kappa+1))^2\):\(\kappa=100\) 时 0.9608,\(\kappa=4\) 时 0.36。条件数从 100 降到 4,同样精度所需步数减少约两个数量级。对风险模型做收缩(第 07a 章实战 4)在数值上也有回报。
- 条件数 10 的矩阵把一对正交向量映到夹角只有 11.4° 的两个向量,与 Wielandt 界一致。
- 在取等向量上 \(\|Bx\|\|B^{-*}x\|/\|x\|^2=5.05=(\kappa^2+1)/(2\kappa)\),而原书印出的系数 0.198 小于 1,与 Cauchy–Schwarz 给出的下界 1 矛盾,确认那是排印错误。
本章小结
极分解 \(A=PU=UQ\) 把任意矩阵拆成半正定的"伸缩"和酉的"旋转",\(P=(AA^*)^{1/2}\)、\(Q=(A^*A)^{1/2}\) 唯一,奇异值就是它们的特征值;薄 SVD 可以由 \(A^*A\) 的任意特征分解构造,这就是 PCA 的计算流程。Jordan–Wielandt 矩阵 \(\begin{bmatrix}0&A\\A^*&0\end{bmatrix}\) 的特征值是 \(\pm\sigma_i\),借此 Weyl、交错、Courant–Fischer、Hoffman–Wielandt 等特征值结论全部移植到奇异值:奇异值关于扰动是 1-Lipschitz 的。\(A^*A=B^*B\iff B=VA\) 解释了因子模型的旋转不定性。von Neumann 迹不等式 \(\operatorname{Re}\operatorname{tr}(AB^*)\le\sum\sigma_i(A)\sigma_i(B)\) 是一系列最优逼近定理的源头:最近奇异矩阵的距离是 \(\sigma_n\);截断 SVD 在所有酉不变范数下同时是最佳秩 \(k\) 逼近;最小范数最小二乘解是 \(A^\dagger b\);Procrustes 旋转与最近酉矩阵由极分解给出。酉不变范数与对称规范函数一一对应,Ky Fan 占优定理把"所有酉不变范数下都更小"归结为有限个 Ky Fan 范数的比较。Kantorovich 与 Wielandt 不等式相互等价,前者给出最速下降收敛率 \(((\kappa-1)/(\kappa+1))^2\),后者说明条件数为 \(\kappa\) 的变换把正交向量的夹角压到至多 \(\theta_\kappa\)——病态协方差让优化器对估计误差极度敏感的几何原因。
| 概念/公式 | 表达式 | 用途 |
|---|---|---|
| 极分解 | \(A=PU=UQ\),\(P=(AA^*)^{1/2}\) | 对称正交化、最近酉矩阵 |
| 薄 SVD | \(A=V_1\Sigma_rW_1^*\),\(V_1=AW_1\Sigma_r^{-1}\) | PCA 载荷与得分 |
| Jordan–Wielandt | \(\sigma\big(\begin{bmatrix}0&A\\A^*&0\end{bmatrix}\big)=\{\pm\sigma_i\}\) | 奇异值扰动与交错 |
| 奇异值扰动 | \(\vert \sigma_i(A)-\sigma_i(B)\vert \le|A-B|_2\) | PCA 方差比例稳定 |
| 旋转不定性 | \(A^*A=B^*B\iff B=VA\) | 因子载荷只确定到旋转 |
| von Neumann 迹 | \(\operatorname{Re}\operatorname{tr}(AB^*)\le\sum\sigma_i(A)\sigma_i(B)\) | 各类逼近问题 |
| 最近奇异矩阵 | 距离 \(=\sigma_n(A)\) | 近似共线诊断 |
| Eckart–Young–Mirsky | 截断 SVD 对所有酉不变范数最优 | PCA、低秩因子模型 |
| 最小二乘 | \(x=\sum_{i\le k}\sigma_i^{-1}(v_i^*b)w_i=A^\dagger b\) | 回归、伪逆 |
| Procrustes | \(AB^*=V\Sigma W^*\),\(U_0=VW^*\) | 跨期因子对齐 |
| Ky Fan 占优 | 所有 \(|\cdot|_{[k]}\) 下 \(\le\) ⇔ 所有酉不变范数下 \(\le\) | 范数比较 |
| Mirsky | \(|\lambda^\downarrow(A)-\lambda^\downarrow(B)|\le|A-B|\) | 协方差特征值误差 |
| Kantorovich | \((x^*Ax)(x^*A^{-1}x)\le\frac{(\kappa+1)^2}{4\kappa}|x|^4\) | 最速下降收敛率 |
| Wielandt | \(\vert x^*Ay\vert ^2\le(\frac{\kappa-1}{\kappa+1})^2(x^*Ax)(y^*Ay)\),\(x\perp y\) | 病态的几何意义 |
| 最速下降 | \(E_{k+1}\le(\frac{\kappa-1}{\kappa+1})^2E_k\) | 预条件、求解器选择 |
| (7.4.12.8) 勘误 | \(|Bx||B^{-*}x|\le\frac{\kappa^2+1}{2\kappa}|x|^2\) | — |
练习
基础
- 求 \(A=\begin{bmatrix}0&-1\\0&0\end{bmatrix}\) 的极分解 \(A=PU\),并说明 \(U\) 为何不唯一(原书 7.3.P29)。 答案要点:\(AA^*=\operatorname{diag}(1,0)\),\(P=\operatorname{diag}(1,0)\);\(U\) 的第一行必须是 \((0,-1)\),第二行可以是 \((e^{i\theta},0)\) 中任意一个。\(A\) 奇异,所以 \(U\) 不唯一。
- 证明 \(\sigma_i(A^{-1})=1/\sigma_{n-i+1}(A)\),并由此说明 \(\kappa(A)=\sigma_1/\sigma_n=\|A\|_2\|A^{-1}\|_2\)。 提示:\(A=V\Sigma W^*\) ⇒ \(A^{-1}=W\Sigma^{-1}V^*\)。
- 给定数据矩阵 \(X\)(\(T\times N\)),说明为什么 PCA 前 \(k\) 个主成分"解释的方差比例" \(\sum_{i\le k}\sigma_i^2/\sum\sigma_i^2\) 恰好等于 \(1-\|X-X_k\|_F^2/\|X\|_F^2\)。
- 相关矩阵中有一对资产的相关系数为 0.95。用 7.4.P2 估计这个相关矩阵条件数的下界。 答案要点:\((\kappa-1)/(\kappa+1)\ge0.95\) ⇒ \(\kappa\ge39\)。
- 对 \(\kappa=9\),计算最速下降的收敛率界,以及把误差缩小到 \(10^{-6}\) 至多需要多少步。 答案要点:\((8/10)^2=0.64\);\(0.64^k\le10^{-6}\) ⇒ \(k\ge31\)。
- 证明:Hermitian 矩阵 \(A\) 到 Hermitian 矩阵集合的最近点就是它自己;一般 \(A\) 的最近 Hermitian 矩阵是 \(\frac12(A+A^*)\)(任意酉不变范数)。 提示:\(A-\frac12(A+A^*)=\frac12(A-H)+\frac12(H-A^*)\),用三角不等式和 \(\|H-A^*\|=\|A-H\|\)。
进阶
- (Procrustes 的推导)设 \(A,B\in M_{m,n}\)。证明 \(\max_U\operatorname{Re}\operatorname{tr}(AB^*U^*)=\sum\sigma_i(AB^*)\),并说明最大值在 \(AB^*\) 的极分解酉因子处取得。 提示:7.4.1.3(b)。
- 证明 Kantorovich 不等式的取等条件:\(x=(u+v)/\sqrt2\),\(u,v\) 为最小、最大特征值的单位特征向量。再验证此时 Wielandt 不等式对 \(y=(u-v)/\sqrt2\) 也取等。
- 推导最速下降一步的误差恒等式 \(E(w_{k+1})=\big(1-\frac{(g^Tg)^2}{(g^TAg)(g^TA^{-1}g)}\big)E(w_k)\)。 提示:\(w_{k+1}-w^*=(w_k-w^*)-\alpha g\),\(g=A(w_k-w^*)\),\(E(w_k)=g^TA^{-1}g\)。
- (7.4.12.8 的勘误)对 \(A=B^*B\) 用 Kantorovich 不等式,推出 \(\|Bx\|\|B^{-*}x\|\le\frac{\kappa^2+1}{2\kappa}\|x\|^2\),并用 Cauchy–Schwarz 说明系数不可能小于 1。
- 证明 Ky Fan 2-范数 \(\sigma_1+\sigma_2\) 满足三角不等式(不用 7.4.7.2)。 提示:先证 \(\|A\|_{[k]}=\max\{\operatorname{Re}\operatorname{tr}(X^*AY):X,Y\text{ 各有 }k\text{ 个正交规范列}\}\)(上界用 von Neumann 迹定理,\(X^*AY\) 的奇异值不超过 \(A\) 的;取 \(X,Y\) 为前 \(k\) 个左右奇异向量达到)。"和的最大值 ≤ 最大值之和"即给出三角不等式。
原书推荐习题
- 7.3.P7、P9、P15:Moore–Penrose 逆、最小二乘与岭回归极限;7.3.P16–P18:奇异值的 Weyl 不等式与迹不等式;7.3.P34:由 Cholesky 推 QR。
- 7.4.P1–P2:标量 Kantorovich 不等式、相关系数受条件数约束;7.4.P10:Bergström 不等式;7.4.P13、P15–P17:最近 Hermitian、最近酉矩阵、最近奇异矩阵的唯一性。
原书对照
| 本章小节 | 原书小节 | 书页 | PDF 页 |
|---|---|---|---|
| 7.4 极分解、薄 SVD、Jordan–Wielandt、\(A^*A=B^*B\) | 7.3 The polar and singular value decompositions(正文与习题 P1–P45) | 448–458 | 468–478 |
| 7.5.1 von Neumann 迹定理 | 7.4.1 | 458–461 | 478–481 |
| 7.5.2–7.5.4 最佳逼近、最小二乘、Procrustes | 7.4.2–7.4.6 | 461–463 | 481–483 |
| 7.6 酉不变范数、Ky Fan、Mirsky | 7.4.7–7.4.11 | 464–470 | 484–490 |
| 7.7 Kantorovich 与 Wielandt | 7.4.12(含 (7.4.12.8) 系数勘误)及习题 7.4.P1–P18 | 470–477 | 490–497 |
| 迹定理的方阵证明 | 8.7.6(见第 08b 章) | 550 | 570 |
下一章(第 07c 章)转向另一种乘法——逐元素的 Hadamard 积:两个半正定矩阵逐元素相乘仍然半正定(Schur 乘积定理),这决定了哪些对相关矩阵的"逐元素加工"是合法的。