UMAP:生物信息分析的新寵,降維神器解析高維數(shù)據(jù)!
生物信息分析的過程中,我們常常會(huì)碰到許多維度很高的數(shù)據(jù)集,這個(gè)時(shí)候我們就需要用到降維技術(shù)了。今天小云就給大家?guī)硪粋€(gè)降維的新方法——UMAP
?
UMAP (Uniform Manifold Approximation and Projection) 是一種非線性降維技術(shù),用于將高維數(shù)據(jù)映射到低維空間。它可以用于可視化數(shù)據(jù)集或降低數(shù)據(jù)維度,將高維數(shù)據(jù)映射到低維空間,以便進(jìn)行可視化和進(jìn)一步的分析。實(shí)際上,UMAP 可以被看作是 t-SNE (t-distributed Stochastic Neighbor Embedding) 的一種改進(jìn)版本,它使用了一些新的數(shù)學(xué)技術(shù)來提高效率和可擴(kuò)展性。UMAP 的核心思想是通過在數(shù)據(jù)流形結(jié)構(gòu)上建立連通性圖,來保留原始數(shù)據(jù)的局部和全局結(jié)構(gòu)。UMAP 首先使用隨機(jī)梯度下降法來生成連通性圖,然后將圖中的節(jié)點(diǎn)映射到低維空間中。這個(gè)過程中,UMAP 使用了一些新的數(shù)學(xué)技術(shù),包括 Riemannian geometry、algebraic topology 和 spectral graph theory 等,以提高算法的效率和可擴(kuò)展性。



比起其他降維方法UMAP有著更多的優(yōu)點(diǎn),這其中包括:
?
1.?可以處理非常大的數(shù)據(jù)集,并在較短的時(shí)間內(nèi)生成嵌入。
?
2.?可以保留原始數(shù)據(jù)的局部結(jié)構(gòu)和全局結(jié)構(gòu),這使得它可以在可視化數(shù)據(jù)集時(shí)提供更好的表示,并在分類、聚類和其他數(shù)據(jù)分析任務(wù)中提供更好的結(jié)果。
?
3.?可以處理各種類型的數(shù)據(jù),包括數(shù)值型、分類型和混合型數(shù)據(jù)。
?
4.?不需要事先對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化或歸一化處理,因?yàn)樗梢宰赃m應(yīng)地處理不同尺度的數(shù)據(jù)。
?
那么,我們要怎么在R語言中要怎么實(shí)現(xiàn)UMAP呢?這里小云給大家?guī)韮蓚€(gè)例子,我們首先會(huì)從簡(jiǎn)單的隨機(jī)數(shù)據(jù)入手,接著以蛋白質(zhì)表達(dá)序列數(shù)據(jù)為例,看看UMAP在生物信息分析的過程中的作用~
?
首先我們需要安裝和加載UMAP包:
?
install.packages("umap")
library(umap)
?
接下來,我們可以使用 umap() 函數(shù)來將數(shù)據(jù)降至二維空間,并進(jìn)行可視化。
?
在這個(gè)示例中,我們生成了一個(gè)包含 10 個(gè)特征和 100 個(gè)觀測(cè)值的隨機(jī)數(shù)據(jù)集。
# 生成隨機(jī)數(shù)據(jù)
set.seed(123)
data <- matrix(rnorm(1000), ncol = 10)
?
然后,我們使用 umap() 函數(shù)將數(shù)據(jù)降至二維空間,并將結(jié)果可視化。
# 進(jìn)行 UMAP 降維
embedding <- umap(data, n_components = 2)
?
# 可視化結(jié)果
plot(embedding$layout[,1], embedding$layout[,2], pch = 20)

可以看到降維后的數(shù)據(jù)被很好地分成了兩類
?
接下來我們看看實(shí)際生物數(shù)據(jù)的應(yīng)用:
?
首先,導(dǎo)入數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行預(yù)處理
?
data=read.csv(file.choose(),header = TRUE)
data <- na.omit(data)
X <- data[,2:79]
# 為data設(shè)置新列
X$Genotype <- ifelse(X$Genotype == "Control", 1, 0)
?
接著就可以直接使用umap函數(shù)進(jìn)行 UMAP 降維啦
embedding <- umap(X, n_components = 2)
?
這里,我們還可以根據(jù) Genotype 列為每個(gè)觀測(cè)值分配顏色值,使得最后可視化對(duì)結(jié)果更清晰
colors <- ifelse(X$Genotype == 1, "red", "blue")
?
最后就可以得到可視化的結(jié)果
plot(embedding$layout[,1], embedding$layout[,2], col = colors, pch = 20)

在生物信息的研究過程中,高維數(shù)據(jù)是一道無法避免的難關(guān),而UMAP 是一種非線性降維技術(shù),可以將高維數(shù)據(jù)映射到低維空間。UMAP 具有許多優(yōu)點(diǎn),包括處理大型數(shù)據(jù)集、保留原始數(shù)據(jù)的局部和全局結(jié)構(gòu)、適用于各種類型的數(shù)據(jù)和自適應(yīng)處理不同尺度的數(shù)據(jù)等。在 R 語言中使用 UMAP 也非常簡(jiǎn)單,可以直接使用 umap( ) 函數(shù)進(jìn)行降維和可視化。UMAP 的應(yīng)用可以幫助大家更好地理解和分析高維生物數(shù)據(jù)。這就是今天小云給大家?guī)淼膬?nèi)容啦~大家學(xué)會(huì)了嗎~

