Skip to content

Commit f5525bf

Browse files
mmckyclaude
andauthored
[action-translation] resync: svd_intro.md (#154)
* 🔄 resync svd_intro.md * Restore trailing newline (engine issue tracked in QuantEcon/action-translation#116) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 6c2a3c8 commit f5525bf

2 files changed

Lines changed: 69 additions & 48 deletions

File tree

.translate/state/svd_intro.md.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
source-sha: 388b2735bfd3c7757d4ef6a0ecb97183210090d2
2+
synced-at: "2026-07-18"
3+
model: claude-sonnet-5
4+
mode: RESYNC
5+
section-count: 12
6+
tool-version: 0.17.0

lectures/svd_intro.md

Lines changed: 63 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,21 @@ kernelspec:
99
display_name: Python 3
1010
language: python
1111
name: python3
12+
translation:
13+
title: 奇异值分解
14+
headings:
15+
Overview: 概述
16+
The Setting: 基本设定
17+
Singular Value Decomposition: 奇异值分解
18+
Four Fundamental Subspaces: 四个基本子空间
19+
Eckart-Young Theorem: Eckart-Young定理
20+
Full and Reduced SVD's: 完全SVD和简化SVD
21+
Polar Decomposition: 极分解
22+
'Application: Principal Components Analysis (PCA)': 应用:主成分分析(PCA)
23+
Relationship of PCA to SVD: PCA与SVD的关系
24+
PCA with Eigenvalues and Eigenvectors: 基于特征值和特征向量的PCA
25+
Connections: 联系
26+
Exercises: 练习
1227
---
1328

1429
# 奇异值分解
@@ -23,6 +38,7 @@ kernelspec:
2338
* **最小二乘回归**(包括欠定和超定情况)
2439
* **主成分分析**(PCA)
2540

41+
与主成分分析(PCA)类似,动态模态分解(DMD)也可以被看作是一种数据降维方法,它通过将数据投影到一组有限的因子上来表示数据中的显著模式。
2642

2743
在后续的{doc}`动态模式分解<var_dmd>`讲座中,我们会看到如何利用SVD来高效地计算向量自回归(VAR)模型的简化形式。
2844

@@ -210,7 +226,6 @@ $$
210226
X^\top u_i & = \sigma_i v_i, \quad i=1, \ldots, p \cr
211227
X^\top u_i & = 0 \quad i= p+1, \ldots, m
212228
\end{aligned}
213-
214229
$$ (eq:orthoortho2)
215230
216231
注意方程 {eq}`eq:orthoortho2` 表明变换 $X^\top$ 将一对不同的正交单位向量 $u_i, u_j$(其中 $i$ 和 $j$ 都小于或等于 $X$ 的秩 $p$)映射到一对不同的正交单位向量 $v_i, v_j$。
@@ -334,7 +349,7 @@ $$ (eq:Ekart)
334349
335350
在介绍主成分分析时,我们会对此进行更详细的讨论。
336351
337-
你可以在[这里](https://zhuanlan.zhihu.com/p/606447321)阅读关于Eckart-Young定理及其应用的内容。
352+
你可以在[这里](https://en.wikipedia.org/wiki/Low-rank_approximation)阅读关于Eckart-Young定理及其应用的内容。
338353
339354
在讨论主成分分析(PCA)和动态模态分解(DMD)时,我们将会用到这个定理。
340355
@@ -368,13 +383,12 @@ $$
368383
369384
$$
370385
\begin{aligned}
371-
372386
UU^\top & \neq I & \quad U^\top U = I \cr
373387
VV^\top & = I & \quad V^\top V = I
374388
\end{aligned}
375389
$$
376390
377-
* 在**短胖**情况下(即 $m < < n$),对于**简化**SVD
391+
* 在**矮胖**情况下(即 $m < < n$),对于**简化**SVD
378392
379393
$$
380394
\begin{aligned}
@@ -447,10 +461,7 @@ UhatUhatT, UhatTUhat
447461
448462
**注释:**
449463
450-
上述代码展示了两种不同的SVD计算方式:
451-
452-
- `full_matrices=True` 计算完整的SVD分解
453-
- `full_matrices=False` 计算简化的SVD分解,只保留非零奇异值对应的部分
464+
上述代码展示了 `full_matrices=True` 和 `full_matrices=False` 选项的应用。使用 `full_matrices=False` 会返回简化的奇异值分解。
454465
455466
**完整**和**简化**的奇异值分解都能准确地分解一个 $m \times n$ 矩阵 $X$
456467
@@ -527,13 +538,13 @@ $$
527538
528539
在**横截面**分析中,列索引 $j$ 代表不同的个体,而行索引代表它们的不同属性。
529540
530-
SVD 是一种将矩阵分解为有用组件的方法,类似于极分解、特征分解等。而 PCA 则是一种基于 SVD 的数据分析方法,它通过一系列统计步骤来捕捉数据中最重要的模式,帮助我们更好地理解和可视化数据
541+
正如我们之前所见,SVD是一种将矩阵分解为有用组件的方法,就像极分解、特征分解等其他方法一样
531542
532-
让我们来看看 PCA 的具体步骤:
543+
而PCA则是一种基于SVD进行数据分析的方法。其目标是应用一定的步骤,借助统计工具来捕捉数据中最重要的模式,从而更好地可视化数据中的规律。
533544
534545
**第1步:数据标准化**
535546
536-
由于数据可能包含不同单位和尺度的变量,我们首先需要标准化数据:
547+
由于数据矩阵可能包含不同单位和尺度的变量,我们首先需要对数据进行标准化。
537548
538549
首先计算 $X$ 的每一行的平均值。
539550
@@ -547,25 +558,25 @@ $$
547558
\bar{X} = \begin{bmatrix} \bar{X_1} \\ \bar{X_2} \\ \ldots \\ \bar{X_m}\end{bmatrix}\begin{bmatrix}1 \mid 1 \mid \cdots \mid 1 \end{bmatrix}
548559
$$
549560
550-
从原始矩阵中减去平均值矩阵以创建一个均值中心化矩阵
561+
从原始矩阵中减去平均值矩阵,得到一个均值中心化矩阵
551562
552563
$$
553564
B = X - \bar{X}
554565
$$
555566
556567
**第2步:计算协方差矩阵**
557568
558-
为了研究变量之间的关系,我们计算中心化数据的协方差矩阵:
569+
由于我们希望提取变量之间的关系,而不仅仅是它们的大小——换句话说,我们想知道它们能在多大程度上相互解释——因此我们计算$B$的协方差矩阵。
559570
560571
$$
561572
C = \frac{1}{n} BB^{\top}
562573
$$
563574
564-
**第3步:分解协方差矩阵**
575+
**第3步:分解协方差矩阵并排列奇异值:**
565576
566-
由于矩阵$C$是正定的,我们可以对其进行特征值分解,找出其特征值,并按降序重新排列特征值和特征向量矩阵
577+
由于矩阵$C$是正定的,我们可以对其进行特征分解,找出其特征值,并将特征值和特征向量矩阵按降序重新排列
567578
568-
$C$的特征值分解可以通过分解$B$来得到。由于$B$不是方阵,我们对$B$进行SVD分解:
579+
$C$的特征分解可以通过分解$B$来求得。由于$B$不是方阵,我们对$B$进行SVD分解:
569580
570581
$$
571582
\begin{aligned}
@@ -581,17 +592,17 @@ $$
581592
582593
然后我们可以重新排列矩阵$U$和$\Sigma$中的列,使奇异值按降序排列。
583594
584-
**第4步:选择主成分**
595+
**第4步:选择奇异值,(可选)截断其余部分:**
585596
586597
我们现在可以根据想要保留的方差量来决定选择多少个奇异值(例如,保留95%的总方差)。
587598
588-
我们可以通过计算前$r$个因子包含的方差除以总方差来获得百分比
599+
我们可以通过计算前$r$个主要因子所包含的方差除以总方差来获得这个百分比
589600
590601
$$
591602
\frac{\sum_{i = 1}^{r} \sigma^2_{i}}{\sum_{i = 1}^{p} \sigma^2_{i}}
592603
$$
593604
594-
**第5步:创建主成分得分矩阵:**
605+
**第5步:创建得分矩阵:**
595606
596607
$$
597608
\begin{aligned}
@@ -601,19 +612,17 @@ T&= BV \cr
601612
\end{aligned}
602613
$$
603614
604-
这个矩阵的每一列代表一个主成分,其中包含了原始数据在新坐标系下的投影。
605-
606615
## PCA与SVD的关系
607616
608-
让我们来探讨SVD与PCA之间的关系。假设我们有一个数据矩阵$X$,其中所有变量的样本均值都为零。
617+
为了将SVD与数据集$X$的PCA联系起来,首先构造数据矩阵$X$的SVD:
609618
610-
$X$的SVD分解可以写成:
619+
让我们假设所有变量的样本均值都为零,这样我们就不需要对矩阵进行标准化了。
611620
612621
$$
613622
X = U \Sigma V^\top = \sigma_1 U_1 V_1^\top + \sigma_2 U_2 V_2^\top + \cdots + \sigma_p U_p V_p^\top
614623
$$ (eq:PCA1)
615624
616-
其中矩阵$U$和$V$分别由列向量组成:
625+
其中
617626
618627
$$
619628
U=\begin{bmatrix}U_1|U_2|\ldots|U_m\end{bmatrix}
@@ -628,10 +637,10 @@ $$
628637
因此,我们有
629638
630639
$$
631-
X = \sigma_1 \begin{pmatrix}U_{11}V_{1}^\top \\U_{21}V_{1}^\top \\\cdots\\U_{m1}V_{1}^\top \\\end{pmatrix} + \sigma_2\begin{pmatrix}U_{12}V_{2}^\top \\U_{22}V_{2}^\top \\\cdots\\U_{m2}V_{2}^\top \\\end{pmatrix}+\ldots + \sigma_p\begin{pmatrix}U_{1p}V_{p}^\top \\U_{2p}V_{p}^\top \\\cdots\\U_{mp}V_{p}^\top \\\end{pmatrix}
640+
X = \sigma_1 \begin{bmatrix}U_{11}V_{1}^\top \\U_{21}V_{1}^\top \\\cdots\\U_{m1}V_{1}^\top \\\end{bmatrix} + \sigma_2\begin{bmatrix}U_{12}V_{2}^\top \\U_{22}V_{2}^\top \\\cdots\\U_{m2}V_{2}^\top \\\end{bmatrix}+\ldots + \sigma_p\begin{bmatrix}U_{1p}V_{p}^\top \\U_{2p}V_{p}^\top \\\cdots\\U_{mp}V_{p}^\top \\\end{bmatrix}
632641
$$ (eq:PCA2)
633642
634-
在时间序列分析的背景下,这个分解有着重要的含义:
643+
在时间序列分析的背景下,我们可以这样解释方程{eq}`eq:PCA2`中的对象:
635644
636645
* $ \textrm{对于每个} \ k=1, \ldots, n $,对象 $\lbrace V_{kj} \rbrace_{j=1}^n$ 是第$k$个**主成分**的时间序列
637646
@@ -640,7 +649,7 @@ $$ (eq:PCA2)
640649
641650
* 对于每个$k=1, \ldots, p$,$\sigma_k$是第$k$个**主成分**的强度,这里的强度指的是对$X$的整体协方差的贡献。
642651
643-
## 基于特征值分解的PCA
652+
## 基于特征值和特征向量的PCA
644653
645654
现在我们使用样本协方差矩阵的特征分解来进行PCA。
646655
@@ -656,13 +665,17 @@ $$
656665
\Omega = XX^\top
657666
$$
658667
659-
其特征值分解为:
668+
然后使用特征分解将$\Omega$表示为:
660669
661670
$$
662671
\Omega =P\Lambda P^\top
663672
$$
664673
665-
这里$P$是$m \times m$特征向量矩阵,而$\Lambda$是特征值对角矩阵。
674+
这里
675+
676+
* $P$是$\Omega$的$m×m$特征向量矩阵
677+
678+
* $\Lambda$是$\Omega$的特征值对角矩阵
666679
667680
我们可以将$X$表示为:
668681
@@ -729,17 +742,17 @@ $$
729742
1. 将特征值和奇异值按降序排列
730743
2. 在$P$和$U$中强制使对角线为正,并相应地调整$V^\top$中的符号
731744
732-
## 联系与总结
745+
## 联系
733746
734-
为了更好地理解前面的内容,让我们把这些公式联系起来,看看它们之间的关系
747+
为了把这些内容整合起来,有必要把上面给出的一些公式汇总并加以比较
735748
736-
首先,对于一个$m \times n$矩阵的奇异值分解(SVD)
749+
首先,考虑一个$m \times n$矩阵的SVD
737750
738751
$$
739752
X = U\Sigma V^\top
740753
$$
741754
742-
我们可以计算
755+
计算
743756
744757
$$
745758
\begin{aligned}
@@ -749,9 +762,11 @@ XX^\top &=U\Sigma V^\top V\Sigma^\top U^\top \cr
749762
\end{aligned}
750763
$$ (eq:XXcompare)
751764
752-
将这个表达式{eq}`eq:XXcompare`与前面的方程{eq}`eq:XXo`对比,我们可以发现SVD分解中的$U$矩阵实际上就是$XX^\top$的特征向量矩阵$P$,而$\Sigma \Sigma^\top$就对应着特征值矩阵$\Lambda$。
765+
将表示式{eq}`eq:XXcompare`与上面的方程{eq}`eq:XXo`进行比较。
766+
767+
显然,SVD中的$U$就是$XX^\top$的特征向量矩阵$P$,而$\Sigma \Sigma^\top$就是特征值矩阵$\Lambda$。
753768
754-
类似地,我们再来看:
769+
其次,让我们计算
755770
756771
$$
757772
\begin{aligned}
@@ -760,41 +775,43 @@ X^\top X &=V\Sigma^\top U^\top U\Sigma V^\top \\
760775
\end{aligned}
761776
$$
762777
763-
这个结果告诉我们,SVD中的$V$矩阵其实就是$X^\top X$的特征向量矩阵
778+
因此,SVD中的矩阵$V$$X^\top X$的特征向量矩阵
764779
765-
把这些发现整理一下,我们可以得到样本协方差矩阵的特征分解:
780+
总结并整合这些内容,我们得到样本协方差矩阵的特征分解
766781
767782
$$
768783
X X^\top = P \Lambda P^\top
769784
$$
770785
771-
这里的$P$是一个正交矩阵。而从$X$的SVD分解,我们也知道:
786+
其中$P$是一个正交矩阵。
787+
788+
此外,从$X$的SVD分解中,我们知道
772789
773790
$$
774791
X X^\top = U \Sigma \Sigma^\top U^\top
775792
$$
776793
777-
其中$U$同样是一个正交矩阵
794+
其中$U$是一个正交矩阵
778795
779-
这两个表达式告诉我们$P = U$,因此$X$可以表示为:
796+
因此,$P = U$,我们得到$X$的表示
780797
781798
$$
782799
X = P \epsilon = U \Sigma V^\top
783800
$$
784801
785-
进一步推导可得:
802+
由此可得
786803
787804
$$
788805
U^\top X = \Sigma V^\top = \epsilon
789806
$$
790807
791-
注意上述推导意味着
808+
注意,上述结果意味着
792809
793810
$$
794-
\epsilon \epsilon^\top = \Sigma V^\top V \Sigma^\top = \Sigma \Sigma^\top = \Lambda
811+
\epsilon \epsilon^\top = \Sigma V^\top V \Sigma^\top = \Sigma \Sigma^\top = \Lambda ,
795812
$$
796813
797-
这样所有部分都完美契合
814+
因此所有内容都能够互相吻合
798815
799816
下面我们定义一个`DecomAnalysis`类,用于对给定的数据矩阵`X`进行PCA和SVD分析。
800817
@@ -943,11 +960,11 @@ def compare_pca_svd(da):
943960
```{exercise}
944961
:label: svd_ex1
945962
946-
在普通最小二乘法(OLS)中,我们学会计算 $ \hat{\beta} = (X^\top X)^{-1} X^\top y $,但在某些情况下,比如当我们遇到共线性或欠定系统时:即**短而宽**的矩阵
963+
在普通最小二乘法(OLS)中,我们学会计算 $ \hat{\beta} = (X^\top X)^{-1} X^\top y $,但在某些情况下,比如当我们遇到共线性或欠定系统时:即**矮胖**矩阵
947964
948965
在这些情况下,$ (X^\top X) $矩阵不可逆(其行列式为零)或病态(其行列式非常接近零)。
949966
950-
我们可以改用所谓的[伪逆](https://baike.baidu.com/item/%E4%BC%AA%E9%80%86%E7%9F%A9%E9%98%B5/7397859),即创建一个满秩的逆矩阵近似,以此来计算 $ \hat{\beta} $。
967+
我们可以改用所谓的[伪逆](https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse),即创建一个满秩的逆矩阵近似,以此来计算 $ \hat{\beta} $。
951968
952969
根据Eckart-Young定理,构建伪逆矩阵 $ X^{+} $ 并用它来计算 $ \hat{\beta} $。
953970
@@ -973,7 +990,6 @@ $$
973990
974991
$$
975992
\Sigma^{+} = \begin{bmatrix}
976-
977993
\frac{1}{\sigma_1} & 0 & \cdots & 0 & 0 \\
978994
0 & \frac{1}{\sigma_2} & \cdots & 0 & 0 \\
979995
\vdots & \vdots & \ddots & \vdots & \vdots \\
@@ -996,4 +1012,3 @@ $$
9961012
查看该讲座中描述和说明经典因子分析模型的部分。
9971013
9981014
如前所述,在后续关于 {doc}`动态模态分解 <var_dmd>` 的讲座中,我们将描述SVD如何提供快速计算一阶向量自回归(VARs)的降阶近似的方法。
999-

0 commit comments

Comments
 (0)