常见的PCA、tSNE、UMAP降维及聚类基本原理及代码实例
常見的降維方法基本原理及代碼實例
- 0.前言:什么時候要降維聚類?降維目的-方法概述
- 1.PCA(主成分分析)
- 1.1PCA概念
- 1.2 PCA代碼實例
- 2.tSNE
- 2.1tSNE概念
- 2.2 tSNE代碼實例
- 3.UMAP
- 3.1UMAP概念
- 3.2 UMAP 代碼實例
- 4.其他降維方法
- 4.1 NMDS
- 4.2 待補充
- 5.參考文獻
0.前言:什么時候要降維聚類?降維目的-方法概述
在開始回答這個問題前,我們看一下降維分析的應(yīng)用,上圖來自發(fā)表在2018年Cell Research(IF>20)上的一篇文章 《The adult human testis transcriptional cell atlas》,作者通過降維對donor細(xì)胞類群進行評估, 發(fā)現(xiàn)他們能夠較好的疊加(具有同質(zhì)性),又通過`tSNE`對細(xì)胞進行`降維聚類`,共有13個細(xì)胞亞群,很好地展示了亞群分類結(jié)果在實際的機器學(xué)習(xí)項目中,特征選擇/降維是必須進行的,因為在數(shù)據(jù)中存在以下幾個 方面的問題:
1.數(shù)據(jù)的多重共線性:特征屬性之間存在著相互關(guān)聯(lián)關(guān)系。多重共線性會導(dǎo)致解的空間不穩(wěn)定, 從而導(dǎo)致模型的泛化能力弱;
2.高緯空間樣本具有稀疏性,導(dǎo)致模型比較難找到數(shù)據(jù)特征;過多的變量會妨礙模型查找規(guī)律;
3.僅僅考慮單個變量對于目標(biāo)屬性的影響可能忽略變量之間的潛在關(guān)系。
那么降維的目的是什么?
通過特征選擇/降維的目的是:
1.減少特征屬性的個數(shù),確保特征屬性之間是相互獨立的
2.解決特征矩陣過大, 導(dǎo)致計算量比較大,訓(xùn)練時間長的問題,便于發(fā)現(xiàn)規(guī)律
一位博主總結(jié)了大家常見的問題:(參考原文鏈接:https://blog.csdn.net/weixin_43612049/article/details/101794520)
問題一:什么是降維?
降維是指通過保留一些比較重要的特征,去除一些冗余的特征,減少數(shù)據(jù)特征的維度。而特征的重要性取決于該特征能夠表達多少數(shù)據(jù)集的信息,也取決于使用什么方法進行降維。一般情況會先使用線性的降維方法再使用非線性的降維方法,通過結(jié)果去判斷哪種方法比較合適。
問題二:在哪里用到降維?
1)特征維度過大,可能會導(dǎo)致過擬合時
2)某些樣本數(shù)據(jù)不足的情況(缺失值很多)
3)特征間的相關(guān)性比較大時
問題三:降維的好處?
(1)節(jié)省存儲空間;
(2)加速計算速度,維度越少,計算量越少,并且能夠使用那些不適合于高維度的算法;
(3)去除一些冗余的特征(原數(shù)據(jù)中既有平方米和平方英里的特征–即相關(guān)性大的特征)
(4)便于觀察和挖掘信息(如將數(shù)據(jù)維度降到2維或者3維使之能可視化)
(5)特征太多或者太復(fù)雜會使得模型過擬合。
實現(xiàn)高維數(shù)據(jù)可視化的理論基礎(chǔ)是基于降維算法。降維算法一般分為兩類: 1.尋求在數(shù)據(jù)中保存距離結(jié)構(gòu)的:PCA、MDS等算法 2傾向于保存局部距離而不是全局距離的。`t-SNE` diffusion maps(UMAP) 下面我們對這些方法的原理進行介紹,并在此基礎(chǔ)上采取iris經(jīng)典數(shù)據(jù)集進行繪制圖1.PCA(主成分分析)
1.1PCA概念1.1PCA概念
PCA 分析(Principal Component Analysis),即主成分分析,是一種對數(shù)據(jù)進行簡化分析的技術(shù),這種方法可以有效的找出數(shù)據(jù)中最“主要”的元素和結(jié)構(gòu),去除噪音和冗余,將原有的復(fù)雜數(shù)據(jù)降維,揭示隱藏在復(fù)雜數(shù)據(jù)背后的簡單結(jié)構(gòu)。
PCA(Principal Component Analysis),即主成分分析方法,是一種使用最廣泛的數(shù)據(jù)降維算法。 PCA的主要思想是將n維特征映射到k維上,這k維是全新的正交特征也被稱為主成分,是在原有n維特征的基礎(chǔ)上重新構(gòu)造出來的k維特征。 PCA的工作就是從原始的空間中順序地找一組相互正交的坐標(biāo)軸,新的坐標(biāo)軸的選擇與數(shù)據(jù)本身是密切相關(guān)的。1.2 PCA代碼實例
#使用經(jīng)典iris數(shù)據(jù)集,df讀入前四列 df <- iris[1:4] #查看數(shù)據(jù)的結(jié)構(gòu),head查看前5行,tail查看后6行 head(df,5) tail(df,6) ##======================= Caculate the principal components(計算主成分) ##prcomp的功能是計算PCA df_pca <-prcomp(df) str(df_pca) #可以查看數(shù)據(jù)結(jié)構(gòu) df_pcs <-data.frame(df_pca$x,Species = iris$Species) head(df_pcs,10) #查看前10行主成分結(jié)果##======================= ggplot2包進行繪圖library(ggplot2) library(tidyverse) ggplot(df_pcs,aes(x=PC1,y=PC2,color=Species))+geom_point()#去掉背景及網(wǎng)格線 ggplot(df_pcs,aes(x=PC1,y=PC2,color=Species))+ geom_point()+stat_ellipse(level = 0.95, show.legend = T) + annotate('text', label = 'setosa', x = -2, y = -1.25, size = 5, colour = 'red') +annotate('text', label = 'versicolor', x = 0, y = - 0.5, size = 5, colour = '#00ba38') +annotate('text', label = 'virginica', x = 3, y = 0.5, size = 5, colour = '#619cff') theme_bw()+ theme(panel.border=element_blank(),panel.grid.major=element_blank(),panel.grid.minor=element_blank(),axis.line= element_line(colour = "blue"))結(jié)果:
2.tSNE
## 2.1tSNE概念2.1tSNE概念
關(guān)鍵詞: 1.t分布-隨機鄰近嵌入 2.相似度轉(zhuǎn)化為條件概率 3.學(xué)生t分布 1.`t-SNE 算法概述`t-SNE (全稱為 t-distributed Stochastic Neighbor Embedding,翻譯為 t分布-隨機鄰近嵌入)是通過將數(shù)據(jù)點之間的相似度轉(zhuǎn)化為條件概率,原始空間中數(shù)據(jù)點的相似度由高斯聯(lián)合分布表示,嵌入空間中數(shù)據(jù)點的相似度由學(xué)生t分布 表示 能夠?qū)⒏呔S空間中的數(shù)據(jù)映射到低維空間中,并保留數(shù)據(jù)集的局部特性。
2.`t-SNE原理`t-SNE本質(zhì)是一種嵌入模型,主要用于高維數(shù)據(jù)的降維和可視化。
如果想象在一個三維的球里面有均勻分布的點,不難想象,如果把這些點投影到一個二維的圓上一定會有很多點是重合的。
所以,為了在二維的圓上想盡可能表達出三維里的點的信息,大神Hinton采取的方法:
把由于投影所重合的點用不同的距離(差別很小)表示。
這樣就會占用原來在那些距離上的點,原來那些點會被趕到更遠一點的地方。
t分布是長尾的,意味著距離更遠的點依然能給出和高斯分布下距離小的點相同的概率值。
從而達到高維空間和低維空間對應(yīng)的點概率相同的目的。
2.2 tSNE代碼實例
3.UMAP
## 3.1UMAP概念3.1UMAP概念
對高維單細(xì)胞數(shù)據(jù)的可視化展示,以t-SNE為代表的非線性降維技術(shù),由于其能夠避免集群表示的過度擁擠,在重疊區(qū)域上能表示出不同的集群而被廣泛運用。然而,任何技術(shù)方法都不是完美的,t-SNE也一樣,它的局限性體現(xiàn)在丟失大規(guī)模信息(集群間關(guān)系)、計算時間較慢以及無法有效地表示非常大的數(shù)據(jù)集]等方面。
那么,有沒有其它方法能在一定程度上克服這些弱點呢?
UMAP就是這樣一個能解決這些問題的降維和可視化的工具。 UMAP:統(tǒng)一流形逼近與投影(UMAP,Uniform Manifold Approximation and Projection)是一種新的降維流形學(xué)習(xí) 技術(shù)。UMAP是建立在黎曼幾何和代數(shù)拓?fù)淅碚摽蚣苌系摹?span id="ze8trgl8bvbq" class="token constant">UMAP是一種非常有效的可視化和可伸縮降維算法。在可視化 質(zhì)量方面,UMAP算法與t-SNE具有競爭優(yōu)勢,但是它保留了更多全局結(jié)構(gòu)、具有優(yōu)越的運行性能、更好的可擴展性。 此外,UMAP對嵌入維數(shù)沒有計算限制,這使得它可以作為機器學(xué)習(xí)的通用維數(shù)約簡技術(shù)。 t-SNE和UMAP、PCA的應(yīng)用比較:1.小數(shù)據(jù)集中,t-SNE和UMAP差別不是很大 2.大數(shù)據(jù)集中,UMAP優(yōu)勢明顯(30多萬個細(xì)胞的降維可視化分析) 3.通過數(shù)據(jù)降維和可視化展示的比較顯示,PCA分群效果最差,UMAP和t-SNE都成功將與相似細(xì)胞群相對應(yīng)的簇聚集在一起。 4.與t-SNE相比,UMAP還提供了有用的和直觀的特性、保留了更多的全局結(jié)構(gòu),特別是細(xì)胞子集的連續(xù)性。 參考文章:單細(xì)胞數(shù)據(jù)降維可視化:https://www.bio-equip.com/showarticle.asp?id=453107027 ## 3.2 UMAP的應(yīng)用(代碼)3.2 UMAP 代碼實例
下面以公共數(shù)據(jù)集iris為例(無需導(dǎo)入)在 R語言 中展示UMAP的實現(xiàn)過程,##為運行結(jié)果,可以刪除 #清除當(dāng)前環(huán)境中的變量 rm(list=ls()) #設(shè)置工作目錄(需更改) setwd("D:/RStudio/project/UMAP") #查看示例數(shù)據(jù) head(iris) ## Sepal.Length Sepal.Width Petal.Length Petal.Width Species ## 1 5.1 3.5 1.4 0.2 setosa ## 2 4.9 3.0 1.4 0.2 setosa ## 3 4.7 3.2 1.3 0.2 setosa ## 4 4.6 3.1 1.5 0.2 setosa ## 5 5.0 3.6 1.4 0.2 setosa ## 6 5.4 3.9 1.7 0.4 setosa iris.data = iris[,c(1:4)]head(iris.data) ## Sepal.Length Sepal.Width Petal.Length Petal.Width ## 1 5.1 3.5 1.4 0.2 ## 2 4.9 3.0 1.4 0.2 ## 3 4.7 3.2 1.3 0.2 ## 4 4.6 3.1 1.5 0.2 ## 5 5.0 3.6 1.4 0.2 ## 6 5.4 3.9 1.7 0.4iris.labels = iris$Species head(iris.labels) ## [1] setosa setosa setosa setosa setosa setosa ## Levels: setosa versicolor virginica#########使用umap包進行UMAP降緯可視化分析 library(umap)iris.umap = umap::umap(iris.data)iris.umap ##umap embedding of 150 items in 2 dimensions ##object components: layout, data, knn, config#查看降維后的結(jié)果head(iris.umap$layout)# 使用plot函數(shù)可視化UMAP的結(jié)果plot(iris.umap$layout,col=iris.labels,pch=16,asp = 1,xlab = "UMAP_1",ylab = "UMAP_2",main = "A UMAP visualization of the iris dataset")# 添加分隔線abline(h=0,v=0,lty=2,col="gray")# 添加圖例 legend=圖例legend("topleft",title = "Species",inset = 0.01,legend = unique(iris.labels),pch=16,col = unique(iris.labels))4.其他降維方法
## 4.1 NMDS4.1 NMDS
非度量多維尺度分析(NMDS分析)是一種將多維空間的研究對象(樣品或變量)簡化到低維空間進行定位、分析和歸類,同時又保留對象間原始關(guān)系的數(shù)據(jù)分析方法。 適用于無法獲得研究對象間精確的相似性或相異性數(shù)據(jù),僅能得到他們之間等級關(guān)系數(shù)據(jù)的情形。
## 4.2 待補充4.2 待補充
5.參考文獻
引用文章已列在各個部分,感謝各位作者的奉獻!
總結(jié)
以上是生活随笔為你收集整理的常见的PCA、tSNE、UMAP降维及聚类基本原理及代码实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 office 365 SMTP 发
- 下一篇: c# picturebox控件的使用方法