一、princomp介紹
主成分分析(Principal Component Analysis, PCA),是一種常見的數據降維算法,旨在從原始高維數據中提取出能夠表達數據最大方差的正交低維向量,稱為主成分。PCA算法可以應用於多種任務,比如數據的降維、可視化、壓縮等。princomp()函數,是R語言裡面PCA的實現函數之一,封裝在stats包裡面。
二、princomp對數據的整理與標準化
數據能夠反映現象,但是不同來源、規模的數據很難直接進行比較和分析,因此前期對數據進行整理和標準化至關重要。princomp可以通過scale參數對數據進行標準化,具體實現如下:
data <- read.csv("data.csv") princomp_data <- princomp(data, scale = TRUE)
在上述代碼中,scale = TRUE 會對data的每一列進行標準化。標準化值的計算方法為:(x-mean)/sd,其中x為每個數據,mean為數據的均值,sd為數據的標準差。標準化有助於消除數據大小和單位的影響,使不同緯度之間的協方差矩陣更加可靠。
三、princomp對主成分的解釋與可視化
主成分可以是原始數據的線性組合,組成的新向量會按照方差大小排序。我們可以通過summary()函數來了解princomp返回值中的各種信息,比如主成分的方差解釋比和累計比例、主成分係數、貢獻度等等。具體實現如下:
data <- read.csv("data.csv") result <- princomp(data, scale = TRUE) summary(result)
上述代碼將會輸出如下信息:
Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Standard deviation 2.0226872 0.64835796 0.503854227 0.2564323 Proportion of Variance 0.7833519 0.10267857 0.070098786 0.0438708 Cumulative Proportion 0.7833519 0.88603047 0.956129255 1.0000000
其中,Standard deviation表示每個主成分對應的標準差,Proportion of Variance 表示各主成分所能解釋的總方差比例,Cumulative Proportion表示所累計的可解釋方差貢獻比例。由於princomp中方差解釋比的計算方式是除以(n-1),所以Proportion of Variance與Cumulative Proportion相加等於1,即所有方差均被解釋。
我們還可以通過biplot()函數,繪製各個主成分的係數與主成分之間的二維圖形,方便可視化主成分之間的聯繫。具體實現如下:
data <- read.csv("data.csv") result <- princomp(data, scale = TRUE) biplot(result)
四、princomp的應用
princomp的應用範圍很廣,下面列舉幾個實際例子:
1、基於亞洲股市指數,通過PCA算法提取主成分,得到的三個主成分能夠解釋原始數據中的40%、23%和19%的方差。通過對主成分的係數進行解釋,可以發現第一個主成分與股市的整體走勢、公司市場及其競爭狀況等因素有關,第二個主成分與公司經營狀況和盈利穩定性相關,第三個主成分與政治和經濟因素相關。
2、基於國家教育水平與社會發展情況,通過PCA算法提取主成分,可以發現經濟發達的國家教育水平普遍較高,政治穩定的國家教育資源更加平均,社會保障完善的國家教育水平更加均衡。
3、基於文本數據,比如新聞、社交媒體等,通過詞頻矩陣的PCA降維,可以發現不同主成分對應的詞語有着不同的主題。我們可以將重複出現在同一個主成分中的詞語提取出來,形成一個方便閱讀的主題詞表,方便我們了解文本信息中隱藏的變量和趨勢。
五、princomp vs. princomp2
除了princomp()函數,R語言中還有princomp2()、prcomp()、PCA()等PCA實現函數,下面進行簡單介紹:
1、princomp()函數是最常用的PCA實現函數之一,基於SVD分解,不適用於大樣本數據集。
2、princomp2()函數使用迭代方法進行PCA,相較於princomp(),適合處理大型矩陣,但是計算速度較慢。
3、prcomp()函數,同樣基於SVD分解,但是比princomp()更加靈活,比如可以通過center和scale參數來進行中心化和標準化。
4、PCA()函數是在psych包中的PCA實現函數,有較為完整的PCA實現,比princomp()更加全面且易於使用,但是比princomp()計算速度慢一些。
六、總結
princomp是R語言中實現PCA的常用函數之一,通過標準化、主成分解釋、可視化、應用、對比等多個方面來闡述,可以更好的了解PCA算法的基本實現和應用。在實際應用中,應根據具體數據的特徵、數據量選擇不同的PCA實現函數,以獲得最優的降維效果和計算效率。
原創文章,作者:CWSWV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316110.html