日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见的PCA、tSNE、UMAP降维及聚类基本原理及代码实例

發布時間:2023/12/20 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见的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.前言:什么時候要降維聚類?降維目的-方法概述

在開始回答這個問題前,我們看一下降維分析的應用,上圖來自發表在2018年Cell Research(IF>20)上的一篇文章 《The adult human testis transcriptional cell atlas》,作者通過降維對donor細胞類群進行評估, 發現他們能夠較好的疊加(具有同質性),又通過`tSNE`對細胞進行`降維聚類`,共有13個細胞亞群,很好地展示了亞群分類結果

在實際的機器學習項目中,特征選擇/降維是必須進行的,因為在數據中存在以下幾個 方面的問題:
1.數據的多重共線性:特征屬性之間存在著相互關聯關系。多重共線性會導致解的空間不穩定, 從而導致模型的泛化能力弱;
2.高緯空間樣本具有稀疏性,導致模型比較難找到數據特征;過多的變量會妨礙模型查找規律;
3.僅僅考慮單個變量對于目標屬性的影響可能忽略變量之間的潛在關系。

那么降維的目的是什么?

通過特征選擇/降維的目的是:
1.減少特征屬性的個數,確保特征屬性之間是相互獨立的
2.解決特征矩陣過大, 導致計算量比較大,訓練時間長的問題,便于發現規律

一位博主總結了大家常見的問題:(參考原文鏈接:https://blog.csdn.net/weixin_43612049/article/details/101794520)

問題一:什么是降維?

降維是指通過保留一些比較重要的特征,去除一些冗余的特征,減少數據特征的維度。而特征的重要性取決于該特征能夠表達多少數據集的信息,也取決于使用什么方法進行降維。一般情況會先使用線性的降維方法再使用非線性的降維方法,通過結果去判斷哪種方法比較合適。
問題二:在哪里用到降維?

1)特征維度過大,可能會導致過擬合時

2)某些樣本數據不足的情況(缺失值很多)

3)特征間的相關性比較大時
問題三:降維的好處?

(1)節省存儲空間;

(2)加速計算速度,維度越少,計算量越少,并且能夠使用那些不適合于高維度的算法;

(3)去除一些冗余的特征(原數據中既有平方米和平方英里的特征–即相關性大的特征)

(4)便于觀察和挖掘信息(如將數據維度降到2維或者3維使之能可視化)

(5)特征太多或者太復雜會使得模型過擬合。

實現高維數據可視化的理論基礎是基于降維算法。降維算法一般分為兩類: 1.尋求在數據中保存距離結構的:PCAMDS等算法 2傾向于保存局部距離而不是全局距離的。`t-SNE` diffusion maps(UMAP) 下面我們對這些方法的原理進行介紹,并在此基礎上采取iris經典數據集進行繪制圖

1.PCA(主成分分析)

1.1PCA概念

1.1PCA概念

PCA 分析(Principal Component Analysis),即主成分分析,是一種對數據進行簡化分析的技術,這種方法可以有效的找出數據中最“主要”的元素和結構,去除噪音和冗余,將原有的復雜數據降維,揭示隱藏在復雜數據背后的簡單結構。

