1.算法
前面講了復雜冗長的SVM慷丽、Logistics、BP纪吮,現(xiàn)在我們講一個簡單易懂的降維算法PCA俩檬,也是最廣為人知的算法,需要一點簡單的線性代數(shù)基礎(chǔ)碾盟,具體看文末鏈接棚辽,已經(jīng)講得非常詳細了。
其實用一張圖就能很好的理解該算法冰肴。下圖中屈藐,紅色的樣本特征點分布在原本 (x1,x2) 構(gòu)成的特征空間中,我們的目的就是將這些特征點變換到 (y1,y2) 構(gòu)成的特征空間嚼沿,使得估盘,特征點在y1方向上的協(xié)方差最小,也就是“分布最分散”骡尽,在y1方向上的信息最豐富遣妥,最能夠區(qū)分不同特征點,這樣我們可以舍棄y2方向上的信息攀细,就達到了降維的目的箫踩。
將一組 N 維向量降為 K 維爱态,其目標是選擇 K 個單位正交基,使得原始數(shù)據(jù)變換到這組基上后境钟,各變量兩兩間協(xié)方差為 0(線性不相關(guān))锦担,而變量方差則盡可能大(在正交的約束下,取最大的 K 個方差)慨削。
事實上這個算法計算過程是非常清晰的洞渔,如果你使用python的numpy科學包,或者使用matlab缚态,以上算法步驟大概幾行就可以完成磁椒。
2.性質(zhì)
緩解維度災難:PCA 算法通過舍去一部分信息之后能使得樣本的采樣密度增大(因為維數(shù)降低了),這是緩解維度災難的重要手段玫芦;
降噪:當數(shù)據(jù)受到噪聲影響時浆熔,最小特征值對應的特征向量往往與噪聲有關(guān),將它們舍棄能在一定程度上起到降噪的效果桥帆;
過擬合:PCA 保留了主要信息医增,但這個主要信息只是針對訓練集的,而且這個主要信息未必是重要信息老虫。有可能舍棄了一些看似無用的信息叶骨,但是這些看似無用的信息恰好是重要信息,只是在訓練集上沒有很大的表現(xiàn)祈匙,所以 PCA 也可能加劇了過擬合邓萨;
特征獨立:PCA 不僅將數(shù)據(jù)壓縮到低維,它也使得降維之后的數(shù)據(jù)各特征相互獨立菊卷;
3.細節(jié)
3.1零均值化
當對訓練集進行 PCA 降維時,也需要對驗證集宝剖、測試集執(zhí)行同樣的降維洁闰。而對驗證集、測試集執(zhí)行零均值化操作時万细,均值必須從訓練集計算而來扑眉,不能使用驗證集或者測試集的中心向量。
其原因也很簡單赖钞,因為我們的訓練集時可觀測到的數(shù)據(jù)腰素,測試集不可觀測所以不會知道其均值,而驗證集再大部分情況下是在處理完數(shù)據(jù)后再從訓練集中分離出來雪营,一般不會單獨處理弓千。如果真的是單獨處理了,不能獨自求均值的原因是和測試集一樣献起。
另外我們也需要保證一致性洋访,我們拿訓練集訓練出來的模型用來預測測試集的前提假設(shè)就是兩者是獨立同分布的镣陕,如果不能保證一致性的話,會出現(xiàn) Variance Shift 的問題姻政。
3.2 與 SVD 的對比
這是兩個不同的數(shù)學定義呆抑。我們先給結(jié)論:特征值和特征向量是針對方陣才有的,而對任意形狀的矩陣都可以做奇異值分解汁展。
鏈接
【機器學習】降維——PCA(非常詳細) - 知乎
https://zhuanlan.zhihu.com/p/77151308
如何理解協(xié)方差協(xié)方差