pca演算法,從名字看也知道是用於降維的,通過提取主特徵和主特徵向量,丟掉次要的特徵和特徵向量,實現降維。
pca演算法流程(python**實現流程):
1)零均值化
假如原始資料集為矩陣datamat,datamat中每一行代表乙個樣本,每一列代表乙個特徵。零均值化就是求每一列的平均值,然後該列上的所有數都減去這個均值。也就是說,這裡零均值化是對每乙個特徵而言的,零均值化後,每個特徵的均值變成0。
2)求協方差矩陣
numpy中的cov函式用於求協方差矩陣,引數rowvar很重要!若rowvar=0,說明傳入的資料一行代表乙個樣本,若非0,說明傳入的資料一列代表乙個樣本。因為newdata每一行代表乙個樣本,所以將rowvar設定為0。
3)求得特徵值和特徵向量
呼叫numpy中的線性代數模組linalg中的eig函式,可以直接由covmat求得特徵值和特徵向量。
4)主成分個數選擇
按照方差百分比來確定n的個數,用以保留最多資訊,同時去除最多的雜訊。
pca演算法流程:
pca演算法步驟(不涉及程式語言):
設有m條n維資料:
(1)將原始資料按列組成n行m列矩陣x;
(2)將x的每一行(代表乙個屬性字段)進行零均值化,即減去這一行的均值;
(3)求出協方差矩陣;
(4)求出協方差矩陣的特徵值以及對應的特徵向量;
(5)將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣p。(特徵向量相當於方向基向量,對應特徵向量的特徵值相當原向量於在該基向量方向上的分量,因此特徵值越大,原向量在該特徵向量上的分量越大)
pca降維的優缺點:
優點:1. 對資料進行降維處理。pca根據協方差矩陣特徵值的大小進行排序,根據需要取前面最重要的部分,將後面的維度省去,可以達到降維從而簡化模型或是對資料進行壓縮的效果,同時又最大程度的保持了原有資料的資訊。
2. 完全無引數限制。完全不需要人為的設定引數或是根據任何經驗模型對計算進行干預,最後結果只與資料相關,與使用者獨立
缺點:無引數限制同樣也會成為它的缺點,如果使用者通過觀察得到了一些先驗資訊,掌握了資料的一些特徵,但是無法通過引數化等方法進行干預,可能會得不到預期的效果。
降維的演算法有很多,比如奇異值分解(svd)、主成分分析(pca)、因子分析(fa)、獨立成分分析(ica)。
pca計算主要步驟:
1、使用pca之前進行特徵縮放;
2、計算特徵矩陣x的協方差矩陣:
sigma = 1/m*xt*x
相關文獻大部分公式都是要求計算協方差矩陣之前先將特徵矩陣每乙個維度減去平均值,這樣是讓資料分布以原點為中心,但並非必要,並不影響對資料分布方差的分析。
m 是樣本數,即特徵矩陣x的行數。x 的維度是 m×n,n 是特徵向量的維度,即降維之前原始特徵數。
得到的協方差矩陣sigma 是 n×n 的矩陣
3. 對協方差矩陣進行奇異值分解。
[u, s, v] = svd(sigma);
u,s,v 都是n×n的矩陣
奇異值(特徵值)描述了資料分布的形狀。最大特徵值(奇異值)對應的特徵向量指向資料主要分布方向,即方差最大的方向!
->協方差矩陣特徵值從小到大排列對應的特徵向量指向資料分布的方差從大到小的方向。協方差矩陣特徵值不受剛性變換的影響,而特徵向量受剛性變換的影響!
其中 u 是 包含左奇異向量的矩陣,v 是包含右奇異向量的矩陣。s 是乙個對角陣,對角線上的元素都是奇異值:s11, s22, s33, ..., snn,奇異值在s中從大到小排列. 特徵向量即pca需要將資料投影的方向!為什麼pca要將資料投影到特徵向量的方向即方差最大的方向呢?因為資料的分布無非是用均值和方差來表徵,pca主要考慮方差,投影後保留大部分的方差就意味著保留資料分布的大部分特徵!使得樣本資料往低維投影後,能盡可能表徵原始的資料。
參考部落格:
參考部落格:
參考部落格:
參考部落格:
pca主成分分析 PCA主成分分析(中)
矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...
PCA演算法(主成分分析)
principle component analysis 顧名思義,是通過分析向量空間的主成分,將主成分提取出來,不重要的成分略去,從而達到降維壓縮資訊的目的。那什麼才是主成分呢?大家應該知道,乙個空間會有自己的一組基向量,空間中的任何乙個向量都可以通過基向量的組合來表示。舉個栗子,假如我們有一組2...
PCA 主成分分析 演算法
因為對pca演算法的好奇,所以就寫一篇筆記記錄一下自己學習的過程。三 小結 在現實生活中,我們人類總會存在一種這樣的習慣 關注自己所關心的,與此同時會忽略掉自己所不關心的事情。就像看一場足球比賽一樣,我們面對的顯示螢幕包含了幾十萬個畫素,那麼這其中的人或者球只佔了其中的一部分,那麼我們自然而然的會對...