主成分分析原理(PCA)
兩個矩陣相乘的意義是將右邊矩陣中的每一列向量 變換到左邊矩陣中以每一行行向量爲基所表示的空間中去。
選擇不同的基可以對同樣一組數據給出不同的表示,如果基的數量少於向量本身的維數,則可以達到降維的效果。
有一組 N 維向量,現在要將其降到 K 維(K 小於 N),那麼我們應該如何選擇 K 個基才能最大程度保留原有的信息?(投影后的投影值儘可能分散,因爲如果重疊就會有樣本消失。從熵的角度進行理解,熵越大所含信息越多。)
變量內方差(一維):
我們知道數值的分散程度,可以用數學上的方差來表述。單變量的方差可以看做是每個元素與變量均值的差的平方和的均值,即:
爲了方便處理,我們將基組的均值都化爲 0 ,因此方差可以直接用每個元素的平方和除以元素個數表示:
於是上面的問題被形式化表述爲:尋找一個一維基,使得所有數據變換爲這個基上的座標表示後,方差值最大。
變量間協方差:
協方差可以表示兩個變量的相關性,當協方差爲 0 時,表示兩個變量完全獨立。爲了讓兩個變量儘可能表示更多的原始信息,我們希望它們之間不存在線性相關性,因爲相關性意味着兩個變量不是完全獨立,必然存在重複表示的信息。
協方差公式爲:
爲了讓協方差爲 0,我們選擇第二個基時只能在與第一個基正交的方向上進行選擇,因此最終選擇的兩個方向一定是正交的。因此降維問題的優化目標:將一組 N 維向量降爲 K 維,其目標是選擇 K 個單位正交基,使得原始數據變換到這組基上後,各變量兩兩間協方差爲 0,而變量方差則儘可能大(在正交的約束下,取最大的 K 個方差)。
假設我們只有 a 和 b 兩個變量,那麼我們將它們按行組成矩陣 X:
然後得到協方差矩陣:
我們可以看到這個矩陣對角線上的分別是兩個變量的方差,而其它元素是 a 和 b 的協方差。兩者被統一到了一個矩陣裏。
我們很容易被推廣到一般情況:
設我們有 n 個 m 維數據記錄,將其排列成矩陣 ,設,則 C 是一個對稱矩陣,其對角線分別對應各個變量的方差,而第 i 行 j 列和 j 行 i 列元素相同,表示 i 和 j 兩個變量的協方差。
我們需要將除對角線外的其它元素化爲 0,並且在對角線上將元素按大小從上到下排列(變量方差儘可能大),優化目標變成了:尋找一個矩陣 P,滿足 是一個對角矩陣,並且對角元素按從大到小(對應特徵值從大到小)依次排列,那麼 P 的前 K 行就是要尋找的基,用 P 的前 K 行組成的矩陣乘以 X 就使得 X 從 N 維降到了 K 維並滿足上述優化條件。
PCA算法步驟(n個p維數據,降成k維):
1.所有數據排成n行p列矩陣X,並進行中心化(每一行減去該行均值)使得所有樣本之間的特徵值均值爲0,同時應用feature scaling,縮放到-0.5~0.5;
2. 計算樣本的協方差矩陣;
3.計算協方差矩陣的特徵值及對應的特徵向量;
4.取出最大的k個特徵值對應的特徵向量(w1,w2,...,wk), 將所有的特徵向量標準化後,組成特徵向量矩陣W;
5.對樣本集中的每一個樣本x轉化爲新的樣本;
6.得到輸出樣本集D=(z(1),z(2),...,z(k))。
PCA效果:
緩解維度災難:PCA 算法通過捨去一部分信息之後能使得樣本的採樣密度增大(因爲維數降低了),這是緩解維度災難的重要手段;
降噪:當數據受到噪聲影響時,最小特徵值對應的特徵向量往往與噪聲有關,將它們捨棄能在一定程度上起到降噪的效果;
過擬合:PCA 保留了主要信息,但這個主要信息只是針對訓練集的,而且這個主要信息未必是重要信息。有可能捨棄了一些看似無用的信息,但是這些看似無用的信息恰好是重要信息,只是在訓練集上沒有很大的表現,所以 PCA 也可能加劇了過擬合;
特徵獨立:PCA 不僅將數據壓縮到低維,它也使得降維之後的數據各特徵相互獨立(特徵向量相互垂直);
參考:https://blog.csdn.net/zouxiaolv/article/details/100590725