【視頻】主成分分析PCA降維方法和R語言分析葡萄酒可視化實(shí)例|數(shù)據(jù)分享|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=22492
最近我們被客戶要求撰寫關(guān)于主成分分析PCA的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。 降維技術(shù)之一是主成分分析 (PCA) 算法,該算法將可能相關(guān)變量的一組觀察值轉(zhuǎn)換為一組線性不相關(guān)變量。在本文中,我們將討論如何通過使用 R編程語言使用主成分分析來減少數(shù)據(jù)維度分析葡萄酒數(shù)據(jù)
高維數(shù)據(jù)集的處理可能是一個(gè)復(fù)雜的問題,因?yàn)槲覀冃枰叩挠?jì)算資源,或者難以控制機(jī)器學(xué)習(xí)模型的過度擬合等。為避免此類問題,您可以降低數(shù)據(jù)集的維數(shù)。降維將數(shù)據(jù)從高維空間轉(zhuǎn)移到低維空間,使數(shù)據(jù)的低維表示只保留原始數(shù)據(jù)的重要方面。
??

?
這是將三維數(shù)據(jù)集轉(zhuǎn)換為三個(gè)二維數(shù)據(jù)集的可視化:該圖說明了一個(gè)三維特征空間被分成三個(gè)二維特征空間,之后,如果發(fā)現(xiàn)相關(guān),特征的數(shù)量可以進(jìn)一步減少。
?

主成分分析(PCA)
主成分分析(PCA)是最流行的線性降維算法之一。它是一種基于投影的方法,通過將數(shù)據(jù)投影到一組正交(垂直)軸上來轉(zhuǎn)換數(shù)據(jù)。
?
“PCA 的工作條件是,當(dāng)高維空間中的數(shù)據(jù)映射到低維空間中的數(shù)據(jù)時(shí),低維空間中數(shù)據(jù)的方差或散布應(yīng)該最大?!?/p>
假設(shè)我們必須將數(shù)據(jù)點(diǎn)的二維表示轉(zhuǎn)換為一維表示。因此,我們將嘗試在它們上找到一條直線并投影數(shù)據(jù)點(diǎn)。(直線是一維的)。選擇直線的可能性有很多。
假設(shè)藍(lán)色線將是我們的新維度。如果你看到藍(lán)線(連接紅點(diǎn)在藍(lán)線上的投影),即每個(gè)數(shù)據(jù)點(diǎn)與直線的垂直距離就是投影誤差。所有數(shù)據(jù)點(diǎn)的誤差之和將是總投影誤差。
我們的新數(shù)據(jù)點(diǎn)將是那些原始藍(lán)色數(shù)據(jù)點(diǎn)的投影(紅色點(diǎn))。正如我們所看到的,我們通過將二維數(shù)據(jù)點(diǎn)投影到一維空間(即直線)上,將它們轉(zhuǎn)換為一維數(shù)據(jù)點(diǎn)。
您從本質(zhì)上將數(shù)據(jù)的維度從二維減少到一維。一維空間(也就是直線)是二維坐標(biāo)系的子空間。
藍(lán)線是使用數(shù)學(xué)優(yōu)化構(gòu)建的,以盡可能地沿該線最大化數(shù)據(jù)點(diǎn)之間的方差,數(shù)據(jù)在二維空間中沿藍(lán)線具有最大方差。

我們稱這條線為我們的第一個(gè)主成分。自然,線上的點(diǎn)仍然比原始 2D 空間中的點(diǎn)更接近,因?yàn)槟谑^(qū)分它們的維度。但在很多情況下,通過降維實(shí)現(xiàn)的簡化超過了信息的損失,損失可以部分或全部重構(gòu)。
在我們之前的示例中,我們只有一個(gè)主成分。一旦進(jìn)入更高維空間,您可能會使用多個(gè)主成分,因?yàn)橛梢粋€(gè)主成分解釋的方差通常不足。主成分是相互正交的向量。這意味著它們形成 90 度角。在數(shù)學(xué)上,正交向量是獨(dú)立的,這意味著由第二個(gè)主成分解釋的方差與第一個(gè)主成分的方差不重疊。因此,它們盡可能有效地表示信息。第一個(gè)主成分將捕獲大部分方差;第二個(gè)主成分將捕獲第一個(gè)未解釋的方差的第二大部分,依此類推。

