pyprobml 第 20 章降维实战指南:PCA、概率 PCA、自编码器与词嵌入的 Notebook 全景解析 机器学习深度学习【免费下载链接】pyprobmlPython code for Probabilistic Machine learning book by Kevin Murphy项目地址https://gitcode.com/gh_mirrors/py/pyprobml点击查看免费下载本章文档是《Probabilistic Machine Learning: An Introduction》Kevin Murphy 著第 20 章 Dimensionality reduction 的配套代码索引页位于 notebooks/book1/20/README.md。它系统性地把书中 20.120.45 全部图表映射到可复现的 Jupyter Notebook并附上 7 份补充教程PCA、自编码器、VAE、词嵌入。读完本文你将掌握如何按图号定位并运行每一个降维实验、PCA 家族经典 PCA、概率 PCA、混合 PPCA、核 PCA的数学与代码对照、自编码器/VAE 与 PCA 的本质联系以及 skip-gram 词嵌入的实现入口从而把书中理论快速落地为可运行的 Python 代码。一、文档定位一张图号到 Notebook 的完整映射表该 README 是典型的图索引型章节文档包含两个核心部分Figures 表20.120.45共 45 个图号其中部分图号对应多个子图与Supplementary material 表7 个补充实验。它的价值在于书中每一个印刷图表都能在仓库中找到对应的可运行 Notebook且多数图表同时附有渲染好的静态图存放于 pml-book 的 book1-figures 目录本仓库的 notebooks/figures 下亦有部分 PDF 输出。从仓库实际文件看notebooks/book1/20/目录当前包含 34 个 Notebook覆盖了从线性 PCA 到深度生成模型再到词向量的完整降维技术栈| 技术主题 | Notebook | 对应图号 | |--|--|--| | 经典 PCA 二维投影 | pcaDemo2d.ipynb | 20.1 | | PCA 手写数字可视化 | pca_digits.ipynb | 20.2 | | PCA 人脸特征脸/重构误差 | pcaImageDemo.ipynb | 20.3 | | 投影方差解释 | pca_projected_variance.ipynb | 20.4 | | 标准化对 PCA 的影响 | pcaStandardization.ipynb | 20.5 | | 过拟合与重构误差曲线 | pcaOverfitDemo.ipynb | 20.6、20.7、20.8 | | PCA 的 EM 逐步演示 | pcaEmStepByStep.ipynb | 20.10 | | 混合概率 PCA | mixPpcaDemo.ipynb | 20.12 | | 二元因子分析 | binary_fa_demo.ipynb | 20.13 | | 自编码器TF2 | ae_mnist_tf.ipynb | 20.17、20.18、20.19、20.21 | | 卷积自编码器 | ae_mnist_conv.ipynb | - | | VAECelebA/MNIST | vae_celeba_tf.ipynb、vae_mnist_conv_lightning.ipynb | 20.27 等 | | 流形学习Swiss roll、手写数字 | manifold_swiss_sklearn.ipynb、manifold_digits_sklearn.ipynb | 20.34 等 | | 核 PCA | kpcaScholkopf.ipynb | 20.35 | | skip-gram 词嵌入与词类比 | skipgram_torch.ipynb、word_analogies_torch.ipynb | 补充材料 |二、Figures 表逐条继承45 个图号对应的 Notebook 清单以下完整继承原文档 Figures 表全部内容外部图床链接已按仓库规范省略Notebook 链接已统一转换为仓库根目录相对路径。表内为空的 Notebook 项表示书中该图直接引用 pml-book 的 book1-figures 静态图仓库仅提供图号对应关系| 图号 | Notebook | 说明 | |--|--|--| | 20.1 | pcaDemo2d.ipynb | PCA 二维数据投影到一维子空间 | | 20.2 | pca_digits.ipynb | 手写数字的 PCA 散点可视化 | | 20.3 | pcaImageDemo.ipynb | Olivetti 人脸特征脸与重构 | | 20.4 | pca_projected_variance.ipynb | 各主成分投影方差 | | 20.5 | pcaStandardization.ipynb | 数据标准化前后 PCA 方向差异 | | 20.6 | pcaOverfitDemo.ipynb | 训练/测试集重构误差 vs 主成分数 K | | 20.7 | pcaOverfitDemo.ipynb | 碎石图screeplot与方差解释占比 | | 20.8 | pcaOverfitDemo.ipynb | PCA 模型 profile 对数似然曲线elbow 选 K | | 20.9 | - | 静态图book1-figures | | 20.10 | pcaEmStepByStep.ipynb | PCA 的 EM 迭代逐步演示 | | 20.11 | - | 静态图book1-figures | | 20.12 | mixPpcaDemo.ipynb | 混合概率 PCA 聚类 子空间方向 | | 20.13 | binary_fa_demo.ipynb | 二元观测数据的因子分析 | | 20.14 | - | 静态图 A/Bbook1-figures | | 20.15 | - | 静态图book1-figures | | 20.16 | - | 静态图book1-figures | | 20.17 | ae_mnist_tf.ipynb | (Fashion)MNIST 自编码器重构结果 A/B | | 20.18 | ae_mnist_tf.ipynb | 自编码器训练曲线 A/B | | 20.19 | ae_mnist_tf.ipynb | 潜在表示可视化 A/B | | 20.20 | - | 静态图book1-figures | | 20.21 | ae_mnist_tf.ipynb | 自编码器潜在流形AI 九个子图 | | 20.22 | - | 静态图book1-figures | | 20.23 | - | 静态图book1-figures | | 20.24 | fig_20_24.ipynb | 潜在变量模型相关图 A/B | | 20.25 | fig_20_25.ipynb | 图 A/B | | 20.26 | fig_20_26.ipynb | 图 A/B | | 20.27 | vae_mnist_conv_lightning.ipynb | 卷积 VAEPyTorch Lightning图 A/B | | 20.28 | - | 静态图book1-figures | | 20.29 | - | 静态图 A/B/Cbook1-figures | | 20.30 | fig_20_30.ipynb | - | | 20.31 | fig_20_31.ipynb | - | | 20.32 | - | 静态图 A/Bbook1-figures | | 20.33 | fig_20_33.ipynb | - | | 20.34 | manifold_swiss_sklearn.ipynb | Swiss roll 流形学习 | | 20.35 | kpcaScholkopf.ipynb | 核 PCA 玩具示例RBF 核 | | 20.36 | fig_20_36.ipynb | - | | 20.37 | fig_20_37.ipynb | - | | 20.38 | fig_20_38.ipynb | - | | 20.39 | - | 静态图book1-figures | | 20.40 | - | 静态图book1-figures | | 20.41 | fig_20_41.ipynb | - | | 20.42 | - | 静态图book1-figures | | 20.43 | - | 静态图 JPGbook1-figures | | 20.44 | - | 静态图 A/Bbook1-figures | | 20.45 | - | 静态图book1-figures |使用建议fig_20_XX.ipynb这类命名直接对应图号适合按图检索pca*.ipynb与ae_*、vae_*等命名按方法组织适合按算法学习。多数 Notebook 以superimport自举安装依赖可直接在 Jupyter/Colab 中逐格运行。三、PCA 系列 Notebook从二维投影到选 K三件套第 20 章前半部分围绕 PCA 展开仓库提供了 6 个专项 Notebook对应书中 20.120.10 的主要图示。其对应的脚本源码位于 deprecated/scripts同名.py文件是理解每个 Notebook 数学细节的最直接入口。3.1 pcaDemo2d.ipynb图 20.1几何直觉二维高斯数据协方差矩阵对角为 3、非对角为 1.5即相关系数 0.5投影到一维 PCA 子空间用红圈表示原始样本、x表示投影点、蓝色线段连接投影前后直观展示 PCA 是正交投影到最大方差方向。源码见 pcaDemo2d.py核心是sklearn.decomposition.PCA(1)的fit_transform与inverse_transform配对投影线由pca.components_与均值X_mean张成。3.2 pcaImageDemo.ipynb图 20.3特征脸与重构误差使用sklearn.datasets.fetch_olivetti_faces64×64 灰度人脸演示四个子主题源码见 pcaImageDemo.py特征脸对去均值后的数据XC X - mu做 PCApca.components_的前 3 个基向量即特征脸图 20.3 上部体现了 PCA 基是数据自适应基而非固定 DCT/小波基重构对第 125 张人脸分别用 K 5、10、20 以及满秩matrix_rank(X)个主成分重构Xrecon Z[:, :k] V[:k, :] muK 越大细节越清晰重构误差曲线遍历 K 从 0 到满秩计算 RMSE 并画K–MSE曲线方差占比np.cumsum(pca.explained_variance_) / np.sum(pca.explained_variance_)绘制累计方差解释比例是取前 K 个主成分保留多少信息的定量回答。3.3 pcaOverfitDemo.ipynb图 20.620.8如何科学地选 K这是全章最值得精读的 Notebook对应书中三个选 K 工具源码 pcaOverfitDemo.py 用 MNIST 中所有数字3前 1000 张前 500 训练/后 500 测试演示训练/测试重构误差图 20.6分别对 train/test 计算不同 K 下的 RMSE。观察点是测试集重构误差随 K 增大持续下降因为低维投影本身是有损压缩K 越大信息保留越多不会出现典型的过拟合拐点——这与分类/回归的偏差-方差权衡形成鲜明对比值得结合书中讨论理解。碎石图与方差解释图 20.7pca.explained_variance_前 50 个特征值画 screeplot寻找陡降后变平的拐点同时画累计方差占比曲线。Profile 对数似然图 20.8源码中log_likelihood(evals)函数逐行实现书中公式 (20.30) 与 (20.31)——把特征值分成两组保留的 L 个与其余假设两组各自服从高斯按sigma (sum((group1-mu1)^2) sum((group2-mu2)^2)) / Lmax估计公共噪声方差再以multivariate_normal.logpdf求和得到该 L 下的似然。曲线出现膝盖/肘部elbow的 L 即推荐的主成分数。这是全书用概率模型选模型复杂度思想在降维中的直接体现。3.4 其余 PCA Notebookpca_digits.ipynb图 20.2手写数字如 MNIST经 PCA 降到二维后的散点分布观察数字类别在低维空间的聚集结构pca_projected_variance.ipynb图 20.4单独考察每个主成分方向上的投影方差对应特征值即方向方差pcaStandardization.ipynb图 20.5同一数据标准化前后 PCA 主轴方向发生旋转的经典警示——量纲不一致时未标准化的 PCA 会被大尺度特征主导pcaEmStepByStep.ipynb图 20.10把 PCA 视为潜变量模型用 EM 迭代E 步投影、M 步更新载荷矩阵逐步逼近 SVD 解对应书中概率 PCAPPCA的 EM 视角。四、概率 PCA、混合 PPCA 与因子分析从判别式到生成式4.1 mixPpcaDemo.ipynb图 20.12混合概率 PCA 的完整 EM 实现该 Notebook 演示混合 PPCAMixture of PPCA数据由 K 个簇生成每个簇是低维潜变量 x 经载荷矩阵 Wk 映射到高维可见空间并加各向同性噪声 ε ~ N(0, σ²I)的生成模型即z Wx μ ε。源码 mixPpcaDemo.py 是一个不依赖 scikit-learn、手写全部数学的实现非常适合对照推导参数初始化mixture_ppca_parameter_initialization先用 K-means 跑 10 轮得到簇中心 μ 与隶属关系据此初始化簇比例 π、载荷矩阵 W随机正态、噪声方差 σ²对应 Tipping Bishop 论文中的初始化策略EM 迭代mixture_ppca_expectation_maximization核心更新式为E 步计算后验责任R_ni p(zn|i)·πi / p(zn)实现时在 log 域用scipy.special.logsumexp做 log-sum-exp 数值稳定处理源码注释明确指向书中 2.5.4 节M 步μi Σ R_ni·zn / Σ R_ni更新中心Si 1/(πi·N)·Σ R_ni·(zn-μi)(zn-μi)更新加权协方差再据此闭式更新 W 与 σ²可视化对每个簇画出μ ± 2·sqrt(σ²)·W张成的 PC 方向线段与 2σ 置信椭圆。demo 中分别以 K1 与 K10 在环形合成数据上运行直观展示每个簇自己的局部主子空间。4.2 binary_fa_demo.ipynb图 20.13二元观测的因子分析当观测是二元变量如答题对错时高斯噪声假设不再成立需用 logistic 链接的因子模型。该 Notebook 展示 EM 估计潜因子并重建二元观测的模式是第 20 章把离散观测 连续潜变量结合的代表性示例同主题脚本见 binary_fa_demo.py。4.3 图中静态图背后的理论脉络图 20.920.16表中原文档对图 20.9、20.11、20.1420.16 仅给出静态图。结合书名与代码可以推断这一区间对应书中概率 PCA 的似然面、潜变量先验/后验、以及因子分析与 PCA 的等价性讨论——例如图 20.12 的 mixPpcaDemo 与图 20.13 的 binary_fa 共同构成概率化 PCA 家族PPCA → 混合 PPCA → 一般因子分析的完整叙事。这部分无 Notebook 时建议先跑通 20.10 的 EM 演示建立直觉。五、自编码器与 VAE非线性降维的深度实现5.1 ae_mnist_tf.ipynb图 20.1720.21TensorFlow 2 自编码器图 20.1720.19 与 20.21 全部由 ae_mnist_tf.ipynb 复现覆盖(Fashion)MNIST 的自编码器重构效果A/B 子图、训练损失曲线、潜在表示bottleneck 层散点以及潜在空间二维流形——即在二维隐变量上采样并解码观察生成的图像随隐变量连续变化图 20.21 的 AI 九个子图展示不同潜变量取值对应的生成图像。这一实验直接支撑书中自编码器是 PCA 的非线性推广线性自编码器的最优解恰好等价于 PCA的结论对应脚本 linear_autoencoder_pca_tf.py 专门演示该等价性。仓库中同主题变体ae_mnist_conv.ipynb卷积自编码器与补充材料中的 ae_mnist_gdl_tf.ipynbGDL 教材配套版。5.2 VAE 系列图 20.27 等vae_mnist_conv_lightning.ipynb图 20.27 A/BPyTorch Lightning 实现的卷积 VAE展示 MNIST 重构与生成vae_celeba_tf.ipynbTF2 实现的 CelebA 人脸 VAE补充材料项vae_mnist_gdl_tf.ipynbGDL 配套版 MNIST VAE补充材料项。VAE 在降维语境下的意义它以 ELBO 为目标把低维潜变量 z 解码器 p(x|z)的训练变成可微优化从而获得比 PCA 更强的非线性、生成式低维表示是第 20 章从压缩走向生成的桥梁仓库另有独立的 vae 子项目提供更完整的实验框架。六、流形学习与核 PCA非线性降维的另一条路线manifold_swiss_sklearn.ipynb图 20.34在经典 Swiss roll 数据集上对比多种流形学习算法ISOMAP、LLE、MDS、t-SNE 等基于 scikit-learn 的manifold模块理解降维算法在展开弯曲流形上的差异manifold_digits_sklearn.ipynb同样方法应用于手写数字观察数字类别在非线性低维嵌入中的分离度脚本 manifold_digits_sklearn.pykpcaScholkopf.ipynb图 20.35核 PCA 的教科书级实现源码 kpcaScholkopf.py 完整手写了 RBF 核 PCA 流程值得逐行对照构造核矩阵K exp(-pdist(patterns)**2 / rbf_var)rbf_var0.1特征空间中心化K_n K - unitK - Kunit unitKunit这是核 PCA 最容易出错的一步——必须在核空间减去均值对K_n做特征分解特征向量按1/sqrt(eval)归一化测试点投影K_test_n evecs其中测试核矩阵同样做中心化处理最后以等高线图展示每个核主成分方向上的响应并标注对应特征值。这一系列演示了核技巧如何让 PCA 捕捉线性不可分的结构与第 20.4 节流形学习互为补充。七、补充材料从降维到词嵌入skip-gram原文档 Supplementary material 表给出 7 个专项教程完整继承如下按仓库规范Colab 外部链接已替换为仓库内相对路径| 标题 | 软件 | 仓库 Notebook | |--|--|--| | PCA | Sklearn | pca.ipynb | | (Fashion)MNIST 自编码器 | TF2 | ae_mnist_tf.ipynb | | (Fashion)MNIST 自编码器GDL 版 | TF2 | ae_mnist_gdl_tf.ipynb | | CelebA VAE | TF2 | vae_celeba_tf.ipynb | | MNIST VAEGDL 版 | TF2 | vae_mnist_gdl_tf.ipynb | | Skip-gram 负采样D2L 14.3 | PyTorch | skipgram_torch.ipynb | | Skip-gram 词类比D2L 14.7 | PyTorch | word_analogies_torch.ipynb |其中skip-gram 词嵌入是第 20 章降维在 NLP 的应用的落点词向量本质是把高维共现/词频空间压到低维稠密表示king - man woman ≈ queen式的词类比即低维空间中向量算术的体现。仓库还提供了 JAX 实现变体 skipgram_jax.ipynb 与 word_analogies_jax.ipynb方便对照 PyTorch 版本理解框架差异。八、运行环境与复现建议本章 Notebook 普遍以superimport开头自动安装/配置依赖仓库根目录的 pyproject.toml 与 requirements.txt 定义了完整依赖集依赖栈包括 scikit-learnPCA、流形学习、TensorFlow 2自编码器/VAE、PyTorchskip-gram与 JAX可选变体建议按先线性后非线性顺序推进pcaDemo2d→pcaImageDemo→pcaOverfitDemo建立 PCA 直觉与选 K 方法→mixPpcaDemo/binary_fa_demo概率化视角→ 自编码器/VAE非线性与生成式→ 流形学习/核 PCA非线性几何→ skip-gramNLP 应用涉及数据集MNIST、Fashion-MNIST、CelebA、Olivetti faces的 Notebook 首次运行需联网下载纯数学演示如 mixPpcaDemo、kpcaScholkopf使用合成数据可在离线环境秒级复现仓库根目录 README.md 与 CHANGELOG_py_to_nb.md 说明了脚本 → Notebook的迁移历史本章同名.py脚本位于 deprecated/scripts作为 Notebook 的可读源码版本保留二者可互为对照。九、小结notebooks/book1/20/README.md 虽然只是一张映射表却是第 20 章从理论通往代码的导航图45 个图号 7 份补充材料完整覆盖了 PCA 家族经典 PCA、概率 PCA、混合 PPCA、核 PCA、因子分析、非线性降维流形学习、自编码器、VAE与向量语义skip-gram三大板块。配合 deprecated/scripts 下的手写实现尤其是 pcaOverfitDemo.py 中逐行对应书中公式 20.30/20.31 的 profile 似然以及 mixPpcaDemo.py 与 kpcaScholkopf.py 的完整数学实现你可以把每一个图背后为什么这么做彻底吃透并直接复现书中的全部降维实验。赞分享机器学习深度学习【免费下载链接】pyprobmlPython code for Probabilistic Machine learning book by Kevin Murphy项目地址https://gitcode.com/gh_mirrors/py/pyprobml点击查看免费下载相关推荐Umi-OCR免费离线 OCR记账/教师/开发者的 4 个高频用法Umi OCR免费离线 OCR记账/教师/开发者的 4 个高频用法 在扫描版 PDF 里按 CtrlF怎么搜都搜不到高亮。 Umi OCR 是一款 免费OCR桌面应用Python 机器学习降维实战PCA、LDA 与核 PCA 的完整实现指南python-machine-learning-book 第 5 章Python 机器学习降维实战PCA、LDA 与核 PCA 的完整实现指南python machine learning book 第 5 章 本指南以机器学习教程Go语言变量与常量使用技巧For-learning-Go-Tutorial初学者必备指南Go语言变量与常量使用技巧For learning Go Tutorial初学者必备指南 For learning Go Tutorial是一份面向Go语言初上一篇AO Cloud 的 Coder 工作区模板实战基于 Docker 的沙箱镜像重烤与哈希校验全解析下一篇Dogecoin 0.14.1 发行说明深度解读RPC 接口变更、挖矿模板兼容与 UTXO 缓存内存管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考