爾云間生信代碼|還在用PCA做降維聚類嗎?最強降維模型tSNE--你值得擁有
科研有捷徑,輸入代碼,一鍵獲取科研成果!就是這么省事,來具體看下有多方便!
搜索http://985.so/a9kb查看全部代碼(目前共計50+持續(xù)新增中),也可以點擊右側【目錄】,可以看到更多有趣的代碼;真香提示:文末可以知道如何獲取代碼~?
生信分析中降維聚類方法眾多,當我們的數(shù)據(jù)各特征間存在高度的線性相關,這時你可能首先會想到使用 PCA 對數(shù)據(jù)進行降維處理,但是PCA 是一種線性算法,它不能解釋特征之間的復雜多項式關系,而t-SNE (t-distributed stochastic neighbor embedding)是一種用于挖掘高維數(shù)據(jù)的非線性降維算法,是用于降維的一種機器學習算法,是由 Laurens van der Maaten 等在08年提出來。它能夠將多維數(shù)據(jù)映射到二維或三維空間中,因此 t-NSE非常適用于高維數(shù)據(jù)的可視化操作。今天我們來介紹其中的一種方法:tSNE。相較其他降維算法,對于數(shù)據(jù)可視化而言tSNE的效果無疑是最好的,我們也會在文中使用PCA來對比兩者的效果。
下面我們一起來看下?tSNE如何分析,本文展示做一組tSNE聚類分析與PCA可視化結果進行比較。代碼相關文件見如下3個文件夾。

1. 加載相應R依賴包
library("Rtsne")
2. 數(shù)據(jù)導入
輸入數(shù)據(jù)共2個文件,一個矩陣文件,每一行是一個樣品,每一列是一個基因,另一個是分組信息文件,包含2列,一列是與矩陣文件對應的樣品名稱,第二列是分組信息,具體見下圖。


3. tSNE分析
接下來我們對讀取的數(shù)據(jù)進行分析,第一步設定種子,第二步去除重復數(shù)據(jù),如果沒有重復數(shù)據(jù)可跳過這一步,第三步將數(shù)據(jù)轉成矩陣類型。

之后使用Rtsne函數(shù)進行tSNE降維分析,參數(shù)perplexity設置為20,該值表示混亂度,混亂度越高,t-SNE將考慮越多的鄰近點,更關注全局,設置范圍是5-50,因為我們使用的數(shù)據(jù)較簡單,所以這里使用20就行,越復雜的數(shù)據(jù)建議該值越高。

最后使用ggplot2包進行可視化。

同時我們使用PCA分析來對比一下。


tSNE

PCA
由兩者的對比結果可見tSNE的效果明顯比PCA要好,因為tSNE算法考慮因素多所以計算時間會更長,尤其在特征較多時更為明顯,這也是它的一個不可避免的槽點。不過能獲得符合預期結果的美圖,還是很值得一試的呦。
如需代碼及示例數(shù)據(jù)等文件,請掃碼聊天框回復 “B34”領取!?

寫在文末:
如果您近期想做生信方面的文章而苦于沒有思路,或者不知道如何來入手生信分析,或者兌具體的某一個圖有作圖需求,都可以掃碼咨詢小云,我們有專業(yè)的技術團隊,生信熱點思路設計、生信分析、熱點方向生信挖掘等,如有需要,可掃碼下方二維碼了解詳情:?