實(shí)際上,主成分是通過確保特征之間沒有信息重疊來盡可能有效地表示數(shù)據(jù)及其差異的特征組合。原始特征通常顯示出顯著的冗余,這也是主成分分析在降維方面如此有效的主要原因。
R語言主成分分析(PCA)葡萄酒可視化:主成分得分散點(diǎn)圖和載荷圖
我們將使用葡萄酒數(shù)據(jù)集進(jìn)行主成分分析。
數(shù)據(jù)
數(shù)據(jù)包含177個(gè)樣本和13個(gè)變量的數(shù)據(jù)框;vintages包含類標(biāo)簽。這些數(shù)據(jù)是對生長在意大利同一地區(qū)但來自三個(gè)不同栽培品種的葡萄酒進(jìn)行化學(xué)分析的結(jié)果:內(nèi)比奧羅、巴貝拉和格里格諾葡萄。來自內(nèi)比奧羅葡萄的葡萄酒被稱為巴羅洛。
這些數(shù)據(jù)包含在三種類型的葡萄酒中各自發(fā)現(xiàn)的幾種成分的數(shù)量。
#?看一下數(shù)據(jù)head(no)
輸出

轉(zhuǎn)換和標(biāo)準(zhǔn)化數(shù)據(jù)
對數(shù)轉(zhuǎn)換和標(biāo)準(zhǔn)化,將所有變量設(shè)置在同一尺度上。
#?對數(shù)轉(zhuǎn)換no_log?<-?log(no)#?標(biāo)準(zhǔn)化log_scale?<-?scale(no_log)head(log_scale)

主成分分析(PCA)
使用奇異值分解算法進(jìn)行主成分分析
prcomp(log_scale,?center=FALSE)summary(PCA)

基本圖形(默認(rèn)設(shè)置)
帶有基礎(chǔ)圖形的主成分得分和載荷圖
plot(scores[,1:2],?#?x和y數(shù)據(jù)?????pch=21,?#?點(diǎn)形狀????cex=1.5,?#?點(diǎn)的大小legend("topright",?#?legend的位置???????legend=levels(vint),?#?圖例顯示plot(loadings[,1:2],?#?x和y數(shù)據(jù)?????pch=21,?#?點(diǎn)的形狀text(loadings[,1:2],?#?設(shè)置標(biāo)簽的位置


此外,我們還可以在分?jǐn)?shù)圖中的組別上添加95%的置信度橢圓。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容

高維數(shù)據(jù)懲罰回歸方法:主成分回歸PCR、嶺回歸、lasso、彈性網(wǎng)絡(luò)elastic net分析基因數(shù)據(jù)

左右滑動查看更多

01

02

03

04

