第 07c 章 Schur 乘积定理与同时对角化
对应原书:Horn & Johnson《Matrix Analysis》第 2 版,第 7 章的 7.5 节 The Schur product theorem 与 7.6 节 Simultaneous diagonalizations, products, and convexity(书 p.477–493,PDF p.497–513)。
这一章回答两类实际问题。第一类:对相关矩阵做"逐元素加工"——乘一个衰减权重、取平方、取指数、把小相关系数置零、取绝对值——哪些操作保证结果仍是合法的相关矩阵?答案由 Schur 乘积定理给出:与一个半正定矩阵逐元素相乘总是安全的,其余操作则要小心。第二类:手里有两个协方差矩阵(正常期与危机期、总风险与跟踪误差、两个风险模型),能否找一组组合让两者同时变成对角阵?答案是同时对角化与广义特征值问题。同一个工具还证明了 \(\log\det\) 的凹性,它是高斯极大似然、图 Lasso 等协方差估计方法成为凸优化问题的原因。
学习目标
读完本章,你应当能够:
- 掌握 Hadamard 积的定义、迹恒等式,以及 Schur 乘积定理(半正定 ∘ 半正定 = 半正定)的证明和严格正定的条件。
- 理解 Moutard 定理(半正定锥自对偶)与 Hadamard 幂、Hadamard 指数、非负系数解析函数保持半正定的结论。
- 判断相关矩阵上各种逐元素操作是否保持半正定,知道 \(|A|\)、硬阈值等操作的反例。
- 掌握两种同时对角化:\(A=SS^*,\ B=S\Lambda S^*\)(*合同)与 \(A=SS^*,\ B=S^{-*}\Lambda S^{-1}\),会求解广义特征值问题 \(Bx=\lambda Ax\),并理解 \(AB\) 的特征值为实数且可对角化。
- 证明 \(\log\det\) 在正定锥上严格凹、\(\operatorname{tr}A^{-1}\) 严格凸,并说明它们在协方差估计和实验设计中的作用。
读前导读
这一章在解决什么问题。 两个问题:一是对相关矩阵"逐个元素动手脚"之后它还合不合法;二是手里有两个协方差矩阵时,怎样找一组组合把两者同时"拆开"。
第一个问题天天发生。你把相关矩阵乘上波动率得到协方差,就是一次逐元素操作;风控为了降噪,把不同行业之间的相关系数打个折、把小于 0.1 的相关系数直接置零;做聚类时用 \(|\rho|\) 当相似度……这些"逐元素加工"有的安全、有的会让矩阵出现负特征值(即"方差为负的组合",第 07a 章)。Schur 乘积定理给出一条简单规则:和一个半正定矩阵逐元素相乘总是安全的。所以"打折"时只要折扣矩阵本身是一个合法的相关矩阵,结果就一定合法;而"置零"相当于乘一个 0-1 矩阵,后者一般不合法,结果也就没有保证。
第二个问题来自压力测试和主动管理。你有正常期协方差 \(\Sigma_n\) 和危机期协方差 \(\Sigma_c\),想知道"哪个组合在危机中风险放大最多"。CFA 讲过单个资产的 beta 在危机中上升,但多资产时最危险的往往是某个价差组合(如多信用空国债)。答案是求 \(\max_w\frac{w^T\Sigma_cw}{w^T\Sigma_nw}\),这叫广义特征值问题,和"最大夏普比率组合 \(w\propto\Sigma^{-1}\mu\)"是同一类数学。
最后,同一工具证明了 \(\log\det\Sigma\) 是凹函数。你不需要记住证明,只需要知道它的后果:正态分布的极大似然估计、图 Lasso(稀疏精度矩阵估计)都因此是有唯一解的凸优化问题。
需要先想起来的数学。
- 半正定与组合方差。\(\Sigma\succeq0\) 指对所有 \(w\) 有 \(w^T\Sigma w\ge0\)(任何组合方差非负),等价于全部特征值 \(\ge0\)。见第 07a 章与 第 00 册第 06 章 线性代数速成。
- 迹。\(\operatorname{tr}A=\sum_ia_{ii}\),满足 \(\operatorname{tr}(AB)=\operatorname{tr}(BA)\)。一个常用的小技巧:一个数等于它自己的迹,所以 \(w^T\Sigma w=\operatorname{tr}(w^T\Sigma w)=\operatorname{tr}(\Sigma ww^T)\)。
- 行列式与特征值。\(\det A=\prod_i\lambda_i\),\(\log\det A=\sum_i\log\lambda_i\)。协方差的行列式叫"广义方差",是置信椭球体积的平方(相差常数)。例:\(\operatorname{diag}(0.04,0.09)\) 的行列式 \(0.0036\)。
- 凹函数与 Jensen 不等式。\(\log\) 是凹函数:\(\log(\alpha a+(1-\alpha)b)\ge\alpha\log a+(1-\alpha)\log b\),几何上是"弦在曲线下方"。这也是"算术平均 ≥ 几何平均"的来源。见 第 00 册第 05 章 多元微积分与优化。
- 幂级数。\(e^x=\sum x^k/k!\),系数全为非负;\(\sinh x\) 同样。见 第 00 册第 04 章 级数与收敛。
怎么读这一章。 核心必读:7.8.1–7.8.3(Hadamard 积与 Schur 乘积定理,尤其是"独立随机向量"那个直观证明和 Schur 特征值界)、7.8.6(哪些逐元素操作安全、哪些不安全)、7.9.2(广义特征值问题及其量化应用清单)、7.9.3 的结论与"量化与统计含义"。7.8.5 的 PDE 应用、7.9.1 中 Theorem 7.6.3 和 7.6.5、7.9.4 的椭球与 Loewner–John 部分第一次可以跳过。实战 1、2 建议细读,实战 3 需要 sklearn,可先看输出和读法。
7.8 Hadamard 积与 Schur 乘积定理
7.8.1 定义与两个自然来源
定义 7.5.1。 \(A=[a_{ij}],B=[b_{ij}]\in M_{m,n}\) 的 Hadamard 积(Hadamard product),又称 Schur 积(Schur product),是逐元素乘积
它满足分配律,并且可交换:\(A\circ B=B\circ A\)。numpy 里就是 A * B。
与普通矩阵乘法对比:两个 Hermitian 矩阵的普通乘积 \(AB\) 只在 \(A,B\) 交换时才 Hermitian;Hadamard 积总是 Hermitian。原书例:\(A=\begin{bmatrix}2&1\\1&1\end{bmatrix}\)、\(B=\begin{bmatrix}2&1\\1&3\end{bmatrix}\) 都正定,\(A\circ B=\begin{bmatrix}4&1\\1&3\end{bmatrix}\) 正定,而 \(AB=\begin{bmatrix}5&5\\3&4\end{bmatrix}\) 不对称(但它的特征值为正,见 7.9.1 节)。
Hadamard 积在两个地方自然出现:
卷积。 \(f,g\) 为 \(2\pi\) 周期函数,三角矩 \(a_k,b_k\)(第 07a 章 7.1 节)。卷积 \(h(\theta)=\int_0^{2\pi}f(\theta-t)g(t)\,dt\) 的三角矩是 \(c_k=a_kb_k\),所以 Toeplitz 矩阵满足 \([c_{i-j}]=[a_{i-j}]\circ[b_{i-j}]\)。\(f,g\ge0\) 时三者都半正定——Schur 乘积定理的一个实例。时间序列中,两个独立平稳过程之积的自协方差就是两个自协方差的乘积。
核函数。 连续核 \(K(x,y)\) 称为半正定核(positive semidefinite kernel),若 \(\iint K(x,y)f(x)\overline{f(y)}\,dx\,dy\ge0\) 对所有连续 \(f\) 成立。Mercer 定理:连续半正定核可展开为 \(K(x,y)=\sum_i\phi_i(x)\overline{\phi_i(y)}/\lambda_i\)(\(\lambda_i>0\))。由此两个半正定核的逐点乘积仍是半正定核——机器学习中"核的乘积仍是核"就是这个结论。7.5.P7 说明:连续核半正定 ⇔ 所有取样矩阵 \([K(x_i,x_j)]\) 半正定。
7.8.2 一个迹恒等式
另一个常用恒等式:\((xy^*)\circ A=(\operatorname{diag}x)A(\operatorname{diag}\bar y)\)。特别地,用波动率把相关矩阵变成协方差矩阵 \(\Sigma=DRD\)(\(D=\operatorname{diag}(\sigma)\))就是 \((\sigma\sigma^T)\circ R\):它是秩一半正定矩阵与相关矩阵的 Hadamard 积。
推导拆解:
- \(\operatorname{tr}(AB^T)=\sum_i(AB^T)_{ii}=\sum_i\sum_ja_{ij}(B^T)_{ji}=\sum_{i,j}a_{ij}b_{ij}\):把矩阵乘法的定义代进迹即可。
- \(x^*(A\circ B)y=\sum_{i,j}\bar x_ia_{ij}b_{ij}y_j\)。把 \(\bar x_i\) 并入 \(A\) 的第 \(i\) 行、\(y_j\) 并入 \(A\) 的第 \(j\) 列,得到矩阵 \((\operatorname{diag}\bar x)A(\operatorname{diag}y)\),它的 \((i,j)\) 元是 \(\bar x_ia_{ij}y_j\);再用第 1 步,和就是 \(\operatorname{tr}\big((\operatorname{diag}\bar x)A(\operatorname{diag}y)B^T\big)\)。
- \((\sigma\sigma^T)\circ R\) 的 \((i,j)\) 元是 \(\sigma_i\sigma_j\rho_{ij}=\sigma_{ij}\)。 小例子:\(\sigma=(0.2,0.3)\),\(R=\begin{bmatrix}1&0.5\\0.5&1\end{bmatrix}\),\(\sigma\sigma^T=\begin{bmatrix}0.04&0.06\\0.06&0.09\end{bmatrix}\),逐元素乘得 \(\Sigma=\begin{bmatrix}0.04&0.03\\0.03&0.09\end{bmatrix}\)。
7.8.3 Schur 乘积定理
Theorem 7.5.3(Schur 乘积定理,Schur product theorem)。 \(A,B\in M_n\) 半正定。
- (a) \(A\circ B\) 半正定;
- (b) 若 \(A\) 正定且 \(B\) 的对角元全为正,则 \(A\circ B\) 正定;
- (c) 若 \(A,B\) 都正定,则 \(A\circ B\) 正定。
证明 (a):由 Lemma 7.5.2,令 \(C=(\operatorname{diag}x)\bar B^{1/2}\),
推导拆解(实数情形,所有共轭都可去掉):
- 第一个等号:Lemma 7.5.2 取 \(y=x\),并用 \(B\) 对称 \(B^T=B\)。
- 第二个等号:把 \(B=B^{1/2}B^{1/2}\) 拆开,用迹的循环性 \(\operatorname{tr}(XY)=\operatorname{tr}(YX)\) 把一个 \(B^{1/2}\) 从末尾挪到开头。
- 第三个等号:令 \(C=(\operatorname{diag}x)B^{1/2}\),则 \(C^T=B^{1/2}(\operatorname{diag}x)\),正好拼出 \(C^TAC\)。
- \(\ge0\):\(C^TAC\) 是半正定矩阵 \(A\) 的合同变换,仍半正定(第 07a 章 7.1.8),迹是特征值之和,非负。 一句话概括:把 \(A\circ B\) 的二次型改写成"某个半正定矩阵的迹"。
另一个证明(7.5.P1),更直观:把 \(A=\sum_ix_ix_i^*\)、\(B=\sum_jy_jy_j^*\) 写成秩一矩阵之和,则
每一项都是秩一半正定矩阵。用随机变量的语言:若 \(X,Y\) 是独立的零均值随机向量,协方差分别为 \(A,B\),则逐分量乘积 \(X\circ Y\) 的协方差恰好是 \(A\circ B\)——协方差当然半正定。
推导拆解:\(X\circ Y\) 的第 \(i\) 个分量是 \(X_iY_i\),均值 \(E[X_i]E[Y_i]=0\)(独立)。协方差
\[E[X_iY_i\,X_jY_j]=E[X_iX_j]\,E[Y_iY_j]=a_{ij}b_{ij},\]第一个等号把 \(X\) 的部分和 \(Y\) 的部分分开,用的是 \(X,Y\) 独立。 金融直觉:这给出一种构造合法相关结构的方法——"可分"相关。设一个资产收益 = 市场状态冲击 × 期限(或地区)冲击,两组冲击独立,相关矩阵分别为 \(R_1\)(资产之间)和 \(R_2\)(期限之间),则乘积的相关矩阵就是 \(R_1\circ R_2\),自动合法。练习 2 正是此意。 另一个读法:"打折矩阵"。若 \(W\) 是一个对角为 1 的半正定矩阵(例如 \(W_{ij}=0.9^{|i-j|}\)),\(R\circ W\) 就是把每对资产的相关系数乘以一个 \([0,1]\) 内的折扣,距离越远折扣越大。Schur 定理保证打完折仍是合法的相关矩阵。
证明 (b):设 \(\lambda_1>0\) 为 \(A\) 的最小特征值,\(\beta>0\) 为 \(B\) 的最小对角元。\(A-\lambda_1I\) 半正定,由 (a) \((A-\lambda_1I)\circ B\) 半正定,于是
这个证明同时给出了 Schur (1911) 的特征值界(7.5.P24):
对相关矩阵 \(B\)(对角为 1):与相关矩阵做 Hadamard 积,最小特征值不会变小,最大特征值不会变大——逐元素乘一个相关矩阵是一种"改善条件数"的操作。协方差矩阵的"锥形化(tapering)"和"局部化(localization)"正是利用这一点(实战 1)。
推导拆解:(b) 的证明里那个 \(\ge\) 号怎么来的。
- \(A=(A-\lambda_1I)+\lambda_1I\),Hadamard 积对加法分配:\(A\circ B=(A-\lambda_1I)\circ B+\lambda_1(I\circ B)\)。
- 第一项半正定(由 (a)),它的二次型 \(\ge0\),丢掉。
- \(I\circ B=\operatorname{diag}(b_{11},\dots,b_{nn})\)——单位阵只保留 \(B\) 的对角元。它的二次型是 \(\sum b_{ii}|x_i|^2\ge\beta\|x\|^2\)。 上界同理:\(\lambda_{\max}(A)I-A\succeq0\),与 \(B\) 做 Hadamard 积(练习 7)。 金融直觉:两只股票相关系数 0.98 时,相关矩阵最小特征值只有 0.02(条件数约 99)。乘上折扣矩阵 \(\begin{bmatrix}1&0.8\\0.8&1\end{bmatrix}\) 后相关系数变成 0.784,最小特征值变成 0.216,条件数降到约 8.3。Schur 下界只保证 \(\lambda_{\min}\ge0.02\times1\),实际改善大得多。代价是相关性被系统性低估了——这是"偏差换方差"的取舍,与第 05b 章收缩估计同一思路。
7.8.4 Moutard 定理:半正定锥是自对偶的
Theorem 7.5.4(Moutard, 1894)。 Hermitian 矩阵 \(A\) 半正定 ⇔ 对所有半正定矩阵 \(B\),\(\operatorname{tr}(AB^T)=\sum_{i,j}a_{ij}b_{ij}\ge0\)。
"⇒":\(\operatorname{tr}(AB^T)=e^*(A\circ B)e\ge0\)(\(e\) 为全 1 向量)。"⇐":取 \(B=\bar xx^T\),\(\operatorname{tr}(AB^T)=x^*Ax\)。
换言之,在 Frobenius 内积 \(\langle A,B\rangle=\operatorname{tr}(AB^*)\) 下,半正定锥的对偶锥就是它自己(self-dual cone)。这是半定规划(SDP)对偶理论的基础:协方差矩阵约束 \(\Sigma\succeq0\) 的 Lagrange 乘子也是一个半正定矩阵。Fejér (1918) 指出 Moutard 定理蕴含 Schur 乘积定理。
7.5.P16 给出另一个刻画:\(A\) 半正定 ⇔ 对所有半正定 \(B\),\(A\circ B\) 半正定。
白话解释:"⇐"那步取 \(B=xx^T\)(实情形),而 \(\operatorname{tr}(Axx^T)=x^TAx\) 就是组合 \(x\) 的方差。把 \(B\) 看成"仓位矩阵":单一组合的仓位矩阵是 \(ww^T\),几个组合按概率 \(p_k\) 混合的仓位矩阵是 \(\sum p_kw_kw_k^T\),它们都是半正定的,而且所有半正定矩阵都能这样写出来。所以 Moutard 定理的意思是:\(\Sigma\) 是合法的协方差 ⇔ 它对任何(混合)仓位给出的风险 \(\operatorname{tr}(\Sigma B)\) 都非负。 "自对偶"的白话:用来"检验"半正定矩阵的那一族矩阵,恰好就是半正定矩阵本身。在带协方差约束的优化(半定规划)里,这意味着约束 \(\Sigma\succeq0\) 的影子价格(Lagrange 乘子)也是一个半正定矩阵,正如约束 \(x\ge0\) 的乘子是非负数。
7.8.5 一个 PDE 应用(了解)
原书 7.5.5–7.5.8 用 Moutard 定理证明椭圆型偏微分算子的弱极小值原理与边值问题解的唯一性:若 \(Lu=\sum a_{ij}u_{x_ix_j}+\sum b_iu_{x_i}+cu\) 的系数矩阵处处正定、\(c<0\),在局部极小点处梯度为零、Hessian 半正定,由 Moutard \(\sum a_{ij}u_{x_ix_j}\ge0\),从而 \(Lu=0\) 时 \(u\ge0\)。期权定价中 Black–Scholes 型方程的比较原理(价格的单调性、无套利界)与此同源,但原书只处理线性代数部分,PDE 本身见第 08 册。
7.8.6 Hadamard 幂与 Hadamard 函数
反复用 Schur 定理:\(A\) 半正定 ⇒ Hadamard 幂 \(A^{(k)}=[a_{ij}^k]\) 半正定。于是对非负系数多项式 \(p(t)=\sum a_kt^k\),
半正定(\(J_n\) 是全 1 矩阵,半正定)。取极限得:
Theorem 7.5.9。 \(A\) 半正定。
- (a) \(A^{(k)}\) 半正定;\(A\) 正定时正定。
- (b) 若 \(f(z)=\sum_ka_kz^k\) 系数非负、收敛半径 \(R\),\(|a_{ij}|<R\),则 \([f(a_{ij})]\) 半正定。
- (c) Hadamard 指数 \([e^{a_{ij}}]\) 半正定;它正定 ⇔ \(A\) 没有两行相同。
量化含义:给一个相关矩阵逐元素做 \(\rho\mapsto\rho^2\)、\(\rho\mapsto e^{\rho}\)、\(\rho\mapsto\sinh\rho\)、\(\rho\mapsto\frac{1}{1-\rho}\)(\(|\rho|<1\))都保持半正定(再重新归一化对角线即得相关矩阵)。高斯核 \(e^{-\|x_i-x_j\|^2/2h^2}=e^{-\|x_i\|^2/2h^2}e^{x_i^Tx_j/h^2}e^{-\|x_j\|^2/2h^2}\) 是"对角缩放 × Hadamard 指数",所以半正定——这就是核回归、高斯过程、基于收益特征的相似度矩阵的合法性来源。
推导拆解:为什么 Hadamard 指数半正定。\([e^{a_{ij}}]=\sum_{k\ge0}\frac1{k!}A^{(k)}\),其中 \(A^{(0)}=J_n\)(全 1 矩阵,等于 \(ee^T\),半正定),\(A^{(k)}\) 由 Schur 定理半正定。系数 \(1/k!\) 全为正,半正定矩阵的非负组合仍半正定(第 07a 章凸锥),取极限保持半正定。关键在于"系数非负":若某个 \(k\) 的系数为负,减去一个半正定矩阵就可能出现负特征值。 一点提醒:Theorem 7.5.9(b) 要求所有元素(包括对角元)都在收敛半径内,即 \(|a_{ij}|<R\)。\(e^\rho\)、\(\sinh\rho\)、\(\rho^2\) 的 \(R=\infty\),没有问题;但 \(\frac1{1-\rho}\) 的 \(R=1\),而相关矩阵对角元恰好等于 1,落在收敛圆的边界上(此处 \(\frac1{1-\rho}\) 无定义),定理不能直接套用。稳妥的做法是先把相关矩阵乘以 \(t<1\) 再变换,即使用 \([\frac1{1-t\rho_{ij}}]\),它由定理保证半正定,然后再归一化对角线。 高斯核分解中的"对角缩放":\(e^{-\|x_i\|^2/2h^2}\) 只依赖 \(i\),相当于左乘、右乘对角阵 \(D\),\(DMD\) 是合同变换,保持半正定。
反过来,系数有负号的函数不一定保持半正定,典型反例:
- 逐元素绝对值(7.5.P4–P6):\(n\le3\) 时 \(A\succeq0\Rightarrow|A|\succeq0\),但 \(n=4\) 就不成立。原书反例:
正定,但 \(|A|\) 不半正定。另一个例子是余弦矩阵 \([\cos(t_i-t_j)]\),\(t=(0,\pi/4,\pi/2,3\pi/4)\):\(|C|\) 不半正定,而 \(|C|\circ|C|=C\circ C\) 半正定。所以半正定矩阵的非负"Hadamard 平方根"可以不半正定。用"相关系数的绝对值"构造相似度矩阵(例如资产聚类中常见的 \(1-|\rho|\) 距离对应的 \(|\rho|\) 矩阵)不能默认它半正定。
- 硬阈值:把 \(|\rho_{ij}|<c\) 的元素置零,等于和一个 0-1 矩阵做 Hadamard 积,而 0-1 矩阵一般不半正定,结果也不一定半正定(实战 1)。
- Hadamard 逆(7.5.P12):\([a_{ij}^{-1}]\) 半正定 ⇔ \(\operatorname{rank}A=1\)。
7.8.7 7.5 节习题中的其他结论
- 7.5.P3:\([|a_{ij}|^2]=A\circ\bar A\) 半正定。
- 7.5.P13:\(A\) 正定时 \(\operatorname{rank}(A\circ B)\ge\) \(B\) 的非零对角元个数。
- 7.5.P14 相对增益阵(relative gain array) \(A\circ A^{-T}\):\(A\) 正定时它正定且 \(\lambda_{\min}\ge1\),即 \(A\circ A^{-1}\succeq I\)(实对称情形)。证明:\(x^*(A\circ A^{-1})x=\|A^{1/2}(\operatorname{diag}x)A^{-1/2}\|_F^2\ge\|x\|^2\),因为后者的特征值是 \(x_i\)。这是化工过程控制中的概念;统计上它说明协方差矩阵与精度矩阵逐元素乘积的对角元 \(\sigma_{ii}(\Sigma^{-1})_{ii}\ge1\)(第 07a 章的 VIF)。
- 7.5.P11、P15、P22:\([a_{ij}/(i+j)]\) 半正定;Hilbert 矩阵 \([1/(i+j-1)]\) 正定。
- 7.5.P17:gcd 矩阵 \([\gcd(n_i,n_j)]\) 半正定(按质因数分解写成 min 型矩阵的 Hadamard 积)。
- 7.5.P23:\(z_i\) 互异时 \([e^{z_i\bar z_j}]\)、\([\cosh(z_i\bar z_j)]\) 正定。
- 7.5.P25 条件半正定(conditionally positive semidefinite):\(B=A+ze^*+ez^*+cJ_n\)(\(A\succeq0\))未必半正定,但在 \(e^*x=0\) 的子空间上 \(x^*Bx\ge0\),且 \([e^{b_{ij}}]\) 半正定。负平方距离矩阵 \([-\|x_i-x_j\|^2]\) 就是条件半正定的,这正是"多维标度(MDS)"与"变差函数(variogram)"理论的出发点。
7.9 同时对角化、乘积与凸性
承接说明:第 04b 章 4b.3 节已从*合同与惯性的角度讲过"一个正定时两个 Hermitian 矩阵可同时合同对角化"及广义特征值问题 \(Bx=\lambda Ax\)。本节沿用原书 7.6 节的写法,重点是第二种同时对角化(处理乘积 \(AB\))以及由此推出的 \(\log\det\) 凹性。
7.9.1 两种保持 Hermitian 性的同时对角化
对两个 Hermitian 矩阵,普通的相似同时对角化要求它们交换,太苛刻。若其中一个正定,有两种更宽松的做法:
Theorem 7.6.1(适合处理乘积)。 \(A\) 正定,\(B\) Hermitian ⇒ 存在非奇异 \(S\) 使
\(\Lambda\) 实对角,惯性与 \(B\) 相同。若 \(A,B\) 都只是半正定、\(\operatorname{rank}A=r\),可做到 \(A=S(I_r\oplus0)S^*\)、\(B=S^{-*}\Lambda S^{-1}\),\(\Lambda\) 非负对角。
构造:\(T=A^{1/2}\),对 \(A^{1/2}BA^{1/2}=U\Lambda U^*\) 酉对角化,\(S=A^{1/2}U\)。半正定情形要用列包含性质先消去一个分块(第 07a 章)。
Corollary 7.6.2(乘积的特征值)。
- (a) \(A\) 正定、\(B\) Hermitian ⇒ \(AB=S\Lambda S^{-1}\) 可对角化,特征值为实数;\(B\) 正定(半正定)时特征值为正(非负)。
- (b) \(A,B\) 都半正定 ⇒ \(AB\) 可对角化,特征值非负。
但半正定与 Hermitian 的乘积可以不可对角化:\(A=\begin{bmatrix}1&0\\0&0\end{bmatrix}\)、\(B=\begin{bmatrix}0&1\\1&0\end{bmatrix}\),\(AB=\begin{bmatrix}0&1\\0&0\end{bmatrix}\) 是 Jordan 块。Theorem 7.6.3 说这是唯一可能的"坏情况":\(A\) 半正定奇异、\(B\) Hermitian 时,\(AB\) 相似于 \(\Lambda\oplus J_2(0)\oplus\cdots\oplus J_2(0)\),非平凡 Jordan 块只能是 \(2\times2\) 幂零块。
Theorem 7.6.4(*合同同时对角化,适合处理线性组合)。 \(A\) 正定,\(B\) Hermitian ⇒ 存在非奇异 \(S\) 使
\(\Lambda\) 实对角,惯性同 \(B\);\(\Lambda\) 的对角元是可对角化矩阵 \(A^{-1}B\) 的特征值。\(A,B\) 都半正定时可做到 \(A=S(I_r\oplus0)S^*\)、\(B=S\Lambda S^*\),\(\Lambda\ge0\)。
构造(两种):取 \(S=A^{1/2}U\),\(A^{-1/2}BA^{-1/2}=U\Lambda U^*\);或用 Cholesky 因子 \(A=LL^*\),对 \(L^{-1}BL^{-*}\) 做酉对角化。数值上通常用后者。
推导拆解(Cholesky 路线,实数情形):
- "白化" \(A\):令 \(z=L^Tw\)。则 \(w^TAw=z^Tz\),\(w^TBw=z^T(L^{-1}BL^{-T})z\)。在 \(z\) 坐标里,\(A\) 变成单位阵。
- \(C=L^{-1}BL^{-T}\) 是对称矩阵,正交对角化 \(C=U\Lambda U^T\)。在 \(z\) 坐标里换到 \(U\) 的列方向,单位阵仍是单位阵(正交变换不改变 \(I\)),而 \(C\) 变成对角阵。
- 合起来:\(S=LU\),\(SS^T=LUU^TL^T=A\),\(S\Lambda S^T=LCL^T=B\)。 白话:第一步把 \(A\) 的风险"标准化成圆",第二步在这个圆上找 \(B\) 的主轴。圆在任何旋转下都还是圆,所以第二步不会破坏第一步。 2×2 例子:\(A=\operatorname{diag}(1,4)\),\(B=\begin{bmatrix}2&2\\2&8\end{bmatrix}\)。\(L=\operatorname{diag}(1,2)\),\(C=L^{-1}BL^{-1}=\begin{bmatrix}2&1\\1&2\end{bmatrix}\),特征值 3、1。所以广义特征值是 3 和 1:在 \(A\) 度量下标准化之后,\(B\) 的"方差比"介于 1 与 3 之间。
7.9.2 广义特征值问题
7.6.4 等价于广义特征值问题(generalized eigenvalue problem)
令 \(X=S^{-*}\),\(X^*AX=I\)、\(X^*BX=\Lambda\),\(X\) 的列 \(x_k\) 是广义特征向量。它们关于两个二次型同时正交:\(x_j^*Ax_k=\delta_{jk}\),\(x_j^*Bx_k=\lambda_k\delta_{jk}\)。广义 Rayleigh 商 \(\frac{x^*Bx}{x^*Ax}\) 的最大值、最小值就是最大、最小广义特征值。
量化中这类问题很多:
- 两种风险状态:\(\max_w\frac{w^T\Sigma_{\text{危机}}w}{w^T\Sigma_{\text{正常}}w}\),找出危机中风险放大最多/最少的组合(实战 2)。
- 跟踪误差与总风险:\(\max_w\frac{w^T\Sigma w}{(w-w_b)^T\Sigma(w-w_b)}\) 型的比值、"主动风险预算"。
- Fisher 判别 / 典型相关分析:最大化组间方差与组内方差之比;CCA 是 \(\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21}x=\lambda\Sigma_{11}x\)(第 07d 章从 Schur 补角度再看)。
- 最大分散化组合:分散化比率 \(\frac{w^T\sigma}{\sqrt{w^T\Sigma w}}\) 的平方 \(\frac{w^T\sigma\sigma^Tw}{w^T\Sigma w}\) 是秩一 \(B\) 的广义 Rayleigh 商,最大值在 \(w\propto\Sigma^{-1}\sigma\)。
- 最大夏普比率:\(\frac{(w^T\mu)^2}{w^T\Sigma w}\),同理最大值 \(\mu^T\Sigma^{-1}\mu\) 在 \(w\propto\Sigma^{-1}\mu\) 取得。
注意 \(A^{-1}B\) 本身不对称,直接对它调用一般特征值算法会丢掉"特征值为实、特征向量 \(A\)-正交"的结构;应调用对称广义特征值求解器(scipy.linalg.eigh(B, A))。
推导拆解:最大夏普比率为什么是 \(\mu^T\Sigma^{-1}\mu\)。
- 目标 \(\frac{(w^T\mu)^2}{w^T\Sigma w}=\frac{w^T(\mu\mu^T)w}{w^T\Sigma w}\),是 \(B=\mu\mu^T\)、\(A=\Sigma\) 的广义 Rayleigh 商。
- \(\Sigma^{-1}\mu\mu^T\) 是秩一矩阵,唯一的非零特征值等于它的迹 \(\operatorname{tr}(\Sigma^{-1}\mu\mu^T)=\mu^T\Sigma^{-1}\mu\),对应特征向量 \(w=\Sigma^{-1}\mu\)(验证:\(\Sigma^{-1}\mu\mu^T\Sigma^{-1}\mu=(\mu^T\Sigma^{-1}\mu)\,\Sigma^{-1}\mu\))。
- 所以最大夏普比率的平方是 \(\mu^T\Sigma^{-1}\mu\),在切点组合 \(w\propto\Sigma^{-1}\mu\) 取得。这就是 CFA 里"切点组合"的矩阵推导,只是把"超额收益"记作 \(\mu\)。 金融直觉:广义 Rayleigh 商 \(\frac{w^TBw}{w^TAw}\) 读作"用 \(A\) 衡量的单位风险,能换来多少 \(B\)"。\(A\) 是总风险、\(B\) 是危机风险时,它是"危机放大倍数";\(A\) 是风险、\(B=\mu\mu^T\) 时,它是夏普比率的平方。广义特征向量把空间拆成一组在 \(A\) 下互不相关的组合,每个组合有自己的比值,任何组合的比值都是这些比值的加权平均——所以最大、最小比值一定在某个广义特征向量上取到。
Theorem 7.6.5(了解):\(A\) 正定、\(B\) 复对称时,\(A=SS^*\)、\(B=S\Lambda S^T\),\(\Lambda\) 非负对角——用 Takagi 分解,应用于单叶解析函数的 Grunsky 不等式。
7.9.3 \(\log\det\) 严格凹与 \(\operatorname{tr}A^{-1}\) 严格凸
同时对角化最重要的推论是两个凸性结论。
Theorem 7.6.6。 \(f(A)=\log\det A\) 在正定矩阵的凸集上严格凹:对 \(\alpha\in(0,1)\),
等号当且仅当 \(A=B\)。
证明:由 7.6.4 写 \(A=SS^*\)、\(B=S\Lambda S^*\),两边都减去 \(\log\det A=\log|\det S|^2\),问题化为对角阵:
这由 \(\log\) 的严格凹性逐项得到(\(\log(\alpha\cdot1+(1-\alpha)\lambda_i)\ge\alpha\log1+(1-\alpha)\log\lambda_i\)),等号 ⇔ 所有 \(\lambda_i=1\) ⇔ \(B=A\)。
推导拆解:
- \(\alpha A+(1-\alpha)B=S\big(\alpha I+(1-\alpha)\Lambda\big)S^*\)。
- 行列式可乘:\(\det(\alpha A+(1-\alpha)B)=|\det S|^2\prod_i(\alpha+(1-\alpha)\lambda_i)\),取对数,乘积变求和。
- 右边:\(\log\det A=\log|\det S|^2\),\(\log\det B=\log|\det S|^2+\sum\log\lambda_i\),所以 \(\alpha\log\det A+(1-\alpha)\log\det B=\log|\det S|^2+(1-\alpha)\sum\log\lambda_i\)。
- 两边都有 \(\log|\det S|^2\),消去后就是正文的标量不等式。 思路:同时对角化把"两个矩阵"变成"\(n\) 对数",矩阵不等式就退化成 \(n\) 个标量不等式之和。 白话解释:\(\log\det\Sigma=\sum\log\lambda_i\) 是"各主成分方差的对数之和",可以看作风险结构的"总体积"(对数尺度)。凹性说:两个协方差矩阵按比例混合后,它的对数体积不小于两者对数体积的加权平均——和"把两个均值相同的分布按比例混合,不确定性不会变少"的直觉一致(均值相同时,混合分布的协方差恰好是 \(\alpha A+(1-\alpha)B\))。
Corollary 7.6.8。 \(\det(\alpha A+(1-\alpha)B)\ge(\det A)^\alpha(\det B)^{1-\alpha}\);特别地 \(\det\frac{A+B}2\ge\sqrt{\det A\det B}\)——行列式的 AM–GM 不等式。
Theorem 7.6.10。 \(f(A)=\operatorname{tr}A^{-1}\) 在正定矩阵上严格凸。证明同样化为对角情形,用 \(t\mapsto1/t\) 的凸性。更强的结论"矩阵求逆是算子凸的"\(\alpha A^{-1}+(1-\alpha)B^{-1}\succeq(\alpha A+(1-\alpha)B)^{-1}\) 见第 07d 章。
量化与统计含义:
- 高斯极大似然:\(n\) 维正态样本的对数似然(关于精度矩阵 \(K=\Sigma^{-1}\))是 \(\frac T2[\log\det K-\operatorname{tr}(SK)]+\)常数。\(\log\det K\) 凹、\(\operatorname{tr}(SK)\) 线性,所以似然关于 \(K\) 是凹函数,加上凸惩罚(如 \(\ell_1\))仍是凸优化——图 Lasso(graphical lasso) 有唯一解且可以高效求解,原因就在这里(实战 3)。
推导拆解(高斯对数似然的来路):零均值 \(n\) 维正态密度为 \((2\pi)^{-n/2}(\det\Sigma)^{-1/2}\exp(-\frac12x^T\Sigma^{-1}x)\)。
- 取对数并对 \(T\) 个独立样本求和:\(\sum_t\big[-\frac n2\log2\pi-\frac12\log\det\Sigma-\frac12x_t^T\Sigma^{-1}x_t\big]\)。
- 用 \(K=\Sigma^{-1}\):\(-\log\det\Sigma=\log\det K\)。
- 二次型写成迹:\(x_t^TKx_t=\operatorname{tr}(Kx_tx_t^T)\),求和得 \(\operatorname{tr}(K\sum_tx_tx_t^T)=T\operatorname{tr}(KS)\),\(S\) 是(以 \(T\) 为分母的)样本协方差。
- 合起来是 \(\frac T2[\log\det K-\operatorname{tr}(SK)]+\)常数。 不加惩罚时,对 \(K\) 求导令其为零得 \(K^{-1}=S\),即样本协方差就是极大似然估计(\(S\) 可逆时)。\(n>T\) 时 \(S\) 奇异,\(\log\det K-\operatorname{tr}(SK)\) 无上界,必须加 \(\ell_1\) 惩罚或收缩,这就是图 Lasso 的出发点。
- D-最优设计、熵:正态分布的微分熵是 \(\frac12\log\det(2\pi e\Sigma)\);\(\log\det\) 凹性使最大熵、D-最优(最大化 \(\det\) 信息矩阵)成为凸问题。
- A-最优设计:最小化 \(\operatorname{tr}(X^TX)^{-1}\)(回归系数方差之和),由 \(\operatorname{tr}A^{-1}\) 凸性是凸问题。
- 协方差平均:两个时期协方差的平均,其 \(\log\det\)("广义波动率"的对数)不小于两者对数的平均。
7.9.4 7.6 节习题中的结论
- 7.6.P6:\(A,B\) 半正定 ⇒ \(\det(A+B)\ge\det A+\det B\),等号 ⇔ \(A+B\) 奇异或 \(A=0\) 或 \(B=0\)。(加入新的风险来源,"广义方差"至少增加那么多。第 07d 章 Minkowski 不等式给出更强的结论。)
- 7.6.P7:\(A\) 正定,则 \(A+B\) 正定 ⇔ \(A^{-1}B\) 的特征值都 \(>-1\)。判断"在协方差上加一个不定的修正项后是否仍正定"只需算一个广义特征值。
- 7.6.P8:\(C=A+iB\) 正定(\(A\) 实对称、\(B\) 实反对称)⇒ \(|\det B|<\det A\)、\(\det C\le\det A\)。
- 7.6.P9:\(A\) 是两个正定矩阵之积 ⇔ \(A\) 可对角化且特征值为正。
- 7.6.P10–P11:\(A,B,C\) 正定,\(\operatorname{tr}(AB)>0\) 总成立,但 \(\operatorname{tr}(ABC)\) 可以为负(原书反例 \(\operatorname{diag}(10,1)\)、\(\begin{bmatrix}1&-1\\-1&2\end{bmatrix}\)、\(\begin{bmatrix}3&5\\5&10\end{bmatrix}\))。
- 7.6.P13:\(A,B\) 实对称正定时,\(Ax''=-Bx\) 的解有界——同时对角化把耦合振子解耦成独立简谐振子。
- 7.6.P14–P15:\(A,B\) 半正定时 \(\operatorname{tr}(AB)=\|A^{1/2}B^{1/2}\|_F^2\ge0\),等号 ⇔ \(AB=0\)。
- 7.6.P18–P27 椭球与 Loewner–John 矩阵:\(\mathcal E(A)=\{x:x^TAx\le1\}\) 的体积是 \(c_n/\sqrt{\det A}\),\(c_n=\pi^{n/2}/\Gamma(1+n/2)\)。量化读法:收益的置信椭球 \(\{r:(r-\mu)^T\Sigma^{-1}(r-\mu)\le\chi^2\}\) 体积正比于 \(\sqrt{\det\Sigma}\),\(\det\Sigma\) 越大不确定性越大;稳健优化中的不确定集通常取这种椭球。对任一范数,包含其单位球的最小体积椭球(Loewner 椭球)唯一;由此推出 Auerbach 定理:有界的矩阵乘法群相似于酉矩阵群。后两者与量化无直接关系。
量化实战
实战 1:哪些逐元素操作能保住相关矩阵的合法性
场景:样本较短时(\(T=40\)、\(n=30\)),样本相关矩阵接近奇异(最小特征值 0.005)。常见的修饰手段有:按"距离"衰减(锥形化 tapering)、逐元素函数变换、把小相关系数置零(稀疏化)、取绝对值构造相似度。用 Schur 乘积定理逐一检查。
import numpy as np
from scipy.linalg import toeplitz
lmin = lambda M: np.linalg.eigvalsh(M)[0]
rng = np.random.default_rng(2)
# 一个 30 资产、3 行业的样本相关矩阵(T=40,样本短 → 噪声大)
n, T = 30, 40
ind = np.repeat([0, 1, 2], 10)
L = 0.6 * np.ones((n, 1))
L = np.hstack([L, 0.5 * (ind[:, None] == np.arange(3))])
X = rng.standard_normal((T, 4)) @ L.T + rng.standard_normal((T, n)) * 0.6
C = np.corrcoef(X.T)
print("样本相关矩阵 λ_min = %.4f(T=40 > n=30,正定)" % lmin(C))
# ---------- 1. 合法的逐元素运算(Schur 乘积定理保证) ----------
# (a) 乘以一个半正定的"锥形/局部化"矩阵:按行业距离衰减
Taper = toeplitz(0.9 ** np.arange(n)) # [0.9^{|i-j|}],半正定
print("(a) C∘Taper: λ_min = %.4f" % lmin(C * Taper))
# (b) Hadamard 幂与 Hadamard 指数
print("(b) C∘C (逐元素平方): λ_min = %.4f" % lmin(C * C))
print(" [exp(c_ij)]: λ_min = %.4f" % lmin(np.exp(C)))
# (c) Schur 1911 下界:λ_min(A∘B) ≥ λ_min(A)·min_i b_ii
print(" 验证 λ_min(C∘Taper) ≥ λ_min(C)·1 :", lmin(C * Taper) >= lmin(C) - 1e-12)
# ---------- 2. 不合法的逐元素运算 ----------
# (d) 硬阈值:|ρ|<0.3 的相关系数置零("稀疏化")
H = np.where(np.abs(C) >= 0.3, C, 0.0)
print("\n(d) 硬阈值 0.3: λ_min = %.4f" % lmin(H))
# (e) 逐元素取绝对值:原书 7.5.P6 的 4×4 正定矩阵
A = np.array([[10, 3, -2, 1], [3, 10, 0, 9], [-2, 0, 10, 4], [1, 9, 4, 10]], float)
print("(e) 原书 A: λ_min = %.4f; |A|: λ_min = %.4f; |A|∘|A|: λ_min = %.4f"
% (lmin(A), lmin(np.abs(A)), lmin(np.abs(A) ** 2)))
# (f) 逐元素开平方根(保号):sign(c)·sqrt|c|
print("(f) sign·sqrt|c| 变换: λ_min = %.4f" % lmin(np.sign(C) * np.sqrt(np.abs(C))))
# ---------- 3. 余弦矩阵:|C| 不半正定,但 |C|∘|C| 半正定(原书 7.5.P4–P5) ----------
t = np.array([0, np.pi / 4, np.pi / 2, 3 * np.pi / 4])
Cos = np.cos(t[:, None] - t[None, :])
print("\n[cos(t_i-t_j)] λ_min = %.4f; |·| λ_min = %.4f; |·|∘|·| λ_min = %.4f"
% (lmin(Cos), lmin(np.abs(Cos)), lmin(np.abs(Cos) ** 2)))
关键输出:
样本相关矩阵 λ_min = 0.0049(T=40 > n=30,正定)
(a) C∘Taper: λ_min = 0.2383
(b) C∘C (逐元素平方): λ_min = 0.2057
[exp(c_ij)]: λ_min = 0.2462
验证 λ_min(C∘Taper) ≥ λ_min(C)·1 : True
(d) 硬阈值 0.3: λ_min = -0.5461
(e) 原书 A: λ_min = 0.1018; |A|: λ_min = -0.1873; |A|∘|A|: λ_min = 16.9868
(f) sign·sqrt|c| 变换: λ_min = -0.1887
[cos(t_i-t_j)] λ_min = -0.0000; |·| λ_min = -0.4142; |·|∘|·| λ_min = -0.0000
读法:
- (a)(b) 由 Schur 乘积定理和 Theorem 7.5.9 保证半正定,而且最小特征值从 0.005 提高到 0.2 以上——这与 Schur 下界 \(\lambda_{\min}(C\circ B)\ge\lambda_{\min}(C)\min b_{ii}\) 一致,实际上改善得更多。锥形化(tapering)是高维协方差估计的标准正则化手段:远处(不同行业、不同期限)的相关系数被逐步压向零,但始终保持正定。注意 Taper 本身必须半正定,随手设计的"截断窗"(距离 \(>k\) 置零)则不一定。
- (d) 硬阈值破坏了正定性(\(\lambda_{\min}=-0.55\)),尽管它是稀疏协方差估计中流行的做法。理论上阈值估计在大样本下以高概率正定,有限样本中必须检查并修复(第 07a 章实战 3)。
- (e) 原书的 \(4\times4\) 反例:\(A\) 正定,\(|A|\) 却有负特征值;但 \(|A|\circ|A|=A\circ A\) 半正定。(f) 保号开平方 \(\operatorname{sign}(\rho)\sqrt{|\rho|}\) 也可能破坏半正定——它的 Taylor 展开没有"非负系数"的结构。
- 余弦矩阵秩为 2,最小特征值数值上是 \(-0.0000\)(舍入误差),\(|\cdot|\) 后变成 \(-0.41\)。
实战 2:两种风险状态的同时对角化
场景:同一组资产(股票、信用、国债、商品、黄金)在正常期与危机期有不同的协方差矩阵 \(\Sigma_n\)、\(\Sigma_c\)。我们想知道:哪个组合在危机中风险放大最多?能否找到一组在两种状态下都互不相关的组合,把"危机/正常"风险比分解到每个组合上?这正是广义特征值问题 \(\Sigma_cw=\lambda\Sigma_nw\)。
import numpy as np
from scipy.linalg import eigh, cholesky, solve_triangular
rng = np.random.default_rng(4)
n = 5
names = ["股票", "信用", "国债", "商品", "黄金"]
vol_n = np.array([0.15, 0.06, 0.05, 0.18, 0.15])
R_n = np.array([[1, .5, -.2, .3, .0], [.5, 1, .1, .2, .0], [-.2, .1, 1, -.1, .2],
[.3, .2, -.1, 1, .2], [.0, .0, .2, .2, 1]])
vol_c = vol_n * np.array([2.2, 2.5, 1.2, 1.8, 1.3]) # 危机期:波动放大
R_c = np.array([[1, .8, -.5, .6, -.1], [.8, 1, -.2, .5, .0], [-.5, -.2, 1, -.4, .4],
[.6, .5, -.4, 1, .1], [-.1, .0, .4, .1, 1]]) # 危机期:相关性重构
Sn = np.outer(vol_n, vol_n) * R_n
Sc = np.outer(vol_c, vol_c) * R_c
# ---------- 广义特征值问题 Sc w = λ Sn w:两种风险的同时对角化(原书 7.6.4) ----------
lam, W = eigh(Sc, Sn) # scipy 内部就是用 Sn 的 Cholesky 化为普通特征值问题
print("危机/正常 方差比(广义特征值):", np.round(lam, 3))
print("W^T Sn W = I ?", np.allclose(W.T @ Sn @ W, np.eye(n)),
" W^T Sc W = diag(λ) ?", np.allclose(W.T @ Sc @ W, np.diag(lam)))
# 手工实现:Sn = L L^T,C = L^{-1} Sc L^{-T},对称特征分解 C = U Λ U^T,S = L^{-T} U
L = cholesky(Sn, lower=True)
Cm = solve_triangular(L, solve_triangular(L, Sc, lower=True).T, lower=True)
lam2, U = np.linalg.eigh(Cm)
print("手工结果一致:", np.allclose(lam, lam2))
# 解读:列 w_k 是一组在两种状态下都互不相关的组合
def norm(w): # 权重绝对值之和为 1,最大权重取正号
w = w / np.abs(w).sum(); return w * np.sign(w[np.argmax(np.abs(w))])
w_max, w_min = norm(W[:, -1]), norm(W[:, 0])
print("危机中风险放大最多的组合:", dict(zip(names, np.round(w_max, 2).tolist())))
print("危机中风险放大最少的组合:", dict(zip(names, np.round(w_min, 2).tolist())))
for w, tag in [(w_max, "max"), (w_min, "min")]:
print(" %s: 正常波动 %.3f → 危机波动 %.3f (比值平方 %.3f)"
% (tag, np.sqrt(w @ Sn @ w), np.sqrt(w @ Sc @ w), (w @ Sc @ w) / (w @ Sn @ w)))
# Rayleigh 商的范围:任何组合的方差放大倍数都在 [λ_min, λ_max] 内
ratios = [(lambda w: (w @ Sc @ w) / (w @ Sn @ w))(rng.standard_normal(n)) for _ in range(10000)]
print("1 万个随机组合的方差比范围: [%.3f, %.3f]" % (min(ratios), max(ratios)))
# AB 型乘积:Sn^{-1} Sc 不对称,但可对角化、特征值为正(原书 7.6.2)
print("Sn^{-1}Sc 的特征值:", np.round(np.sort(np.linalg.eigvals(np.linalg.solve(Sn, Sc)).real), 3))
关键输出:
危机/正常 方差比(广义特征值): [0.807 1.508 2.007 2.661 7.102]
W^T Sn W = I ? True W^T Sc W = diag(λ) ? True
手工结果一致: True
危机中风险放大最多的组合: {'股票': 0.1, '信用': 0.65, '国债': -0.18, '商品': 0.06, '黄金': -0.01}
危机中风险放大最少的组合: {'股票': 0.08, '信用': -0.13, '国债': 0.66, '商品': 0.04, '黄金': -0.09}
max: 正常波动 0.053 → 危机波动 0.142 (比值平方 7.102)
min: 正常波动 0.032 → 危机波动 0.028 (比值平方 0.807)
1 万个随机组合的方差比范围: [0.864, 6.998]
Sn^{-1}Sc 的特征值: [0.807 1.508 2.007 2.661 7.102]
读法:
- 广义特征向量矩阵 \(W\) 同时把 \(\Sigma_n\) 化成 \(I\)、把 \(\Sigma_c\) 化成 \(\operatorname{diag}(\lambda)\):五个组合在两种状态下都两两不相关,第 \(k\) 个组合的危机方差是正常方差的 \(\lambda_k\) 倍。任何组合的方差放大倍数都是这五个数的加权平均,因而落在 \([0.807,7.102]\) 内(随机组合的范围 \([0.864,6.998]\) 印证了这一点)。
- 放大最多的组合是"多信用、空国债":危机中信用利差走阔、国债避险上涨,二者相关性由正转负,这个价差组合的方差放大 7 倍。放大最少的组合以国债为主。对压力测试来说,前者就是"最该担心的方向",比逐个资产看波动率放大倍数(2.5 倍、1.2 倍……)信息多得多。
- \(\Sigma_n^{-1}\Sigma_c\) 不对称,但特征值都是正实数(Corollary 7.6.2),与广义特征值相同。实现上应调用
eigh(Sc, Sn),它内部做的正是"Cholesky + 对称特征分解"(代码中的手工版本),保证特征值为实、特征向量 \(\Sigma_n\)-正交。
实战 3:\(\log\det\) 的凹性与图 Lasso
场景:验证 \(\log\det\) 凹性、\(\operatorname{tr}A^{-1}\) 凸性和两个行列式不等式;然后在一个"链状"条件独立结构(精度矩阵三对角,例如按期限排列的利率变化)下,用图 Lasso 估计稀疏精度矩阵。图 Lasso 求解的是 \(\min_{K\succ0}\ -\log\det K+\operatorname{tr}(SK)+\alpha\|K\|_{1,\text{off}}\),正因为 \(\log\det\) 严格凹,这是一个有唯一解的凸问题。
import numpy as np
from sklearn.covariance import GraphicalLasso
rng = np.random.default_rng(8)
logdet = lambda M: np.linalg.slogdet(M)[1]
# ---------- 1. log det 严格凹、tr A^{-1} 严格凸(原书 7.6.6、7.6.10) ----------
n = 8
def rand_pd():
G = rng.standard_normal((n, n)); return G @ G.T / n + 0.1 * np.eye(n)
A, B = rand_pd(), rand_pd()
for a in [0.25, 0.5, 0.75]:
M = a * A + (1 - a) * B
print("α=%.2f log det 凹性间隙 %.4f ≥ 0 tr(M^-1) 凸性间隙 %.4f ≥ 0"
% (a, logdet(M) - a * logdet(A) - (1 - a) * logdet(B),
a * np.trace(np.linalg.inv(A)) + (1 - a) * np.trace(np.linalg.inv(B)) - np.trace(np.linalg.inv(M))))
print("det((A+B)/2) = %.4e ≥ sqrt(det A det B) = %.4e" % (np.linalg.det((A + B) / 2), np.sqrt(np.linalg.det(A) * np.linalg.det(B))))
print("det(A+B) = %.4e ≥ det A + det B = %.4e" % (np.linalg.det(A + B), np.linalg.det(A) + np.linalg.det(B)))
# ---------- 2. 高斯极大似然:-log det K + tr(SK) 关于精度矩阵 K 凸 → 图 Lasso 是凸问题 ----------
p, T = 15, 120
K_true = np.eye(p) + np.diag(np.full(p - 1, -0.45), 1) + np.diag(np.full(p - 1, -0.45), -1) # 链状(AR 型)精度矩阵
Sigma_true = np.linalg.inv(K_true)
Xs = rng.multivariate_normal(np.zeros(p), Sigma_true, size=T)
S = np.cov(Xs.T, bias=True)
gl = GraphicalLasso(alpha=0.12).fit(Xs)
K_hat = gl.precision_
nll = lambda K, S: -logdet(K) + np.trace(S @ K) # 负对数似然(去掉常数与 T/2)
S_new = np.cov(rng.multivariate_normal(np.zeros(p), Sigma_true, size=5000).T, bias=True)
print("\n负对数似然 样本内 样本外")
for name, K in [("样本协方差之逆", np.linalg.inv(S)), ("图 Lasso", K_hat), ("真实精度矩阵", K_true)]:
print(" %-10s %8.3f %8.3f" % (name, nll(K, S), nll(K, S_new)))
off = ~np.eye(p, dtype=bool)
true_edge = np.abs(K_true) > 1e-8
print("图 Lasso 非对角零元比例 %.2f;真实为 %.2f;样本逆为 %.2f"
% ((np.abs(K_hat[off]) < 1e-4).mean(), (~true_edge[off]).mean(), (np.abs(np.linalg.inv(S)[off]) < 1e-4).mean()))
print("估计的精度矩阵正定? λ_min = %.4f" % np.linalg.eigvalsh(K_hat)[0])
关键输出:
α=0.25 log det 凹性间隙 1.9125 ≥ 0 tr(M^-1) 凸性间隙 9.1445 ≥ 0
α=0.50 log det 凹性间隙 2.0674 ≥ 0 tr(M^-1) 凸性间隙 9.0600 ≥ 0
α=0.75 log det 凹性间隙 1.5253 ≥ 0 tr(M^-1) 凸性间隙 7.0883 ≥ 0
det((A+B)/2) = 4.7427e-01 ≥ sqrt(det A det B) = 6.0003e-02
det(A+B) = 1.2141e+02 ≥ det A + det B = 2.1015e-01
负对数似然 样本内 样本外
样本协方差之逆 18.844 20.462
图 Lasso 19.423 19.837
真实精度矩阵 19.735 19.442
图 Lasso 非对角零元比例 0.63;真实为 0.87;样本逆为 0.00
估计的精度矩阵正定? λ_min = 0.1076
读法:
- 凹性/凸性间隙在各个 \(\alpha\) 下都为正。行列式 AM–GM 与 \(\det(A+B)\ge\det A+\det B\) 也成立,后者在这里差了几个数量级(\(n=8\) 时 \(\det\) 是 8 次齐次的)。
- 样本协方差之逆是无约束极大似然解,样本内负对数似然最小(18.84),但样本外最差(20.46)——典型的过拟合。图 Lasso 牺牲一点样本内拟合,换来更好的样本外似然,并恢复了大部分零结构(63% 的非对角元为零,真实为 87%)。
- 估计出的精度矩阵自动正定:\(\log\det K\) 在 \(K\) 趋于奇异时趋于 \(-\infty\),起到了"障碍函数"的作用。这也是许多协方差估计方法用 \(\log\det\) 作目标或约束的原因。
本章小结
Hadamard 积是逐元素乘积,总是保持 Hermitian 性;Schur 乘积定理说两个半正定矩阵的 Hadamard 积半正定,两者都正定(或一个正定、另一个对角为正)时正定,且 \(\lambda_{\min}(A\circ B)\ge\lambda_{\min}(A)\min b_{ii}\)。它最直观的解释是:独立随机向量逐分量乘积的协方差就是两个协方差的 Hadamard 积。Moutard 定理说明半正定锥在 Frobenius 内积下自对偶。反复使用 Schur 定理得到 Hadamard 幂、Hadamard 指数和非负系数解析函数都保持半正定,这是高斯核等合法性的来源;而逐元素取绝对值、硬阈值、Hadamard 逆等操作一般会破坏半正定性。若一个 Hermitian 矩阵正定,就能与另一个 Hermitian 矩阵同时对角化:*合同形式 \(A=SS^*\)、\(B=S\Lambda S^*\) 对应广义特征值问题 \(Bx=\lambda Ax\),广义特征向量关于两个二次型同时正交;另一种形式 \(B=S^{-*}\Lambda S^{-1}\) 说明 \(AB\) 可对角化且特征值为实。借助同时对角化,矩阵不等式可以化为对角(标量)不等式,由此证明了 \(\log\det\) 严格凹、\(\operatorname{tr}A^{-1}\) 严格凸,它们使高斯极大似然、图 Lasso、D/A-最优设计都成为凸优化问题。
| 概念/公式 | 表达式 | 用途 |
|---|---|---|
| Hadamard 积 | \(A\circ B=[a_{ij}b_{ij}]\) | 逐元素加工 |
| 迹恒等式 | \(\sum a_{ij}b_{ij}=\operatorname{tr}(AB^T)\) | Frobenius 内积 |
| 协方差 = 波动 ∘ 相关 | \(\Sigma=(\sigma\sigma^T)\circ R\) | 拼接波动与相关 |
| Schur 乘积定理 | \(A,B\succeq0\Rightarrow A\circ B\succeq0\) | 锥形化、核乘积 |
| Schur 特征值界 | \(\lambda_{\min}(A\circ B)\ge\lambda_{\min}(A)\min b_{ii}\) | 条件数改善 |
| Moutard | \(A\succeq0\iff\operatorname{tr}(AB^T)\ge0\ \forall B\succeq0\) | 半正定锥自对偶、SDP 对偶 |
| Hadamard 函数 | 非负系数 \(f\):\([f(a_{ij})]\succeq0\) | 高斯核、\(e^{\rho}\) 变换 |
| 反例 | \(\vert A\vert \)(\(n\ge4\))、硬阈值、Hadamard 逆 | 不能默认合法 |
| *合同同时对角化 | \(A=SS^*\),\(B=S\Lambda S^*\) | 广义特征值问题 |
| 乘积的特征值 | \(A\succ0\)、\(B\) Hermitian ⇒ \(AB\) 可对角化、谱为实 | \(\Sigma_1^{-1}\Sigma_2\) 分析 |
| 广义 Rayleigh 商 | \(\lambda_{\min}\le\frac{x^*Bx}{x^*Ax}\le\lambda_{\max}\) | 风险比、判别分析 |
| \(\log\det\) 严格凹 | \(\log\det(\alpha A+(1-\alpha)B)\ge\alpha\log\det A+(1-\alpha)\log\det B\) | 高斯 MLE、图 Lasso |
| 行列式 AM–GM | \(\det\frac{A+B}2\ge\sqrt{\det A\det B}\) | — |
| \(\operatorname{tr}A^{-1}\) 严格凸 | — | A-最优设计 |
| 椭球体积 | \(\operatorname{vol}\mathcal E(A)=c_n/\sqrt{\det A}\) | 置信椭球、不确定集 |
练习
基础
- 设 \(R\) 是相关矩阵,\(\sigma\) 是波动率向量。用 Hadamard 积证明 \(\operatorname{diag}(\sigma)R\operatorname{diag}(\sigma)\) 半正定,并说明不需要 Schur 定理也能证明(*合同)。
- 设 \(R_1,R_2\) 都是相关矩阵。证明 \(R_1\circ R_2\) 也是相关矩阵。给出一个量化例子(提示:资产相关 × 期限相关的"可分"相关结构,或两个独立因子的乘积)。
- 对 \(3\times3\) 相关矩阵 \(C\),证明 \([\rho_{ij}^3]\) 和 \([\sinh\rho_{ij}]\)(对角线再置 1 之前)都半正定。 提示:Theorem 7.5.9,\(\sinh\) 的 Taylor 系数非负。
- 用 Moutard 定理证明:若 \(\Sigma\succeq0\)、\(W\succeq0\),则 \(\operatorname{tr}(\Sigma W)\ge0\)。在"组合的二次型风险 \(\operatorname{tr}(\Sigma ww^T)\)"中解释它。
- 设 \(\Sigma_1\succ0\),\(\Sigma_2\succeq0\)。证明 \(w^T\Sigma_2w\le\lambda_{\max}(\Sigma_1^{-1}\Sigma_2)\,w^T\Sigma_1w\) 对所有 \(w\) 成立,且常数最优。 提示:广义 Rayleigh 商。
- 验证原书例:\(A=\begin{bmatrix}2&1\\1&1\end{bmatrix}\)、\(B=\begin{bmatrix}2&1\\1&3\end{bmatrix}\),\(AB\) 不对称,但特征值为正实数。 答案要点:\(AB=\begin{bmatrix}5&5\\3&4\end{bmatrix}\),特征值 \((9\pm\sqrt{61})/2\),均为正。
进阶
- 证明 \(\lambda_{\max}(A\circ B)\le\lambda_{\max}(A)\max_ib_{ii}\)(\(A,B\succeq0\))。 提示:\(\lambda_{\max}(A)I-A\succeq0\),与 \(B\) 做 Hadamard 积。
- 证明 \(A\succ0\) 时 \(A\circ A^{-1}\succeq I\)(实对称情形),并说明 \((A\circ A^{-1})e=e\),所以不能有 \(A\circ A^{-1}\succ I\)。 提示:\(x^T(A\circ A^{-1})x=\|A^{1/2}(\operatorname{diag}x)A^{-1/2}\|_F^2\),而 Frobenius 范数平方不小于特征值模平方和。
- 用同时对角化证明 Minkowski 型结论 \(\det(A+B)\ge\det A+\det B\)(\(A\succ0\)、\(B\succeq0\))。 提示:化为 \(\prod(1+\lambda_i)\ge1+\prod\lambda_i\)。
- 设 \(\Sigma\succ0\),\(\mu\ne0\)。证明 \(\max_w\frac{(\mu^Tw)^2}{w^T\Sigma w}=\mu^T\Sigma^{-1}\mu\),并把它看成秩一矩阵 \(\mu\mu^T\) 关于 \(\Sigma\) 的最大广义特征值。
- (图 Lasso 的凸性)证明 \(K\mapsto-\log\det K+\operatorname{tr}(SK)+\alpha\sum_{i\ne j}|k_{ij}|\) 在正定锥上严格凸,从而最小点(若存在)唯一。
原书推荐习题
- 7.5.P4–P6:\(|A|\) 不保持半正定的反例;7.5.P12:Hadamard 逆;7.5.P14:\(A\circ A^{-1}\succeq I\);7.5.P18–P21:Hadamard 指数何时正定;7.5.P24:\(\lambda_{\min}(A\circ B)\) 的 Schur 下界;7.5.P25:条件半正定。
- 7.6.P6、P8:行列式不等式;7.6.P7:\(A+B\) 正定的广义特征值判据;7.6.P10:\(\operatorname{tr}(ABC)\) 可为负;7.6.P18–P20:椭球体积与行列式。
原书对照
| 本章小节 | 原书小节 | 书页 | PDF 页 |
|---|---|---|---|
| 7.8 Hadamard 积、Schur 乘积定理、Moutard、椭圆算子、Hadamard 函数 | 7.5 The Schur product theorem(7.5.1–7.5.9 及习题 7.5.P1–P25) | 477–485 | 497–505 |
| 7.9.1–7.9.3 同时对角化、广义特征值、\(\log\det\) 凹与 \(\operatorname{tr}A^{-1}\) 凸 | 7.6.1–7.6.10 | 485–489 | 505–509 |
| 7.9.4 习题结论(椭球、Loewner–John) | 习题 7.6.P1–P29 | 489–493 | 509–513 |
下一章(第 07d 章)把"半正定"变成一种序:\(A\succeq B\) 当且仅当 \(A-B\) 半正定。在这个 Loewner 序下讨论求逆、开方、Schur 补的单调性,以及 Hadamard、Fischer、Oppenheim 等一整族行列式不等式。