# 2.2. 流形學習
校驗者:
[@XuJianzhi](https://github.com/XuJianzhi)
[@RyanZhiNie](https://github.com/RyanZhiNie)
[@羊三](https://github.com/apachecn/scikit-learn-doc-zh)
翻譯者:
[@XuJianzhi](https://github.com/XuJianzhi)
[@羊三](https://github.com/apachecn/scikit-learn-doc-zh)
Look for the bare necessities
The simple bare necessities
Forget about your worries and your strife
I mean the bare necessities
Old Mother Nature’s recipes
That bring the bare necessities of life
– Baloo的歌 \[奇幻森林\]
[](../auto_examples/manifold/plot_compare_methods.html)
流形學習是一種非線性降維方法。其算法基于的思想是:許多數據集的維度過高只是由人為導致的。
## 2.2.1. 介紹
高維數據集會非常難以可視化。 雖然可以繪制兩維或三維的數據來顯示數據的固有結構,但與之等效的高維圖不太直觀。 為了幫助數據集結構的可視化,必須以某種方式降低維度。
通過對數據的隨機投影來實現降維是最簡單的方法。 雖然這樣做能實現數據結構一定程度的可視化,但隨機選擇投影仍有許多有待改進之處。 在隨機投影中,數據中更有趣的結構很可能會丟失。
**[](../auto_examples/manifold/plot_lle_digits.html) [](../auto_examples/manifold/plot_lle_digits.html)**
為了解決這一問題,一些監督和無監督的線性降維框架被設計出來,如主成分分析(PCA),獨立成分分析,線性判別分析等。 這些算法定義了明確的規定來選擇數據的“有趣的”線性投影。 它們雖然強大,但是會經常錯失數據中重要的非線性結構。
**[](../auto_examples/manifold/plot_lle_digits.html) [](../auto_examples/manifold/plot_lle_digits.html)**
流形學習可以被認為是一種將線性框架(如 PCA )推廣為對數據中非線性結構敏感的嘗試。 雖然存在監督變量,但是典型的流形學習問題是無監督的:它從數據本身學習數據的高維結構,而不使用預定的分類。
例子:
- 參見 [Manifold learning on handwritten digits: Locally Linear Embedding, Isomap…](../auto_examples/manifold/plot_lle_digits.html#sphx-glr-auto-examples-manifold-plot-lle-digits-py) ,手寫數字降維的例子。
- 參見 [Comparison of Manifold Learning methods](../auto_examples/manifold/plot_compare_methods.html#sphx-glr-auto-examples-manifold-plot-compare-methods-py) ,玩具 “S曲線” 數據集降維的例子。
以下概述了 scikit-learn 中可用的流形學習實現
## 2.2.2. Isomap
流形學習的最早方法之一是 Isomap 算法,等距映射(Isometric Mapping)的縮寫。 Isomap 可以被視為多維縮放(Multi-dimensional Scaling:MDS)或核主成分分析(Kernel PCA)的擴展。 Isomap 尋求一個較低維度的嵌入,它保持所有點之間的測量距離。 Isomap 可以通過 [`Isomap`](generated/sklearn.manifold.Isomap.html#sklearn.manifold.Isomap "sklearn.manifold.Isomap") 對象執行。
[](../auto_examples/manifold/plot_lle_digits.html)
### 2.2.2.1. 復雜度
Isomap 算法包括三個階段:
1. **最近鄰搜索.** Isomap 使用 [`sklearn.neighbors.BallTree`](generated/sklearn.neighbors.BallTree.html#sklearn.neighbors.BallTree "sklearn.neighbors.BallTree") 進行有效的近鄰搜索。 對于  維中  個點的  個最近鄰,代價約為 ![O[D \log(k) N \log(N)]](https://box.kancloud.cn/373566fdda1a929da3df53ecfdad9929_160x19.jpg)
2. **最短路徑圖搜索.** 最有效的已知算法是 Dijkstra 算法或 Floyd-Warshall 算法,其復雜度分別是約 ![O[N^2(k + \log(N))]](https://box.kancloud.cn/4e761d8758c650f8bc71451750a86e98_145x20.jpg) 和 ![O[N^3]](https://box.kancloud.cn/b6cdfefb596a0c4d74b2a1980ba045b3_46x20.jpg) 。 用戶可通過使用 isomap 的 path\_method 關鍵字選擇該算法。 如果未指定,則代碼嘗試為輸入數據選擇最佳算法。
3. **部分特征值分解.** 對應于  isomap核中  個最大特征值的特征向量,進行嵌入編碼。 對于密集求解器,代價約為 ![O[d N^2]](https://box.kancloud.cn/9395075a38cfe0d600266d86d5334129_55x20.jpg) 。 通常可以使用 ARPACK 求解器來減少代價。 用戶可通過使用 isomap 的 path\_method 關鍵字指定特征求解器。 如果未指定,則代碼嘗試為輸入數據選擇最佳算法。
Isomap 的整體復雜度是 ![O[D \log(k) N \log(N)] + O[N^2(k + \log(N))] + O[d N^2]](https://box.kancloud.cn/13cae86f5ea656c4459cf9e61a620dc5_408x20.jpg).
-  : 訓練數據點的個數
-  : 輸入維度
-  : 最近鄰的個數
-  : 輸出維度
參考文獻:
- [“A global geometric framework for nonlinear dimensionality reduction”](http://science.sciencemag.org/content/290/5500/2319.full)Tenenbaum, J.B.; De Silva, V.; & Langford, J.C. Science 290 (5500)
## 2.2.3. 局部線性嵌入
局部線性嵌入(LLE)通過保留局部鄰域內的距離來尋求數據的低維投影。 它可以被認為是一系列的局部主成分分析,與全局相比,找到最優的局部非線性嵌入。
局部線性嵌入可以使用 [`locally_linear_embedding`](generated/sklearn.manifold.locally_linear_embedding.html#sklearn.manifold.locally_linear_embedding "sklearn.manifold.locally_linear_embedding") 函數或其面向對象的等效方法 [`LocallyLinearEmbedding`](generated/sklearn.manifold.LocallyLinearEmbedding.html#sklearn.manifold.LocallyLinearEmbedding "sklearn.manifold.LocallyLinearEmbedding") 來實現。
[](../auto_examples/manifold/plot_lle_digits.html)
### 2.2.3.1. 復雜度
標準的 LLE 算法包括三個階段:
1. **最鄰近搜索**. 參見上述 Isomap 討論。
2. **構造權重矩陣**. ![O[D N k^3]](https://box.kancloud.cn/5859cd34ba8da30c14dccadf4f178de1_71x20.jpg). LLE 權重矩陣的構造包括每個  局部鄰域的  線性方程的解
3. **部分特征值分解**. 參見上述 Isomap 討論。
標準 LLE 的整體復雜度是 ![O[D \log(k) N \log(N)] + O[D N k^3] + O[d N^2]](https://box.kancloud.cn/c24ba9c36d43eb4999741a97cfe7cef6_334x20.jpg).
-  : 訓練數據點的個數
-  : 輸入維度
-  : 最近鄰的個數
-  : 輸出維度
參考文獻:
- [“Nonlinear dimensionality reduction by locally linear embedding”](http://www.sciencemag.org/content/290/5500/2323.full)Roweis, S. & Saul, L. Science 290:2323 (2000)
## 2.2.4. 改進型局部線性嵌入(MLLE)
關于局部線性嵌入(LLE)的一個眾所周知的問題是正則化問題。當 neighbors(鄰域)的數量多于輸入的維度數量時,定義每個局部鄰域的矩陣是不滿秩的。為解決這個問題,標準的局部線性嵌入算法使用一個任意正則化參數  ,它的取值受局部權重矩陣的跡的影響。雖然可以認為  ,即解收斂于嵌入情況,但是不保證最優解情況下  。此問題說明,在嵌入時此問題會扭曲流形的內部幾何形狀,使其失真。
解決正則化問題的一種方法是對鄰域使用多個權重向量。這就是改進型局部線性嵌入(MLLE)算法的精髓。MLLE 可被執行于函數 [`locally_linear_embedding`](generated/sklearn.manifold.locally_linear_embedding.html#sklearn.manifold.locally_linear_embedding "sklearn.manifold.locally_linear_embedding") ,或者面向對象的副本 [`LocallyLinearEmbedding`](generated/sklearn.manifold.LocallyLinearEmbedding.html#sklearn.manifold.LocallyLinearEmbedding "sklearn.manifold.LocallyLinearEmbedding") ,附帶關鍵詞 `method = 'modified'` 。它需要滿足 `n_neighbors > n_components` 。
[](../auto_examples/manifold/plot_lle_digits.html)
### 2.2.4.1. 復雜度
MLLE 算法分為三部分:
1. **近鄰搜索**。與標準 LLE 的相同。
2. **權重矩陣構造**。大約是 ![O[D N k^3] + O[N (k-D) k^2]](https://box.kancloud.cn/d9987a2c6c34c3dbe316bcf2fccac1e1_212x20.jpg) 。該式第一項恰好等于標準 LLE 算法的復雜度。該式第二項與由多個權重來構造權重矩陣相關。在實踐中,(在第二步中)構造 MLLE 權重矩陣(對復雜度)增加的影響,比第一步和第三步的小。
3. **部分特征值分解**。與標準 LLE 的相同。
綜上,MLLE 的復雜度為 ![O[D \log(k) N \log(N)] + O[D N k^3] + O[N (k-D) k^2] + O[d N^2]](https://box.kancloud.cn/36225b729b633e073229e129c3b33984_475x20.jpg) 。
-  : 訓練集數據點的個數
-  : 輸入維度
-  : 最近鄰域的個數
-  : 輸出的維度
參考文獻:
- [“MLLE: Modified Locally Linear Embedding Using Multiple Weights”](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.70.382)Zhang, Z. & Wang, J.
## 2.2.5. 黑塞特征映射(HE)
黑塞特征映射 (也稱作基于黑塞的 LLE: HLLE )是解決 LLE 正則化問題的另一種方法。在每個用于恢復局部線性結構的鄰域內,它會圍繞一個基于黑塞的二次型展開。雖然其他實現表明它對數據大小縮放較差,但是 sklearn 實現了一些算法改進,使得在輸出低維度時它的損耗可與其他 LLE 變體相媲美。HLLE 可實現為函數 [`locally_linear_embedding`](generated/sklearn.manifold.locally_linear_embedding.html#sklearn.manifold.locally_linear_embedding "sklearn.manifold.locally_linear_embedding") 或其面向對象的形式 [`LocallyLinearEmbedding`](generated/sklearn.manifold.LocallyLinearEmbedding.html#sklearn.manifold.LocallyLinearEmbedding "sklearn.manifold.LocallyLinearEmbedding") ,附帶關鍵詞 `method = 'hessian'` 。它需滿足 `n_neighbors > n_components * (n_components + 3) / 2` 。
[](../auto_examples/manifold/plot_lle_digits.html)
### 2.2.5.1. 復雜度
HLLE 算法分為三部分:
1. **近鄰搜索**。與標準 LLE 的相同。
2. **權重矩陣構造**. 大約是 ![O[D N k^3] + O[N d^6]](https://box.kancloud.cn/7c013f80ed679138526a7b406a39e092_150x20.jpg) 。其中第一項與標準 LLE 相似。第二項來自于局部黑塞估計量的一個 QR 分解。
3. **部分特征值分解**。與標準 LLE 的相同。
綜上,HLLE 的復雜度為 ![O[D \log(k) N \log(N)] + O[D N k^3] + O[N d^6] + O[d N^2]](https://box.kancloud.cn/40356fe63919c69458a6b8bcea9b08a3_413x20.jpg) 。
-  : 訓練集數據點的個數
-  : 輸入維度
-  : 最近鄰域的個數
-  : 輸出的維度
參考文獻:
- [“Hessian Eigenmaps: Locally linear embedding techniques for high-dimensional data”](http://www.pnas.org/content/100/10/5591)Donoho, D. & Grimes, C. Proc Natl Acad Sci USA. 100:5591 (2003)
## 2.2.6. 譜嵌入
譜嵌入是計算非線性嵌入的一種方法。scikit-learn 執行拉普拉斯特征映射,該映射是用圖拉普拉斯的譜分解的方法把數據進行低維表達。這個生成的圖可認為是低維流形在高維空間里的離散近似值。基于圖的代價函數的最小化確保流形上彼此臨近的點被映射后在低維空間也彼此臨近,低維空間保持了局部距離。譜嵌入可執行為函數 [`spectral_embedding`](generated/sklearn.manifold.spectral_embedding.html#sklearn.manifold.spectral_embedding "sklearn.manifold.spectral_embedding") 或它的面向對象的對應形式 [`SpectralEmbedding`](generated/sklearn.manifold.SpectralEmbedding.html#sklearn.manifold.SpectralEmbedding "sklearn.manifold.SpectralEmbedding") 。
### 2.2.6.1. 復雜度
譜嵌入(拉普拉斯特征映射)算法含三部分:
1. **加權圖結構**。把原輸入數據轉換為用相似(鄰接)矩陣表達的圖表達。
2. **圖拉普拉斯結構**。非規格化的圖拉普拉斯是按  構造,并按  規格化的。
3. **部分特征值分解**。在圖拉普拉斯上進行特征值分解。
綜上,譜嵌入的復雜度是 ![O[D \log(k) N \log(N)] + O[D N k^3] + O[d N^2]](https://box.kancloud.cn/c24ba9c36d43eb4999741a97cfe7cef6_334x20.jpg) 。
-  : 訓練集數據點的個數
-  : 輸入維度
-  : 最近鄰域的個數
-  : 輸出的維度
參考文獻:
- [“Laplacian Eigenmaps for Dimensionality Reduction and Data Representation”](http://web.cse.ohio-state.edu/~mbelkin/papers/LEM_NC_03.pdf)M. Belkin, P. Niyogi, Neural Computation, June 2003; 15 (6):1373-1396
## 2.2.7. 局部切空間對齊(LTSA)
盡管局部切空間對齊(LTSA)在技術上并不是 LLE 的變體,但它與 LLE 足夠相近,可以放入這個目錄。與 LLE 算法關注于保持臨點距離不同,LTSA 尋求通過切空間來描述局部幾何形狀,并(通過)實現全局最優化來對其這些局部切空間,從而學會嵌入。 LTSA 可執行為函數 [`locally_linear_embedding`](generated/sklearn.manifold.locally_linear_embedding.html#sklearn.manifold.locally_linear_embedding "sklearn.manifold.locally_linear_embedding") 或它的面向對象的對應形式 [`LocallyLinearEmbedding`](generated/sklearn.manifold.LocallyLinearEmbedding.html#sklearn.manifold.LocallyLinearEmbedding "sklearn.manifold.LocallyLinearEmbedding") ,附帶關鍵詞 `method = 'ltsa'` 。
[](../auto_examples/manifold/plot_lle_digits.html)
### 2.2.7.1. 復雜度
LTSA 算法含三部分:
1. **近鄰搜索**。與標準 LLE 的相同。
2. **加權矩陣構造**。大約是 ![O[D N k^3] + O[k^2 d]](https://box.kancloud.cn/2fbe9347cfcc49395cc13cf633622a9c_143x20.jpg) 。其中第一項與標準 LLE 相似。
3. **部分特征值分解**。同于標準 LLE 。
綜上,復雜度是 ![O[D \log(k) N \log(N)] + O[D N k^3] + O[k^2 d] + O[d N^2]](https://box.kancloud.cn/1e96394d598bd5e8efef4957e3d2c1cb_406x20.jpg) 。
-  : 訓練集數據點的個數
-  : 輸入維度
-  : 最近鄰域的個數
-  : 輸出的維度
參考文獻:
- [“Principal manifolds and nonlinear dimensionality reduction via tangent space alignment”](http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.3693)Zhang, Z. & Zha, H. Journal of Shanghai Univ. 8:406 (2004)
## 2.2.8. 多維尺度分析(MDS)
[多維尺度分析 Multidimensional scaling](https://en.wikipedia.org/wiki/Multidimensional_scaling) ( [`MDS`](generated/sklearn.manifold.MDS.html#sklearn.manifold.MDS "sklearn.manifold.MDS") ) 尋求數據的低維表示,(低維下的)它的距離保持了在初始高維空間中的距離。
一般來說,(MDS)是一種用來分析在幾何空間距離相似或相異數據的技術。MDS 嘗試將相似或相異的數據建模為幾何空間距離。這些數據可以是物體間的相似等級,也可是分子的作用頻率,還可以是國家簡單貿易指數。
MDS算法有2類:度量和非度量。在 scikit-learn 中, [`MDS`](generated/sklearn.manifold.MDS.html#sklearn.manifold.MDS "sklearn.manifold.MDS") 類中二者都有。在度量 MDS 中,輸入相似度矩陣源自度量(并因此遵從三角形不等式),輸出兩點之間的距離被設置為盡可能接近相似度或相異度的數據。在非度量版本中,算法嘗試保持距離的控制,并因此尋找在所嵌入空間中的距離和相似/相異之間的單調關系。
[](../auto_examples/manifold/plot_lle_digits.html)
設  是相似度矩陣, 是  個輸入點的坐標。差異  是以某種最佳方式選擇的相似度的轉換。然后,通過  定義稱為 Stress (應力值)的對象。
### 2.2.8.1. 度量 MDS
最簡單的度量 [`MDS`](generated/sklearn.manifold.MDS.html#sklearn.manifold.MDS "sklearn.manifold.MDS") 模型稱為 *absolute MDS(絕對MDS)*,差異由  定義。對于絕對 MDS,值  應精確地對應于嵌入點的點  和  之間的距離。
大多數情況下,差異應設置為  。
### 2.2.8.2. 非度量 MDS
非度量 [`MDS`](generated/sklearn.manifold.MDS.html#sklearn.manifold.MDS "sklearn.manifold.MDS") 關注數據的排序。如果  ,則嵌入應執行  。這樣執行的一個簡單算法是在  上使用  的單調回歸,產生與  相同順序的差異  。
此問題的 a trivial solution(一個平凡解)是把所有點設置到原點上。為了避免這種情況,將差異  標準化。
[](../auto_examples/manifold/plot_mds.html)
參考文獻:
- [“Modern Multidimensional Scaling - Theory and Applications”](http://www.springer.com/fr/book/9780387251509)Borg, I.; Groenen P. Springer Series in Statistics (1997)
- [“Nonmetric multidimensional scaling: a numerical method”](http://link.springer.com/article/10.1007%2FBF02289694)Kruskal, J. Psychometrika, 29 (1964)
- [“Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis”](http://link.springer.com/article/10.1007%2FBF02289565)Kruskal, J. Psychometrika, 29, (1964)
## 2.2.9. t 分布隨機鄰域嵌入(t-SNE)
t-SNE( [`TSNE`](generated/sklearn.manifold.TSNE.html#sklearn.manifold.TSNE "sklearn.manifold.TSNE") )將數據點的相似性轉換為概率。原始空間中的相似性表示為高斯聯合概率,嵌入空間中的相似性表示為 “學生” 的 t 分布。這允許 t-SNE 對局部結構特別敏感,并且有超過現有技術的一些其它優點:
- 在一個單一映射上以多種比例顯示結構
- 顯示位于多個、不同的流形或聚類中的數據
- 減輕在中心聚集的趨勢
Isomap、LLE 和其它變體最適合展開單個連續低維流形,而 t-SNE 將側重于數據的局部結構,并傾向于提取聚類的局部樣本組,就像S曲線示例中突出顯示的那樣。這種基于局部結構對樣本進行分組的能力可能有助于在視覺上同時解開包括多個流形的數據集,如數字數據集中的情況。
原始空間和嵌入空間中的聯合概率的 Kullback-Leibler(KL) 散度將通過梯度下降而最小化。注意,KL 發散不是凸的,即具有不同初始化的多次重新開始將以KL發散的局部最小值結束。因此,嘗試不同的開始值并選擇具有最低KL散度的嵌入有時是有用的。
使用 t - SNE 的缺點大致如下:
- t-SNE 的計算成本很高,在百萬樣本數據集上可能需要幾個小時,而PCA將在幾秒或幾分鐘內完成同樣工作。
- Barnes-Hut t-SNE 方法僅限于二維或三維嵌入。
- 該算法是隨機的,不同種子的多次重新開始可以產生不同的嵌入。然而,以最小的誤差選擇嵌入是完全合理的。
- 未明確保留全局結構。用PCA初始化點(使用 init=’pca’ ),可以減輕此問題。
[](../auto_examples/manifold/plot_lle_digits.html)
### 2.2.9.1. 優化 t-SNE
t-SNE 的主要目的是實現高維數據的可視化。因此,當數據將嵌入到二維或三維時,它效果最好。
優化KL發散有時可能有點棘手。有五個參數控制 t-SNE 的優化,因此可能也控制最終嵌入的質量:
- 復雜度
- 早期增長因子
- 學習率
- 最大迭代次數
- 角度(不在精確方法中使用)
復雜度(perplexity)定義為  ,其中  是條件概率分布的香農熵。k 面色子的復雜度是 k ,因此 k 實際上是生成條件概率時 t-SNE 考慮的最近鄰域的個數。復雜度越大導致有越多的近鄰域,則對小結構越不敏感。相反地,越低的復雜度考慮越少的鄰域,并因此忽略越多的全局信息而越關注局部鄰域。當數據集的大小變大時,需要更多的點來獲得局部鄰域的合理樣本,因此可能需要更大的復雜度。類似地,噪聲越大的數據集需要越大的復雜度來包含足夠的局部鄰域,以超出背景噪聲。
最大迭代次數通常足夠高,不需要任何調整。優化分為兩個階段:早期增長階段和最終優化階段。在早期增長中,原始空間中的聯合概率將通過與給定因子相乘而被人為地增加。越大的因子導致數據中的自然聚類之間的差距越大。如果因子過高,KL 發散可能在此階段增加。通常不需要對其進行調諧。學習率是一個關鍵參數。如果梯度太低,下降會陷入局部極小值。如果過高,KL發散將在優化階段增加。可以在 Laurens van derMaaten 的常見問題解答中找到更多提示(見參考資料)。最后一個參數角度是性能和精度之間的折衷。角度越大意味著我們可以通過單個點來近似的區域越大,從而導致越快的速度,但結果越不準確。
[“如何高效使用 t-SNE”](http://distill.pub/2016/misread-tsne/) 提供了一個關于各種參數效果的很好的討論,以及用來探索不同參數效果的交互式繪圖。
### 2.2.9.2. Barnes-Hut t-SNE
在此實現的 Barnes-Hut t-SNE 通常比其他流形學習算法慢得多。優化是很困難的,梯度的計算是 ![O[d N log(N)]](https://box.kancloud.cn/1d644b296e1b2287e19bcdbb7e7f0829_102x19.jpg) ,其中  是輸出維數, 是樣本個數。Barnes-Hut 方法在 t-SNE 復雜度為 ![O[d N^2]](https://box.kancloud.cn/9395075a38cfe0d600266d86d5334129_55x20.jpg) 的精確方法上有所改進,但有其他幾個顯著區別:
- Barnes-Hut 實現僅在目標維度為3或更小時才有效。構建可視化時,2D 案例是典型的。
- Barnes-Hut 僅適用于密集的輸入數據。稀疏數據矩陣只能用精確方法嵌入,或者可以通過密集的低階投影來近似,例如使用 [`sklearn.decomposition.TruncatedSVD`](generated/sklearn.decomposition.TruncatedSVD.html#sklearn.decomposition.TruncatedSVD "sklearn.decomposition.TruncatedSVD")
- Barnes-Hut 是精確方法的近似。近似使用 angle 作為參數,因此當參數 method=”exact” 時,angle 參數無效。
- Barnes-Hut 的拓展性很高。Barnes-Hut 可用于嵌入數十萬個數據點,而精確方法只能處理數千個樣本,再多就很困難了。
出于可視化目的( t-SNE 的主要使用情況),強烈建議使用 Barnes-Hut 方法。精確的 t-SNE 方法可用于檢驗高維空間中嵌入的理論性質,但由于計算約束而僅限于小數據集。
還要注意,數字 label 與 t-SNE 發現的自然聚類大致匹配,而 PCA 模型的線性 2D 投影產生標簽區域在很大程度上重疊的表示。這是一個強有力的線索,表明該數據可以通過關注局部結構的非線性方法(例如,具有高斯 RBF 核的 SVM )很好地分離。然而,如果不能在二維中用 t-SNE 來可視化分離良好的均勻標記組,并不一定意味著數據不能被監督模型正確地分類。可能是因為 2 維不夠低,無法準確表示數據的內部結構。
參考文獻:
- [“Visualizing High-Dimensional Data Using t-SNE”](http://jmlr.org/papers/v9/vandermaaten08a.html)van der Maaten, L.J.P.; Hinton, G. Journal of Machine Learning Research (2008)
- [“t-Distributed Stochastic Neighbor Embedding”](http://lvdmaaten.github.io/tsne/)van der Maaten, L.J.P.
- [“Accelerating t-SNE using Tree-Based Algorithms.”](https://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf)L.J.P. van der Maaten. Journal of Machine Learning Research 15(Oct):3221-3245, 2014.
## 2.2.10. 實用技巧
- 確保對所有特征使用相同的縮放。因為流形學習方法是基于最近鄰搜索的,否則算法的性能可能很差。有關縮放異構數據的方便方法,請參閱 [StandardScaler](preprocessing.html#preprocessing-scaler) 。
- 由每個例程計算的重構誤差可用于選擇最佳輸出維度。對于嵌入在  維參數空間中的  維流形,重構誤差將隨著 `n_components` 的增加而減小,直到 `n_components == d` 。
- 注意,噪聲數據可以對流形造成“短路”,其實質上充當了一個橋梁,用于連接流形的不同部分,否則(沒有這樣的“橋梁”)這些流形將被很好地劃分開。噪聲和/或不完全數據的流形學習是一個活躍的研究領域。
- 某些輸入配置可能導致奇異加權矩陣,例如,當數據集中的兩個以上點完全相同時,或者當數據被分割成不連續的組時。在這種情況下, `solver='arpack'` 將無法找到空空間。解決這一問題的最簡單方法是使用 `solver='dense'` ,它將在一個奇異矩陣上進行,盡管它可能因為輸入點的數量而非常緩慢。或者,人們可以嘗試理解奇異的來源:如果它是由于不相交的集合,增加 `n_neighbors` 可能有所幫助;如果是由于數據集中的相同點,則刪除這些點可能有所幫助。
See also
[完全隨機樹嵌入](ensemble.html#random-trees-embedding) 也可以用于得到特征空間的非線性表示,另外它不用降維。
- scikit-learn 0.19 中文文檔
- 用戶指南
- 1. 監督學習
- 1.1. 廣義線性模型
- 1.2. 線性和二次判別分析
- 1.3. 內核嶺回歸
- 1.4. 支持向量機
- 1.5. 隨機梯度下降
- 1.6. 最近鄰
- 1.7. 高斯過程
- 1.8. 交叉分解
- 1.9. 樸素貝葉斯
- 1.10. 決策樹
- 1.11. 集成方法
- 1.12. 多類和多標簽算法
- 1.13. 特征選擇
- 1.14. 半監督學習
- 1.15. 等式回歸
- 1.16. 概率校準
- 1.17. 神經網絡模型(有監督)
- 2. 無監督學習
- 2.1. 高斯混合模型
- 2.2. 流形學習
- 2.3. 聚類
- 2.4. 雙聚類
- 2.5. 分解成分中的信號(矩陣分解問題)
- 2.6. 協方差估計
- 2.7. 經驗協方差
- 2.8. 收斂協方差
- 2.9. 稀疏逆協方差
- 2.10. Robust 協方差估計
- 2.11. 新奇和異常值檢測
- 2.12. 密度估計
- 2.13. 神經網絡模型(無監督)
- 3. 模型選擇和評估
- 3.1. 交叉驗證:評估估算器的表現
- 3.2. 調整估計器的超參數
- 3.3. 模型評估: 量化預測的質量
- 3.4. 模型持久化
- 3.5. 驗證曲線: 繪制分數以評估模型
- 4. 數據集轉換
- 4.1. Pipeline(管道)和 FeatureUnion(特征聯合): 合并的評估器
- 4.2. 特征提取
- 4.3. 預處理數據
- 4.4. 無監督降維
- 4.5. 隨機投影
- 4.6. 內核近似
- 4.7. 成對的矩陣, 類別和核函數
- 4.8. 預測目標 (y) 的轉換
- 5. 數據集加載工具
- 6. 大規模計算的策略: 更大量的數據
- 7. 計算性能
- 教程
- 使用 scikit-learn 介紹機器學習
- 關于科學數據處理的統計學習教程
- 機器學習: scikit-learn 中的設置以及預估對象
- 監督學習:從高維觀察預測輸出變量
- 模型選擇:選擇估計量及其參數
- 無監督學習: 尋求數據表示
- 把它們放在一起
- 尋求幫助
- 處理文本數據
- 選擇正確的評估器(estimator)
- 外部資源,視頻和談話