置信度橢圓圖函數(shù)
##?橢圓曲線圖????????????????????????elev=0.95,?#?橢圓概率水平????????????????????????pcol=NULL,?#?手工添加顏色,必須滿足長度的因素????????????????????????cexsize=1,?#?點(diǎn)大小????????????????????????ppch=21,?#?點(diǎn)類型,必須滿足因素的長度????????????????????????legcexsize=2,?#?圖例字體大小????????????????????????legptsize=2,?#?圖例點(diǎn)尺寸????##?設(shè)定因子水平????if(is.factor(factr)?{????????f?<-?factr????}?else?{????????f?<-?factor(factr,?levels=unique(as.character(factr)))????}????intfactr?<-?as.integer(f)?#?設(shè)置與因子水平相匹配的整數(shù)向量????##?獲取橢圓的數(shù)據(jù)????edf?<-?data.frame(LV1?=?x,?LV2=y,?factr?=?f)?#?用數(shù)據(jù)和因子創(chuàng)建數(shù)據(jù)框????ellipses?<-?dlply(edf,?.(factr),?function(x)?{????????Ellipse(LV1,?LV2,?levels=elev,?robust=TRUE,?draw=FALSE)?#從dataEllipse()函數(shù)中按因子水平獲取置信度橢圓點(diǎn)????})????##?獲取X和Y數(shù)據(jù)的范圍????xrange?<-?plotat(range(c(as.vector(sapply(ellipses,?function(x)?x[,1])),?min(x),?max(x))))????##?為圖塊設(shè)置顏色????if(is.null(pcol)?!=?TRUE)?{?#?如果顏色是由用戶提供的????????pgcol?<-?paste(pcol,?"7e",?sep="")?#?增加不透明度????#?繪圖圖形????plot(x,y,?type="n",?xlab="",?ylab="",?main=""????abline(h=0,?v=0,?col="gray",?lty=2)?#在0添加線條????legpch?<-?c()?#?收集圖例數(shù)據(jù)的矢量????legcol?<-?c()?#?收集圖例col數(shù)據(jù)的向量????##?添加點(diǎn)、橢圓,并確定圖例的顏色????##?圖例????legend(x=legpos,?legend=levels(f),?pch=legpch,?##?使用prcomp()函數(shù)的PCA輸出的軸圖示????pcavar?<-?round((sdev^2)/sum((sdev^2))
基礎(chǔ)圖形
繪制主成分得分圖,使用基本默認(rèn)值繪制載荷圖
plot(scores[,1],?#?X軸的數(shù)據(jù)????????????scores[,2],?#?Y軸的數(shù)據(jù)????????????vint,?#?有類的因素????????????pcol=c(),?#?用于繪圖的顏色(必須與因素的數(shù)量相匹配)????????????pbgcol=FALSE, #點(diǎn)的邊框是黑色的?????????????cexsize=1.5,?#?點(diǎn)的大小?????????????ppch=c(21:23),?#?點(diǎn)的形狀(必須與因子的數(shù)量相匹配)????????????legpos="bottom?right",?#?圖例的位置???????????????????????legcexsize=1.5,?#?圖例文字大小????????????legptsize=1.5,?#?圖例點(diǎn)的大小?????????????axissize=1.5,?#?設(shè)置軸的文字大小????????????linewidth=1.5?#?設(shè)置軸線尺寸)?????????????????????????title(xlab=explain[["PC1"]],?#?PC1上解釋的方差百分比??????ylab=explain[["PC2"]],?#?PC2解釋的方差百分比???????main="Scores",?#?標(biāo)題??????cex.lab=1.5,?#?標(biāo)簽文字的大小??????cex.main=1.5?#?標(biāo)題文字的大小plot(loadings[,1:2],?#?x和y數(shù)據(jù)?????pch=21,?#?點(diǎn)的形狀?????cex=1.5,?#?點(diǎn)的大小????#?type="n",?#?不繪制點(diǎn)數(shù)?????axes=FALSE,?#?不打印坐標(biāo)軸?????xlab="",?#?刪除x標(biāo)簽?????ylab=""??????????????#?刪除y標(biāo)簽)pointLabel(loadings[,1:2],?#設(shè)置標(biāo)簽的位置???????????labels=rownames(PCAloadings),?#?輸出標(biāo)簽???????????cex=1.5?#?設(shè)置標(biāo)簽的大小)?#?pointLabel將嘗試將文本放在點(diǎn)的周圍axis(1,?#?顯示x軸?????cex.axis=1.5,?#?設(shè)置文本的大小?????lwd=1.5?#?設(shè)置軸線的大小)axis(2,?#?顯示y軸?????las=2,?#?參數(shù)設(shè)置文本的方向,2是垂直的?????cex.axis=1.5,?#?設(shè)置文本的大小?????lwd=1.5?#?設(shè)置軸線的大小)title(xlab=explain[["PC1"]],?#?PC1所解釋的方差百分比??????ylab=explain[["PC2"]],?#?PC2解釋的方差百分比???????????cex.lab=1.5,?#?標(biāo)簽文字的大小??????cex.main=1.5?#?標(biāo)題文字的大小)



點(diǎn)擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《R語言主成分分析(PCA)葡萄酒可視化:主成分得分散點(diǎn)圖和載荷圖》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
數(shù)據(jù)分享|R語言用主成分分析(PCA)PCR回歸進(jìn)行預(yù)測汽車購買信息可視化
R語言主成分分析(PCA)葡萄酒可視化:主成分得分散點(diǎn)圖和載荷圖主成分分析PCA譜分解、奇異值分解SVD預(yù)測分析運(yùn)動員表現(xiàn)數(shù)據(jù)和降維可視化用回歸和主成分分析PCA 回歸交叉驗(yàn)證分析預(yù)測城市犯罪率數(shù)據(jù)
R語言k-means聚類、層次聚類、主成分(PCA)降維及可視化分析鳶尾花iris數(shù)據(jù)集
R語言有限混合模型(FMM,finite mixture model)EM算法聚類分析間歇泉噴發(fā)時(shí)間
R語言用溫度對城市層次聚類、kmean聚類、主成分分析和Voronoi圖可視化
R語言k-Shape時(shí)間序列聚類方法對股票價(jià)格時(shí)間序列聚類
R語言中的SOM(自組織映射神經(jīng)網(wǎng)絡(luò))對NBA球員聚類分析
Python、R對小說進(jìn)行文本挖掘和層次聚類可視化分析案例
R語言復(fù)雜網(wǎng)絡(luò)分析:聚類(社區(qū)檢測)和可視化
R語言中的劃分聚類模型
基于模型的聚類和R語言中的高斯混合模型
r語言聚類分析:k-means和層次聚類
SAS用K-Means 聚類最優(yōu)k值的選取和分析
R語言k-Shape時(shí)間序列聚類方法對股票價(jià)格時(shí)間序列聚類
基于LDA主題模型聚類的商品評論文本挖掘
R語言中實(shí)現(xiàn)層次聚類模型
用R語言進(jìn)行網(wǎng)站評論文本挖掘聚類
R語言鳶尾花iris數(shù)據(jù)集的層次聚類分析
R語言對用電負(fù)荷時(shí)間序列數(shù)據(jù)進(jìn)行K-medoids聚類建模和GAM回歸
R語言聚類算法的應(yīng)用實(shí)例
基于模型的聚類和R語言中的高斯混合模型