<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />這篇文章出現在 JMPer電纜, 2015年夏季刊第30期 。
約翰薩爾 john.sall ,聯合創始人兼執行副總裁,SAS
使用多變量方法,當您擁有寬(數千列)數據時,必須以不同方式執行操作。
瓶頸
用於寬數據的傳統方法的致命弱點是它們以協方差或相關矩陣開始,其隨著列數的平方而增長。例如,基因組學研究往往有廣泛的數據:
- 在一項基因組學研究中,有10,787個基因表達列,儘管只有230行。該協方差矩陣擁有超過5800萬個元素,佔用465MB內存。
- 我們合作的另一項研究在249個個體中有49,041個基因,這導致使用9.6GB內存的協方差矩陣。
- 另一項研究有1,824,184個基因列,產生13.3TB的協方差矩陣。計算機沒有那麼多內存 - 實際上,它們沒有那麼多磁盤空間。
即使你有這些廣泛問題的記憶,也需要很長時間來計算協方差矩陣,大約為n * p 2 ,其中n是行數,p是列數。此外,當你必須反轉協方差矩陣時會更糟,這將花費p的順序 3 。此外,協方差矩陣非常奇異,因為數據中的行數遠少於列數。
所以你會認為多變量方法對於這些情況是不切實際或不可能的。幸運的是,還有另一種方法,一種方法可以解決大問題,不僅實用,而且速度相當快,同時產生與巨大的協方差矩陣相同的答案。
SVD
高多變量空間中的有效維數是行數的量級,因為它遠小於列數。該寬矩陣的所有變化可以由主成分錶示,即與正方差相關的成分,即非零特徵值。還有另一種方法可以使用(標準化)數據的奇異值分解來獲得主成分。現在您處於主要組件空間中,這些主要組件的維度很小;事實上,所有的計算都簡化了,因為主成分的協方差矩陣是對角線的,這對於反演來說是微不足道的。
假設X是標準化數據的n×p矩陣,p大於n,因此協方差矩陣是p×p矩陣計算X'X / n。
SVD將任何X表示為轉換,即旋轉,縮放,然後是另一個旋轉:
X = U diag(M)V'
在U是和n乘m矩陣的正交列的情況下,M是m個正奇異值的向量,並且V是正交列的m矩陣的ap。事實證明,如果你已經採用協方差矩陣的特徵值分解,那麼它的特徵值將是M 2 並且特徵向量將是V,因此,因為主要成分只需要M和V,所以你可以做數據的SVD,而不是協方差矩陣的特徵值,如果p是千,n是數百,這要快得多。主要成分只是X * V.
例如,對於10,787列和230行的問題,通過相關矩陣的主要組件需要81分鐘,但SVD只需7.5秒,速度提高600多倍。我在基因組數據集上嘗試了它,在249行中有1,824,184列。我能夠在94分鐘內在我的6核Mac Pro上使用JMP 12來完成該數據的主要組件。以另一種方式做這顯然是不可能的。
判別分析
通過判別分析,主要任務是計算每個點到每個組的(多變量)平均值的距離。然而,該距離不是簡單的歐幾里德距離,而是距離的多元形式 - 馬哈拉諾比斯距離,它使用逆協方差矩陣。
但是考慮一下標準化數據 - 主要成分是相同的數據,但是通過各種角度進行旋轉。區別在於原始數據可能有10,000列,但在寬數據情況下,主要組件只有幾百列。因此,如果我們想要測量點之間或點與多元均值之間的距離( 形心 ),那麼我們可以用更少的維度來做到這一點。不僅如此,主坐標是不相關的,這意味著馬哈拉諾比斯距離計算中間的矩陣是對角線的,因此距離只是各個坐標距離的平方和。
我們按組分取中心數據的主要成分。然後我們將平均值添加到這個新的降維數據中。轉換後的均值只是原始組均值的主成分轉換。
例
有一組乳腺癌基因組表達數據是微陣列質量聯盟使用的基準,具有230行和10,787個基因表達。使用寬線性方法的判別分析僅需5.6秒(在Mac Pro上),並且在最難分類的類別ER_status上產生交叉驗證錯誤分類率僅為13.7%(圖1)。鑑於其他方法很昂貴,這種錯誤分類率接近於該問題的最佳分類率。

圖1 Principal Components平台中的廣泛判別分析
到目前為止,我們已經在判別式,主成分,層次聚類和一種缺失值插補中實現了基於SVD的高度多變量選項。我們正在嘗試進一步使用它,並且還在探索在高度多變量分析中有用的其他類似方法。 圍繞“大數據”的大部分宣傳都是關於大量的行,但是大量的列也越來越重要。