From 191e7ddb0affd4d4a677aa2c1e604b6caeeb1feb Mon Sep 17 00:00:00 2001 From: loopyme Date: Thu, 13 Jun 2019 19:38:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B02-5=E5=88=B00.21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/24.md | 209 ++++++++++++++++++++++------------------------------- 1 file changed, 88 insertions(+), 121 deletions(-) diff --git a/docs/24.md b/docs/24.md index a42c7e7..7b9b296 100644 --- a/docs/24.md +++ b/docs/24.md @@ -25,27 +25,25 @@ PCA 用于对一组连续正交分量中的多变量数据集进行方差最大 [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_pca_vs_fa_model_selection_0011.png](img/1c25ce7b0d4e2c7da1f0e73d2565c431.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html) -例子: - -* [Comparison of LDA and PCA 2D projection of Iris dataset](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-lda-py) -* [Model selection with Probabilistic PCA and Factor Analysis (FA)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-fa-model-selection-py) +>示例: +>* [Comparison of LDA and PCA 2D projection of Iris dataset](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-lda-py) +>* [Model selection with Probabilistic PCA and Factor Analysis (FA)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-fa-model-selection-py) ### 2.5.1.2\. 增量PCA (Incremental PCA) [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA") 对象非常有用, 但对大型数据集有一定的限制。 最大的限制是 [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA") 仅支持批处理,这意味着所有要处理的数据必须适合主内存。 [`IncrementalPCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA "sklearn.decomposition.IncrementalPCA") 对象使用不同的处理形式使之允许部分计算, 这一形式几乎和 [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA") 以小型批处理方式处理数据的方法完全匹配。 [`IncrementalPCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA "sklearn.decomposition.IncrementalPCA") 可以通过以下方式实现核外(out-of-core)主成分分析: -> * 使用 `partial_fit` 方法从本地硬盘或网络数据库中以此获取数据块。 -> * 通过 `numpy.memmap` 在一个 memory mapped file 上使用 fit 方法。 -> -> [`IncrementalPCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA "sklearn.decomposition.IncrementalPCA") 仅存储成分和噪声方差的估计值,并按顺序递增地更新解释方差比([explained_variance_ratio_](#id28))。 +* 使用 `partial_fit` 方法从本地硬盘或网络数据库中以此获取数据块。 +* 通过 `numpy.memmap` 在一个 memory mapped file 上使用 fit 方法。 -这就是为什么内存使用取决于每个批次的样本数,而不是数据集中要处理的样本数。 +[`IncrementalPCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA "sklearn.decomposition.IncrementalPCA") 类为了增量式的更新 explained_variance_ratio_ ,仅需要存储估计出的分量和噪声方差。 这就是为什么内存使用量依赖于每个批次的样本数量,而不是数据集中需要处理的样本总量。 -[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_incremental_pca_0011.png](img/e84b0861711b65f28923da7c268645e7.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_incremental_pca.html)[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_incremental_pca_0021.png](img/22c1b7663568bf6c404a07778507a93e.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_incremental_pca.html) +在应用SVD之前,[`IncrementalPCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA "sklearn.decomposition.IncrementalPCA")就像[`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA)一样,以每个特征的输入数据为中心,但不缩放输入数据。 -Examples: +[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_incremental_pca_0011.png](img/e84b0861711b65f28923da7c268645e7.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_incremental_pca.html)[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_incremental_pca_0021.png](img/22c1b7663568bf6c404a07778507a93e.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_incremental_pca.html) -* [Incremental PCA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_incremental_pca.html#sphx-glr-auto-examples-decomposition-plot-incremental-pca-py) +>示例 +>* [Incremental PCA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_incremental_pca.html#sphx-glr-auto-examples-decomposition-plot-incremental-pca-py) ### 2.5.1.3\. PCA 使用随机SVD @@ -67,13 +65,11 @@ Examples: 注意:选择参数 `svd_solver='randomized'` 的 [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA"),在执行 `inverse_transform` 时, 并不是 `transform` 的确切的逆变换操作(即使 参数设置为默认的 `whiten=False`) -例子: - -* [Faces recognition example using eigenfaces and SVMs](https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py) -* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) - -参考文献: +>示例: +>* [Faces recognition example using eigenfaces and SVMs](https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py) +>* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) +>参考文献: * [“Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions”](http://arxiv.org/abs/0909.4061) Halko, et al., 2009 ### 2.5.1.4\. 核 PCA @@ -84,9 +80,8 @@ Examples: [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_kernel_pca_0011.png](img/64ecb0afa71752378a987a33e1e4e76f.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_kernel_pca.html) -示例: - -* [Kernel PCA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_kernel_pca.html#sphx-glr-auto-examples-decomposition-plot-kernel-pca-py) +>示例: +>* [Kernel PCA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_kernel_pca.html#sphx-glr-auto-examples-decomposition-plot-kernel-pca-py) ### 2.5.1.5\. 稀疏主成分分析 ( SparsePCA 和 MiniBatchSparsePCA ) @@ -105,27 +100,20 @@ Principal component analysis(主成分分析) ([`PCA`](https://scikit-learn. 请注意,有多种不同的计算稀疏PCA 问题的公式。 这里使用的方法基于 [[Mrl09]](#mrl09) 。优化问题的解决是一个带有惩罚项(L1范数的) ![\ell_1](img/3bf32d926cdf24f440b6b831f0d9cc37.jpg) 的一个 PCA 问题(dictionary learning(字典学习)): -![(U^*, V^*) = \underset{U, V}{\operatorname{arg\,min\,}} & \frac{1}{2} - ||X-UV||_2^2+\alpha||V||_1 \\ - \text{subject to\,} & ||U_k||_2 = 1 \text{ for all } - 0 \leq k < n_{components}](img/d6d6e6638cd01ead4811579660e36b44.jpg) +![(U^*, V^*) = \underset{U, V}{\operatorname{arg\,min\,}} & \frac{1}{2}||X-UV||_2^2+\alpha||V||_1 \\\text{subject to\,} & ||U_k||_2 = 1 \text{ for all }0 \leq k < n_{components}](img/d6d6e6638cd01ead4811579660e36b44.jpg) 导致稀疏(sparsity-inducing)的 ![\ell_1](img/3bf32d926cdf24f440b6b831f0d9cc37.jpg) 规范也可以避免当训练样本很少时从噪声中学习成分。可以通过超参数 `alpha` 来调整惩罚程度(从而减少稀疏度)。值较小会导致温和的正则化因式分解,而较大的值将许多系数缩小到零。 -Note - -虽然本着在线算法的精神, [`MiniBatchSparsePCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.MiniBatchSparsePCA.html#sklearn.decomposition.MiniBatchSparsePCA "sklearn.decomposition.MiniBatchSparsePCA") 类不实现 `partial_fit` , 因为在线算法沿特征方向,而不是样本方向。 - -示例: - -* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) +> **注意** +>虽然本着在线算法的精神, [`MiniBatchSparsePCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.MiniBatchSparsePCA.html#sklearn.decomposition.MiniBatchSparsePCA "sklearn.decomposition.MiniBatchSparsePCA") 类不实现 `partial_fit` , 因为在线算法沿特征方向,而不是样本方向。 -参考文献: +>示例: +>* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) -| [[Mrl09]](#id5) | [“Online Dictionary Learning for Sparse Coding”](http://www.di.ens.fr/sierra/pdfs/icml09.pdf) J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009 | - -| [[Jen09]](#id4) | [“Structured Sparse Principal Component Analysis”](www.di.ens.fr/~fbach/sspca_AISTATS2010.pdf) R. Jenatton, G. Obozinski, F. Bach, 2009 | +>参考文献: +>* [Mrl09] [“Online Dictionary Learning for Sparse Coding”](http://www.di.ens.fr/sierra/pdfs/icml09.pdf) J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009 +>* [Jen09] [“Structured Sparse Principal Component Analysis”](www.di.ens.fr/~fbach/sspca_AISTATS2010.pdf) R. Jenatton, G. Obozinski, F. Bach, 2009 ## 2.5.2\. 截断奇异值分解和隐语义分析 @@ -133,9 +121,8 @@ Note 当截断的 SVD被应用于 term-document矩阵(由 `CountVectorizer` 或 `TfidfVectorizer` 返回)时,这种转换被称为 [latent semantic analysis](http://nlp.stanford.edu/IR-book/pdf/18lsi.pdf) (LSA), 因为它将这样的矩阵转换为低纬度的 “semantic(语义)” 空间。 特别地是 LSA 能够抵抗同义词和多义词的影响(两者大致意味着每个单词有多重含义),这导致 term-document 矩阵过度稀疏,并且在诸如余弦相似性的度量下表现出差的相似性。 -Note - -LSA 也被称为隐语义索引 LSI,尽管严格地说它是指在持久索引(persistent indexes)中用于信息检索的目的。 +> **注意** +> LSA 也被称为隐语义索引 LSI,尽管严格地说它是指在持久索引(persistent indexes)中用于信息检索的目的。 数学表示中, 训练样本 ![X](img/43c1fea57579e54f80c0535bc582626f.jpg) 用截断的SVD产生一个低秩的( low-rank)近似值 ![X](img/43c1fea57579e54f80c0535bc582626f.jpg) : @@ -147,21 +134,18 @@ LSA 也被称为隐语义索引 LSI,尽管严格地说它是指在持久索引 ![X' = X V_k](img/6081a672a0d5d6cc7563c531599dde91.jpg) -Note - -自然语言处理(NLP) 和信息检索(IR) 文献中的 LSA 的大多数处理方式是交换矩阵 ![X](img/43c1fea57579e54f80c0535bc582626f.jpg) 的坐标轴,使其具有 `n_features` × `n_samples` 的形状。 我们以 scikit-learn API 相匹配的不同方式呈现 LSA, 但是找到的奇异值是相同的。 +> **注意** +>自然语言处理(NLP) 和信息检索(IR) 文献中的 LSA 的大多数处理方式是交换矩阵 ![X](img/43c1fea57579e54f80c0535bc582626f.jpg) 的坐标轴,使其具有 `n_features` × `n_samples` 的形状。 我们以 scikit-learn API 相匹配的不同方式呈现 LSA, 但是找到的奇异值是相同的。 [`TruncatedSVD`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html#sklearn.decomposition.TruncatedSVD "sklearn.decomposition.TruncatedSVD") 非常类似于 [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA"), 但不同之处在于它工作在样本矩阵 ![X](img/43c1fea57579e54f80c0535bc582626f.jpg) 而不是它们的协方差矩阵。 当从特征值中减去 ![X](img/43c1fea57579e54f80c0535bc582626f.jpg) 的每列(每个特征per-feature)的均值时,在得到的矩阵上应用 truncated SVD 相当于 PCA 。 实际上,这意味着 [`TruncatedSVD`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html#sklearn.decomposition.TruncatedSVD "sklearn.decomposition.TruncatedSVD") 转换器(transformer)接受 `scipy.sparse` 矩阵,而不需要对它们进行密集(density),因为即使对于中型大小文档的集合,密集化 (densifying)也可能填满内存。 虽然 [`TruncatedSVD`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html#sklearn.decomposition.TruncatedSVD "sklearn.decomposition.TruncatedSVD") 转换器(transformer)可以在任何(稀疏的)特征矩阵上工作,但还是建议在 LSA/document 处理设置中,在 tf–idf 矩阵上的原始频率计数使用它。 特别地,应该打开子线性缩放(sublinear scaling)和逆文档频率(inverse document frequency) (`sublinear_tf=True, use_idf=True`) 以使特征值更接近于高斯分布,补偿 LSA 对文本数据的错误假设。 -示例: - -* [Clustering text documents using k-means](https://scikit-learn.org/stable/auto_examples/text/document_clustering.html#sphx-glr-auto-examples-text-document-clustering-py) - -参考文献: +>示例: +>* [Clustering text documents using k-means](https://scikit-learn.org/stable/auto_examples/text/document_clustering.html#sphx-glr-auto-examples-text-document-clustering-py) -* Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze (2008), _Introduction to Information Retrieval_, Cambridge University Press, chapter 18: [Matrix decompositions & latent semantic indexing](http://nlp.stanford.edu/IR-book/pdf/18lsi.pdf) +>参考文献: +>* Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze (2008), _Introduction to Information Retrieval_, Cambridge University Press, chapter 18: [Matrix decompositions & latent semantic indexing](http://nlp.stanford.edu/IR-book/pdf/18lsi.pdf) ## 2.5.3\. 词典学习 @@ -181,9 +165,8 @@ Note 单个样本的分割编码具有长度 `2 * n_components` ,并使用以下规则构造: 首先,计算长度为 `n_components` 的常规编码。然后, `split_code` 的第一个 `n_components` 条目将用正常编码向量的正部分填充。分割编码的第二部分用编码向量的负部分填充,只有一个正号。因此, split_code 是非负的。 -示例: - -* [Sparse coding with a precomputed dictionary](https://scikit-learn.org/stable/auto_examples/decomposition/plot_sparse_coding.html#sphx-glr-auto-examples-decomposition-plot-sparse-coding-py) +>示例: +>* [Sparse coding with a precomputed dictionary](https://scikit-learn.org/stable/auto_examples/decomposition/plot_sparse_coding.html#sphx-glr-auto-examples-decomposition-plot-sparse-coding-py) ### 2.5.3.2\. 通用词典学习 @@ -194,10 +177,7 @@ Note 词典学习是通过交替更新稀疏编码来解决的优化问题,作为解决多个 Lasso 问题的一个解决方案,考虑到字典固定,然后更新字典以最好地适合稀疏编码。 -![(U^*, V^*) = \underset{U, V}{\operatorname{arg\,min\,}} & \frac{1}{2} - ||X-UV||_2^2+\alpha||U||_1 \\ - \text{subject to\,} & ||V_k||_2 = 1 \text{ for all } - 0 \leq k < n_{\mathrm{atoms}}](img/9b4b00422c0cec29f80a03fe1d772100.jpg) +![(U^*, V^*) = \underset{U, V}{\operatorname{arg\,min\,}} & \frac{1}{2}||X-UV||_2^2+\alpha||U||_1 \\\text{subject to\,} & ||V_k||_2 = 1 \text{ for all }0 \leq k < n_{\mathrm{atoms}}](img/9b4b00422c0cec29f80a03fe1d772100.jpg) **[![pca_img2](img/9a55689143b2e4d90adcdfe1f95b9ffd.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html) [![dict_img2](img/86f7969b00fb3d0914f0bababac102a0.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html)** @@ -208,12 +188,10 @@ Note [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_image_denoising_0011.png](img/1cde7e5f92efe9056f9f53e23ea04102.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_image_denoising.html) -示例: - -* [Image denoising using dictionary learning](https://scikit-learn.org/stable/auto_examples/decomposition/plot_image_denoising.html#sphx-glr-auto-examples-decomposition-plot-image-denoising-py) - -参考文献: +>示例: +>* [Image denoising using dictionary learning](https://scikit-learn.org/stable/auto_examples/decomposition/plot_image_denoising.html#sphx-glr-auto-examples-decomposition-plot-image-denoising-py) +>参考文献: * [“Online dictionary learning for sparse coding”](http://www.di.ens.fr/sierra/pdfs/icml09.pdf) J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009 ### 2.5.3.3\. 小批量字典学习 @@ -224,13 +202,15 @@ Note 估计器还实现了 `partial_fit`, 它通过在一个小批处理中仅迭代一次来更新字典。 当在线学习的数据从一开始就不容易获得,或者数据超出内存时,可以使用这种迭代方法。 -[![https://scikit-learn.org/stable/_images/sphx_glr_plot_dict_face_patches_001.png](img/b335c88114c4fec7e72304006810c82c.jpg)](https://scikit-learn.org/stable/auto_examples/cluster/plot_dict_face_patches.html) - -**字典学习聚类** -注意,当使用字典学习来提取表示(例如,用于稀疏编码)时,聚类可以是学习字典的良好中间方法。 例如,[`MiniBatchKMeans`](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MiniBatchKMeans.html#sklearn.cluster.MiniBatchKMeans "sklearn.cluster.MiniBatchKMeans") 估计器能高效计算并使用 `partial_fit` 方法实现在线学习。 -示例: 在线学习面部部分的字典 [Online learning of a dictionary of parts of faces](https://scikit-learn.org/stable/auto_examples/cluster/plot_dict_face_patches.html#sphx-glr-auto-examples-cluster-plot-dict-face-patches-py) +>**字典学习聚类** +> +>[![https://scikit-learn.org/stable/_images/sphx_glr_plot_dict_face_patches_001.png](img/b335c88114c4fec7e72304006810c82c.jpg)](https://scikit-learn.org/stable/auto_examples/cluster/plot_dict_face_patches.html) +> +>注意,当使用字典学习来提取表示(例如,用于稀疏编码)时,聚类可以是学习字典的良好中间方法。 例如,[`MiniBatchKMeans`](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MiniBatchKMeans.html#sklearn.cluster.MiniBatchKMeans "sklearn.cluster.MiniBatchKMeans") 估计器能高效计算并使用 `partial_fit` 方法实现在线学习。 +> +>示例: 在线学习面部部分的字典 [Online learning of a dictionary of parts of faces](https://scikit-learn.org/stable/auto_examples/cluster/plot_dict_face_patches.html#sphx-glr-auto-examples-cluster-plot-dict-face-patches-py) ## 2.5.4\. 因子分析 @@ -257,7 +237,7 @@ Note 两个模型基都基于高斯分布是低阶协方差矩阵的假设。 因为这两个模型都是概率性的,所以它们可以集成到更复杂的模型中, 例如因子分析器的混合。如果隐变量基于非高斯分布,则得到完全不同的模型(例如, [`FastICA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.FastICA.html#sklearn.decomposition.FastICA "sklearn.decomposition.FastICA") )。 -因子分析 _可以_ 产生与 :class:[`](#id13)PCA`类似的成分(例如其加载矩阵的列)。 然而,这些成分没有通用的性质(例如它们是否是正交的): +因子分析 _可以_ 产生与`PCA`类似的成分(例如其加载矩阵的列)。 然而,这些成分没有通用的性质(例如它们是否是正交的): **[![pca_img3](img/9a55689143b2e4d90adcdfe1f95b9ffd.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html) [![fa_img3](img/1f8c02d4fdbdbcaa014972bca5620cf3.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html)** @@ -269,9 +249,8 @@ Note [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_pca_vs_fa_model_selection_0021.png](img/30fc2a610fc7de5c19317e1fc584765f.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html) -示例: - -* [Model selection with Probabilistic PCA and Factor Analysis (FA)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-fa-model-selection-py) +>示例: +>* [Model selection with Probabilistic PCA and Factor Analysis (FA)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-fa-model-selection-py) ## 2.5.5\. 独立成分分析(ICA) @@ -285,11 +264,10 @@ ICA 也可以用于具有稀疏子成分的非线性分解: **[![pca_img4](img/9a55689143b2e4d90adcdfe1f95b9ffd.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html) [![ica_img4](img/390e2bdab30b6e7421082f13e8cfd6b0.jpg)](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html)** -示例: - -* [Blind source separation using FastICA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_ica_blind_source_separation.html#sphx-glr-auto-examples-decomposition-plot-ica-blind-source-separation-py) -* [FastICA on 2D point clouds](https://scikit-learn.org/stable/auto_examples/decomposition/plot_ica_vs_pca.html#sphx-glr-auto-examples-decomposition-plot-ica-vs-pca-py) -* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) +>示例: +>* [Blind source separation using FastICA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_ica_blind_source_separation.html#sphx-glr-auto-examples-decomposition-plot-ica-blind-source-separation-py) +>* [FastICA on 2D point clouds](https://scikit-learn.org/stable/auto_examples/decomposition/plot_ica_vs_pca.html#sphx-glr-auto-examples-decomposition-plot-ica-vs-pca-py) +>* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) ## 2.5.6\. 非负矩阵分解(NMF 或 NNMF) @@ -301,9 +279,7 @@ ICA 也可以用于具有稀疏子成分的非线性分解: 与 [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA") 不同,通过叠加分量而不减去,以加法方式获得向量的表示。这种加性模型对于表示图像和文本是有效的。 -> [Hoyer, 2004] [[2]](#id23) 研究表明,当处于一定约束时,[`NMF`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html#sklearn.decomposition.NMF "sklearn.decomposition.NMF") 可以产生数据集基于某子部分的表示,从而获得可解释的模型。 - -以下示例展示了与 PCA 特征面相比, [`NMF`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html#sklearn.decomposition.NMF "sklearn.decomposition.NMF") 从 Olivetti 面部数据集中的图像中发现的16个稀疏组件。 +[Hoyer, 2004] [[2]](#id23) 研究表明,当处于一定约束时,[`NMF`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html#sklearn.decomposition.NMF "sklearn.decomposition.NMF") 可以产生数据集基于某子部分的表示,从而获得可解释的模型。以下示例展示了与 PCA 特征面相比, [`NMF`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html#sklearn.decomposition.NMF "sklearn.decomposition.NMF") 从 Olivetti 面部数据集中的图像中发现的16个稀疏组件。 Unlike [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA "sklearn.decomposition.PCA"), the representation of a vector is obtained in an additive fashion, by superimposing the components, without subtracting. Such additive models are efficient for representing images and text. @@ -318,18 +294,13 @@ Unlike [`PCA`](https://scikit-learn.org/stable/modules/generated/sklearn.decompo 在 [`NMF`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html#sklearn.decomposition.NMF "sklearn.decomposition.NMF") 中,L1 和 L2 先验可以被添加到损失函数中以使模型正规化。 L2 先验使用 Frobenius 范数,而L1 先验使用 L1 范数。与 `ElasticNet` 一样, 我们通过 `l1_ratio` (![\rho](img/b91e4507d9fd7068b02f689d697f8714.jpg)) 参数和正则化强度参数 `alpha` (![\alpha](img/d8b3d5242d513369a44f8bf0c6112744.jpg)) 来控制 L1 和 L2 的组合。那么先验项是: -![\alpha \rho ||W||_1 + \alpha \rho ||H||_1 -+ \frac{\alpha(1-\rho)}{2} ||W||_{\mathrm{Fro}} ^ 2 -+ \frac{\alpha(1-\rho)}{2} ||H||_{\mathrm{Fro}} ^ 2](img/be8c80153a3cafbe4309f1fe3b62d96b.jpg) +![\alpha \rho ||W||_1 + \alpha \rho ||H||_1+ \frac{\alpha(1-\rho)}{2} ||W||_{\mathrm{Fro}} ^ 2+ \frac{\alpha(1-\rho)}{2} ||H||_{\mathrm{Fro}} ^ 2](img/be8c80153a3cafbe4309f1fe3b62d96b.jpg) 正则化目标函数为: -![d_{\mathrm{Fro}}(X, WH) -+ \alpha \rho ||W||_1 + \alpha \rho ||H||_1 -+ \frac{\alpha(1-\rho)}{2} ||W||_{\mathrm{Fro}} ^ 2 -+ \frac{\alpha(1-\rho)}{2} ||H||_{\mathrm{Fro}} ^ 2](img/2c1da71c882c95ba6660cdad0d976f6d.jpg) +![d_{\mathrm{Fro}}(X, WH)+ \alpha \rho ||W||_1 + \alpha \rho ||H||_1+ \frac{\alpha(1-\rho)}{2} ||W||_{\mathrm{Fro}} ^ 2+ \frac{\alpha(1-\rho)}{2} ||H||_{\mathrm{Fro}} ^ 2](img/2c1da71c882c95ba6660cdad0d976f6d.jpg) [`NMF`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html#sklearn.decomposition.NMF "sklearn.decomposition.NMF") 正则化 W 和 H . 公共函数 `non_negative_factorization` 允许通过 `regularization` 属性进行更精细的控制,将 仅W ,仅H 或两者正规化。 @@ -374,23 +345,17 @@ NMF最适用于 `fit_transform` 方法,该方法返回矩阵W.矩阵 H 被 `co ``` -示例: - -* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) -* [Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation](https://scikit-learn.org/stable/auto_examples/applications/plot_topics_extraction_with_nmf_lda.html#sphx-glr-auto-examples-applications-plot-topics-extraction-with-nmf-lda-py) -* [Beta-divergence loss functions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_beta_divergence.html#sphx-glr-auto-examples-decomposition-plot-beta-divergence-py) - -参考文献: - -| [[1]](#id16) | [“Learning the parts of objects by non-negative matrix factorization”](http://www.columbia.edu/~jwp2128/Teaching/W4721/papers/nmf_nature.pdf) D. Lee, S. Seung, 1999 | +>示例: +>* [Faces dataset decompositions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#sphx-glr-auto-examples-decomposition-plot-faces-decomposition-py) +>* [Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation](https://scikit-learn.org/stable/auto_examples/applications/plot_topics_extraction_with_nmf_lda.html#sphx-glr-auto-examples-applications-plot-topics-extraction-with-nmf-lda-py) +>* [Beta-divergence loss functions](https://scikit-learn.org/stable/auto_examples/decomposition/plot_beta_divergence.html#sphx-glr-auto-examples-decomposition-plot-beta-divergence-py) -| [[2]](#id17) | [“Non-negative Matrix Factorization with Sparseness Constraints”](http://www.jmlr.org/papers/volume5/hoyer04a/hoyer04a.pdf) P. Hoyer, 2004 | - -| [[4]](#id18) | [“SVD based initialization: A head start for nonnegative matrix factorization”](http://scgroup.hpclab.ceid.upatras.gr/faculty/stratis/Papers/HPCLAB020107.pdf) C. Boutsidis, E. Gallopoulos, 2008 | - -| [[5]](#id20) | [“Fast local algorithms for large scale nonnegative matrix and tensor factorizations.”](http://www.bsp.brain.riken.jp/publications/2009/Cichocki-Phan-IEICE_col.pdf) A. Cichocki, P. Anh-Huy, 2009 | - -| [6] | _([1](#id19), [2](#id21))_ [“Algorithms for nonnegative matrix factorization with the beta-divergence”](http://http://arxiv.org/pdf/1010.1763v3.pdf) C. Fevotte, J. Idier, 2011 | +>参考文献: +>* [1] [“Learning the parts of objects by non-negative matrix factorization”](http://www.columbia.edu/~jwp2128/Teaching/W4721/papers/nmf_nature.pdf) D. Lee, S. Seung, 1999 +>* [2] [“Non-negative Matrix Factorization with Sparseness Constraints”](http://www.jmlr.org/papers/volume5/hoyer04a/hoyer04a.pdf) P. Hoyer, 2004 +>* [4] [“SVD based initialization: A head start for nonnegative matrix factorization”](http://scgroup.hpclab.ceid.upatras.gr/faculty/stratis/Papers/HPCLAB020107.pdf) C. Boutsidis, E. Gallopoulos, 2008 +>* [5] [“Fast local algorithms for large scale nonnegative matrix and tensor factorizations.”](http://www.bsp.brain.riken.jp/publications/2009/Cichocki-Phan-IEICE_col.pdf) A. Cichocki, P. Anh-Huy, 2009 +>* [6] [“Algorithms for nonnegative matrix factorization with the beta-divergence”](http://http://arxiv.org/pdf/1010.1763v3.pdf) C. Fevotte, J. Idier, 2011 ## 2.5.7\. 隐 Dirichlet 分配(LDA) @@ -400,47 +365,49 @@ LDA 的图形模型是一个三层贝叶斯模型: ![http://sklearn.apachecn.org/cn/0.19.0/_images/lda_model_graph.png](img/30641b10b766d35775b6bbb4d21e74b7.jpg) +关于上述图形模型中出现的符号的说明,可以在Hoffman et al.(2013)中找到: + - 语料库是D个文档的集合。 + - 文档是由N个单词组成的序列。 + - 语料库中有K个主题。 + - 这些框表示重复采样。 + +在图形模型中,每个节点都是一个随机变量,在生成过程中起着一定的作用。阴影节点表示观察到的变量,未阴影节点表示隐藏的(潜在的)变量。在这种情况下,语料库中的单词是我们观察到的唯一数据。潜在变量决定了语料库中主题的随机混合和文档中单词的分布。LDA的目标是利用观察到的词语来推断隐含的主题结构。 + 当建模文本语料库时,该模型假设具有 ![D](img/e03066df748abd9273db055cb79f0f01.jpg) 文档和 ![K](img/e279b8169ddd6581c5606c868ba52fae.jpg) 主题的语料库的以下生成过程: -> 1. 对于每个主题 ![k](img/f93871977da52a6d11045d57c3e18728.jpg),绘制 ![\beta_k \sim \mathrm{Dirichlet}(\eta),\: k =1...K](img/0333d4e1607c1cab19f576a212267ec1.jpg) -> 2. 对于每个文档 ![d](img/adf83056bc2bd05628e24c40cb728b3d.jpg),绘制 ![\theta_d \sim \mathrm{Dirichlet}(\alpha), \: d=1...D](img/7f1cafe91ec3b94b27f8759724287242.jpg) -> 3. 对于文档 ![d](img/adf83056bc2bd05628e24c40cb728b3d.jpg) 中的每个单词 ![i](img/43e13b580daefe5ba754b790dfbd216c.jpg): -> -> > 1. 绘制主题索引 ![z_{di} \sim \mathrm{Multinomial}(\theta_d)](img/4a733ee899c074bde7a4d5292c9fc83e.jpg) -> > 2. 绘制观察词 ![w_{ij} \sim \mathrm{Multinomial}(beta_{z_{di}}.)](img/526e2da298d085b5fd557f49433d4143.jpg) + 1. 对于每个主题 ![k](img/f93871977da52a6d11045d57c3e18728.jpg),绘制 ![\beta_k \sim \mathrm{Dirichlet}(\eta),\: k =1...K](img/0333d4e1607c1cab19f576a212267ec1.jpg) + 2. 对于每个文档 ![d](img/adf83056bc2bd05628e24c40cb728b3d.jpg),绘制 ![\theta_d \sim \mathrm{Dirichlet}(\alpha), \: d=1...D](img/7f1cafe91ec3b94b27f8759724287242.jpg) + 3. 对于文档 ![d](img/adf83056bc2bd05628e24c40cb728b3d.jpg) 中的每个单词 ![i](img/43e13b580daefe5ba754b790dfbd216c.jpg): + 1. 绘制主题索引 ![z_{di} \sim \mathrm{Multinomial}(\theta_d)](img/4a733ee899c074bde7a4d5292c9fc83e.jpg) + 2. 绘制观察词 ![w_{ij} \sim \mathrm{Multinomial}(beta_{z_{di}}.)](img/526e2da298d085b5fd557f49433d4143.jpg) 对于参数估计,后验分布为: -![p(z, \theta, \beta |w, \alpha, \eta) = - \frac{p(z, \theta, \beta|\alpha, \eta)}{p(w|\alpha, \eta)}](img/5d0c433dc4dc7ca883ac8173e6e2096f.jpg) +![p(z, \theta, \beta |w, \alpha, \eta) = \frac{p(z, \theta, \beta|\alpha, \eta)}{p(w|\alpha, \eta)}](img/5d0c433dc4dc7ca883ac8173e6e2096f.jpg) 由于后验分布难以处理,变体贝叶斯方法使用更简单的分布 ![q(z,\theta,\beta | \lambda, \phi, \gamma)](img/8fae035cff5a2ccfbc80e38fab4907cd.jpg) 近似, 并且优化了这些变体参数 ![\lambda](img/0f92bc682b050115d03c625ce770c77d.jpg), ![\phi](img/ff5e98366afa13070d3b410c55a80db1.jpg), ![\gamma](img/6552bde3d3999c1a9728016416932af7.jpg) 最大化Evidence Lower Bound (ELBO): -![\log\: P(w | \alpha, \eta) \geq L(w,\phi,\gamma,\lambda) \overset{\triangle}{=} - E_{q}[\log\:p(w,z,\theta,\beta|\alpha,\eta)] - E_{q}[\log\:q(z, \theta, \beta)]](img/6d8b62cf31afb168e2b2acb89d6abccd.jpg) +![\log\: P(w | \alpha, \eta) \geq L(w,\phi,\gamma,\lambda) \overset{\triangle}{=} E_{q}[\log\:p(w,z,\theta,\beta|\alpha,\eta)] - E_{q}[\log\:q(z, \theta, \beta)]](img/6d8b62cf31afb168e2b2acb89d6abccd.jpg) 最大化 ELBO 相当于最小化 ![q(z,\theta,\beta)](img/2c2dcc83fc38e46810a36e59b2614a5c.jpg) 和后验 ![p(z, \theta, \beta |w, \alpha, \eta)](img/7efe29500f4af973643a15b3ed29a926.jpg) 之间的 Kullback-Leibler(KL) 散度。 [`LatentDirichletAllocation`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html#sklearn.decomposition.LatentDirichletAllocation "sklearn.decomposition.LatentDirichletAllocation") 实现在线变体贝叶斯算法,支持在线和批量更新方法。 批处理方法在每次完全传递数据后更新变分变量,在线方法从小批量数据点中更新变体变量。 -Note - -虽然在线方法保证收敛到局部最优点,最优点的质量和收敛速度可能取决于与小批量大小和学习率相关的属性。 +> **注意** +>虽然在线方法保证收敛到局部最优点,最优点的质量和收敛速度可能取决于与小批量大小和学习率相关的属性。 当 [`LatentDirichletAllocation`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html#sklearn.decomposition.LatentDirichletAllocation "sklearn.decomposition.LatentDirichletAllocation") 应用于 “document-term” 矩阵时,矩阵将被分解为 “topic-term” 矩阵和 “document-topic” 矩阵。 虽然 “topic-term” 矩阵在模型中被存储为 `components_` ,但是可以通过 `transform` 方法计算 “document-topic” 矩阵。 [`LatentDirichletAllocation`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html#sklearn.decomposition.LatentDirichletAllocation "sklearn.decomposition.LatentDirichletAllocation") 还实现了 `partial_fit` 方法。这可用于当数据被顺序提取时. -示例: - -* [Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation](https://scikit-learn.org/stable/auto_examples/applications/plot_topics_extraction_with_nmf_lda.html#sphx-glr-auto-examples-applications-plot-topics-extraction-with-nmf-lda-py) - -参考: +>示例: +>* [Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation](https://scikit-learn.org/stable/auto_examples/applications/plot_topics_extraction_with_nmf_lda.html#sphx-glr-auto-examples-applications-plot-topics-extraction-with-nmf-lda-py) -* [“Latent Dirichlet Allocation”](https://www.cs.princeton.edu/~blei/papers/BleiNgJordan2003.pdf) D. Blei, A. Ng, M. Jordan, 2003 -* [“Online Learning for Latent Dirichlet Allocation”](https://www.cs.princeton.edu/~blei/papers/HoffmanBleiBach2010b.pdf) M. Hoffman, D. Blei, F. Bach, 2010 -* [“Stochastic Variational Inference”](http://www.columbia.edu/~jwp2128/Papers/HoffmanBleiWangPaisley2013.pdf) M. Hoffman, D. Blei, C. Wang, J. Paisley, 2013 +>参考: +>* [“Latent Dirichlet Allocation”](https://www.cs.princeton.edu/~blei/papers/BleiNgJordan2003.pdf) D. Blei, A. Ng, M. Jordan, 2003 +>* [“Online Learning for Latent Dirichlet Allocation”](https://www.cs.princeton.edu/~blei/papers/HoffmanBleiBach2010b.pdf) M. Hoffman, D. Blei, F. Bach, 2010 +>* [“Stochastic Variational Inference”](http://www.columbia.edu/~jwp2128/Papers/HoffmanBleiWangPaisley2013.pdf) M. Hoffman, D. Blei, C. Wang, J. Paisley, 2013 -- GitLab