PCA(Principal Component Analysis),即主成分分析方法,是一種使用最廣泛的數據降維算法。 PCA的主要思想是將n維特征映射到k維上,這k維是全新的正交特征也被稱為主成分,是在原有n維特征的基礎上重新構造出來的k維特征。 PCA的工作就是從原始的空間中順序地找一組相互正交的坐標軸,新的坐標軸的選擇與數據本身是密切相關的。
  • 可以看到下圖中,原本不同維度(Gene)經過正交特征提取后,變為2維,便于我們更好地觀測結果,注意新構建的特征是在原本特征的基礎上構建的,包含其主要信息
  • PCA是將數據的最主要成分提取出來代替原始數據,也就是將n維特征映射到新的維度中,由k維正交特征組成的特征空間就是主成分,使用的降維方法就是投影
  • 問題是怎樣抽取數據的主要成分,如何衡量投影后保存的信息呢?PCA算法使用方差來度量信息量,為了確保降維后的低維度數據盡可能多的保留原始數據的有效信息,需要使降維后的數據盡可能的分散,從方差角度理解就是保留最大的方差。那么如何得到包含最大差異性的主成分呢?實際上,計算數據矩陣的協方差矩陣,得到協方差矩陣的特征值和特征向量,然后選擇特征值最大的k個特征對應的特征向量組成的矩陣,就將原始數據矩陣投影到了新的k維特征空間,實現了數據特征的降維。
  • 1.2 PCA的應用(代碼)

    1.2 PCA代碼實例

    #使用經典iris數據集,df讀入前四列 df <- iris[1:4] #查看數據的結構,head查看前5行,tail查看后6 head(df,5) tail(df,6) ##======================= Caculate the principal components(計算主成分) ##prcomp的功能是計算PCA df_pca <-prcomp(df) str(df_pca) #可以查看數據結構 df_pcs <-data.frame(df_pca$x,Species = iris$Species) head(df_pcs,10) #查看前10行主成分結果##======================= ggplot2包進行繪圖library(ggplot2) library(tidyverse) ggplot(df_pcs,aes(x=PC1,y=PC2,color=Species))+geom_point()#去掉背景及網格線 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"))

    結果:


    2.tSNE

    ## 2.1tSNE概念

    2.1tSNE概念

    關鍵詞: 1.t分布-隨機鄰近嵌入 2.相似度轉化為條件概率 3.學生t分布 1.`t-SNE 算法概述`

    t-SNE (全稱為 t-distributed Stochastic Neighbor Embedding,翻譯為 t分布-隨機鄰近嵌入)是通過將數據點之間的相似度轉化為條件概率,原始空間中數據點的相似度由高斯聯合分布表示,嵌入空間中數據點的相似度由學生t分布 表示 能夠將高維空間中的數據映射到低維空間中,并保留數據集的局部特性。

    2.`t-SNE原理`

    t-SNE本質是一種嵌入模型,主要用于高維數據的降維和可視化。
    如果想象在一個三維的球里面有均勻分布的點,不難想象,如果把這些點投影到一個二維的圓上一定會有很多點是重合的。
    所以,為了在二維的圓上想盡可能表達出三維里的點的信息,大神Hinton采取的方法:
    把由于投影所重合的點用不同的距離(差別很小)表示。
    這樣就會占用原來在那些距離上的點,原來那些點會被趕到更遠一點的地方。
    t分布是長尾的,意味著距離更遠的點依然能給出和高斯分布下距離小的點相同的概率值。
    從而達到高維空間和低維空間對應的點概率相同的目的。

    參考文獻: 1.https://cloud.tencent.com/developer/article/1549992 2.http://www.360doc.com/content/19/0403/11/51784026_826128783.shtml ## 2.2 tSNE的應用(代碼)

    2.2 tSNE代碼實例


    3.UMAP

    ## 3.1UMAP概念

    3.1UMAP概念

    對高維單細胞數據的可視化展示,以t-SNE為代表的非線性降維技術,由于其能夠避免集群表示的過度擁擠,在重疊區域上能表示出不同的集群而被廣泛運用。然而,任何技術方法都不是完美的,t-SNE也一樣,它的局限性體現在丟失大規模信息(集群間關系)、計算時間較慢以及無法有效地表示非常大的數據集]等方面。

    那么,有沒有其它方法能在一定程度上克服這些弱點呢?

    UMAP就是這樣一個能解決這些問題的降維和可視化的工具。 UMAP:統一流形逼近與投影(UMAPUniform Manifold Approximation and Projection)是一種新的降維流形學習 技術。UMAP是建立在黎曼幾何和代數拓撲理論框架上的。UMAP是一種非常有效的可視化和可伸縮降維算法。在可視化 質量方面,UMAP算法與t-SNE具有競爭優勢,但是它保留了更多全局結構、具有優越的運行性能、更好的可擴展性。 此外,UMAP對嵌入維數沒有計算限制,這使得它可以作為機器學習的通用維數約簡技術。 t-SNE和UMAP、PCA的應用比較:1.小數據集中,t-SNE和UMAP差別不是很大 2.大數據集中,UMAP優勢明顯(30多萬個細胞的降維可視化分析) 3.通過數據降維和可視化展示的比較顯示,PCA分群效果最差,UMAP和t-SNE都成功將與相似細胞群相對應的簇聚集在一起。 4.與t-SNE相比,UMAP還提供了有用的和直觀的特性、保留了更多的全局結構,特別是細胞子集的連續性。 參考文章:單細胞數據降維可視化:https://www.bio-equip.com/showarticle.asp?id=453107027 ## 3.2 UMAP的應用(代碼)

    3.2 UMAP 代碼實例

    下面以公共數據集iris為例(無需導入)在 R語言 中展示UMAP的實現過程,##為運行結果,可以刪除 #清除當前環境中的變量 rm(list=ls()) #設置工作目錄(需更改) setwd("D:/RStudio/project/UMAP") #查看示例數據 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#查看降維后的結果head(iris.umap$layout)# 使用plot函數可視化UMAP的結果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 NMDS

    4.1 NMDS

    非度量多維尺度分析(NMDS分析)是一種將多維空間的研究對象(樣品或變量)簡化到低維空間進行定位、分析和歸類,同時又保留對象間原始關系的數據分析方法。 適用于無法獲得研究對象間精確的相似性或相異性數據,僅能得到他們之間等級關系數據的情形。

    ## 4.2 待補充

    4.2 待補充


    5.參考文獻

    引用文章已列在各個部分,感謝各位作者的奉獻!

    總結

    以上是生活随笔為你收集整理的常见的PCA、tSNE、UMAP降维及聚类基本原理及代码实例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。