@@ -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
210226X^\top u_i & = \sigma_i v_i, \quad i=1, \ldots, p \cr
211227X^\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
368383
369384$$
370385\begin{aligned}
371-
372386UU^\top & \neq I & \quad U^\top U = I \cr
373387VV^\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
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
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$$
553564B = X - \bar{X}
554565$$
555566
556567**第2步:计算协方差矩阵**
557568
558- 为了研究变量之间的关系,我们计算中心化数据的协方差矩阵:
569+ 由于我们希望提取变量之间的关系,而不仅仅是它们的大小——换句话说,我们想知道它们能在多大程度上相互解释——因此我们计算$B$的协方差矩阵。
559570
560571$$
561572C = \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}
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$$
613622X = 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$$
619628U=\begin{bmatrix}U_1|U_2|\ldots|U_m\end{bmatrix}
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
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
7297421. 将特征值和奇异值按降序排列
7307432. 在$P$和$U$中强制使对角线为正,并相应地调整$V^\top$中的符号
731744
732- ## 联系与总结
745+ ## 联系
733746
734- 为了更好地理解前面的内容,让我们把这些公式联系起来,看看它们之间的关系 。
747+ 为了把这些内容整合起来,有必要把上面给出的一些公式汇总并加以比较 。
735748
736- 首先,对于一个 $m \times n$矩阵的奇异值分解(SVD) :
749+ 首先,考虑一个 $m \times n$矩阵的SVD :
737750
738751$$
739752X = 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$$
768783X X^\top = P \Lambda P^\top
769784$$
770785
771- 这里的$P$是一个正交矩阵。而从$X$的SVD分解,我们也知道:
786+ 其中$P$是一个正交矩阵。
787+
788+ 此外,从$X$的SVD分解中,我们知道
772789
773790$$
774791X 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$$
782799X = P \epsilon = U \Sigma V^\top
783800$$
784801
785- 进一步推导可得:
802+ 由此可得
786803
787804$$
788805U^\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
973990
974991$$
975992\Sigma^{+} = \begin{bmatrix}
976-
977993\frac{1}{\sigma_1} & 0 & \cdots & 0 & 0 \\
9789940 & \frac{1}{\sigma_2} & \cdots & 0 & 0 \\
979995\vdots & \vdots & \ddots & \vdots & \vdots \\
9961012查看该讲座中描述和说明经典因子分析模型的部分。
9971013
9981014如前所述,在后续关于 {doc}`动态模态分解 <var_dmd>` 的讲座中,我们将描述SVD如何提供快速计算一阶向量自回归(VARs)的降阶近似的方法。
999-
0 commit comments