1. 程式人生 > >Hulu機器學習問題與解答系列 | 第六彈:PCA算法

Hulu機器學習問題與解答系列 | 第六彈:PCA算法

iad 效果 其中 struct 並不是 系統資源 gic 文章 協方差

好久不見,Hulu機器學習問題與解答系列又又又更新啦!

你可以點擊菜單欄的“機器學習”,回顧本系列前幾期的全部內容,並留言發表你的感悟與想法,說不定會在接下來的文章中看到你的感言噢~

今天的主題是

【降維】

引言

技術分享圖片

宇宙,是時間和空間的總和。時間是一維的,而空間的維度,眾說紛紜,至今沒有定論。弦理論說是9維,霍金所認同M理論則認為是10維。它們解釋說人類所能感知的三維以外的維度都被卷曲在了很小的空間尺度內。當然,談及這些並不是為了推銷《三體》系列讀物,更不是引導讀者探索宇宙真諦,甚至懷疑人生本質,而是為了引出今天機器學習課堂主題——降維。

機器學習中的數據維數與現實世界的空間維度本同末離。在機器學習中,數據通常需要被表示成向量形式以輸入模型進行訓練。但眾所周知,對高維向量進行處理和分析時,會極大消耗系統資源,甚至產生維度災難。例如在CV(計算機視覺)領域中將一幅100x100的RGB圖像提取像素特征,維度將達到30000;在NLP(自然語言處理)領域中建立<文檔-詞>特征矩陣,也動輒產生幾萬維的特征向量。因此,進行降維,即用一個低維度的向量表示原始高維度的特征就顯得尤為重要。試想,如果宇宙真如M理論所說,每個天體的位置都由一個十維坐標來描述,應該沒有一個正常人能想象出其中的空間構造。但當我們把這些星球投影到一個二維平面,整個宇宙便會像上面的銀河系一樣直觀起來。

常見的降維方法主要有主成分分析(PCA)、線性判別分析(LDA)、等距映射(Isomap)、局部線性嵌入(LLE)、拉普拉斯特征映射(LE)、局部保留投影(LPP)等。這些方法又可以按照線性/非線性,監督/非監督,全局/局部,進行不同劃分。其中 PCA作為最經典的方法,至今已有100多年的歷史,它屬於一種線性、非監督、全局的降維算法。我們今天就來回顧一下這經久不衰的百年經典。

“PCA”

場景描述

在機器學習領域中,我們對原始數據進行特征提取,有時會得到比較高維的特征向量。在這些向量所處的高維空間中,包含很多的冗余和噪聲。我們希望通過降維的方式來尋找數據內部的特性,從而提升特征表達能力,降低訓練復雜度。PCA(主成分分析)作為降維中最經典的方法,是面試中經常被問到的問題。

問題

PCA的原理及目標函數

PCA的求解方法

背景知識:線性代數

解答與分析

PCA(principal components analysis), 即主成分分析,旨在找到數據中的主成分,並利用這些主成分表征原始數據,從而達到降維的目的。舉一個簡單的例子,在三維空間中有一系列數據點,這些點分布在一個過原點的平面上。如果我們用自然坐標系x, y, z這三個軸來表示數據,需要使用三個維度,而實際上這些點只出現在一個二維平面上,如果我們通過坐標系旋轉使得數據所在平面與x, y平面重合,那麽我們就可以通過x’, y’兩個維度表達原始數據,並且沒有任何損失,這樣就完成了數據的降維,而x’, y’兩個軸所包含的信息就是我們要找到的主成分。

但在高維空間中,我們往往不能像剛才這樣直觀地想象出數據的分布形式,也就更難精確地找到主成分對應的軸是哪些。不妨,我們先從最簡單的二維數據來看看PCA究竟是如何工作的。

技術分享圖片技術分享圖片

上圖(左)是二維空間中經過中心化的一組數據,我們很容易看出主成分所在的軸(以下稱為主軸)的大致方向,即右圖中綠線所處的軸。因為在綠線所處的軸上,數據分布的更為分散,這也意味著數據在這個方向上方差更大。在信號處理領域中我們認為信號具有較大方差,噪聲具有較小方差,信號與噪聲之比稱為信噪比,信噪比越大意味著數據的質量越好。由此我們不難引出PCA的目標,即最大化投影方差,也就是讓數據在主軸上投影的方差最大。

技術分享圖片技術分享圖片技術分享圖片

熟悉線性代數的讀者馬上就會發現,原來,x投影後的方差就是協方差矩陣的特征值。我們要找到最大的方差也就是協方差矩陣最大的特征值,最佳投影方向就是最大特征值所對應特征向量。次佳投影方向位於最佳投影方向的正交空間中,是第二大特征值對應的特征向量,以此類推。至此,我們得到了PCA的求解方法:

技術分享圖片技術分享圖片

總結與擴展

至此,我們從最大化投影方差的角度解釋了PCA的原理、目標函數和求解方法,其實PCA還可以用其他思路(比如最小回歸誤差的角度)進行分析,得到新的目標函數,但最終會發現其對應的原理和求解方法與本文中的是等價的。另外,由於PCA是一種線性降維方法,雖然經典,但其具有一定局限性。我們可以通過核映射對PCA進行擴展得到KPCA方法,也可以通過流形映射的降維方法(如Isomap、LLE、LE等)對一些PCA效果不好的復雜數據集進行非線性降維操作。這些方法都會在之後的推送中有所涉及,敬請期待。


下一題預告

【非監督學習算法與評估】

場景描述

在實際工作生活中我們經常會遇到一類問題,期望給機器輸入大量的觀測數據,並通過歸納和學習找到這些數據中存在的某種共性特征或者結構,或者數據特征值之間存在的某種關聯。例如,視頻網站依據用戶的觀看行為對用戶分組,並依據分組結果建立不同的推薦策略;也或者是尋找視頻播放流暢性和用戶退訂之間的某種關系等等。通常這類問題的觀測數據沒有標簽信息,需要通過算法模型來尋求數據內在的結構(structure)和模式(Pattern),此類學習算法也被稱為非監督學習,主要包含兩大類學習方法:數據聚類(Clustering)和變量關聯(Correlation)。相比於監督式學習,非監督學習通常沒有正確答案,算法模型的設計直接影響最終的輸出和性能,需要通過多次叠代的方法尋找模型的最優的參數。

問題描述

以聚類算法為例,假設沒有外部標簽數據,如何區分兩個無監督學習(聚類)算法性的優劣呢?

Hulu機器學習問題與解答系列 | 第六彈:PCA算法