PCA(1):基础知识介绍
PCA算法思路:
??????? 首先利用樣本集及特征構建一個樣本矩陣,然后利用樣本矩陣計算得到一個協方差矩陣,再計算協方差矩陣的特征值和特征向量,保留特征值前k個大的對應的特征向量作為新的維度方向,再將原始樣本數據轉換到新的空間維度。(他非常巧妙地利用協方差矩陣來計算出樣本集在不同方向上的分散程度,利用方差最大的方向作為樣本集的主方向)
上述提到的k(k<n,n是n維特征,)這個k維是全新的正交特征,這k維特征稱為主成分,是重新構造出來的k維特征,而不是簡單的從n維特征中去除其余n-k維特征。
我原來對PCA進行了解不深一直有一個誤區是選擇k維特征后邊的都不要了,其實不是的,是選擇k個特征向量,把所有的樣本個數都轉換都這個k維空間下,樣本個數沒有變化,只是特征維度變成了k。
為什么要用到PCA:
???????? PCA算法是專門用來對高維數據進行降維,因此算法的核心就是在于找出數據變化的主方向和次方向。比如下圖二維平面內有一些點,那么向量u1的方向可以認為是該數據的主方向,而u2是次方向。
去均值:
為什么要去均值:
???????? 這主要是去除均值對變化的影響,減去均值后數據的信息量沒有變化,即數據的區分度(方差)是不變的。如果不去均值,第一主成分,可能會或多或少的與均值有關。
歸一化:
??????? 將不同特征的數據范圍歸一化到同一范圍中,一般做法是將每個值除以當前維的最大值。
???????? (將每一維特征的均值中心化,方差歸一化)
對于組成的協方差矩陣求取的特征值與特征向量:
???????? 特征值越大的特征向量,樣本集在該方向上的變化越大。(因為協方差矩陣計算出來的特征值為其特征向量上的樣本集的方差,當方差越大說明數據集在該特征向量方向上越分散,變化越大,所以該方向就可以用來作為數據集的主方向。)對于由特征向量組成的矩陣我們稱為特征矩陣U,特征矩陣是一個正交矩陣,即滿足(特征向量之間相互正交,說明各特征之間相關性最小,基本接近0。獨立===>不相關<===>協方差為0
計算新維度下的每個樣本對應的新樣本數據值:
??????? 已經得到了數據變化的主次方向,現在需要計算樣本在每個特征向量上的長度,對于原始樣本x,其在特征向量u1方向上的長度為:。
PCA具有縮放不變性:
?????? 所有的特征分量被放大或縮小相同的倍數,PCA輸出的特征向量不會發生變化。
例子分析:
?????? 比如下邊有3個維度為4的樣本數據(X,Y,Z,A)首先假設XYZA之間互不相關。
| 樣本編號 | X | Y | Z | A |
| 1 | 1 | 1 | 12 | 30 |
| 2 | 90 | 2 | 13 | 30 |
| 3 | 847 | 3 | 14 | 30 |
由上邊幾個簡單的樣本我們就可以看出XYZ作為主成分,X可以作為該樣本的第一主成分,因為分布比較廣。
但是如果每一個維度我們都不能明顯的看出他們分布的差異性,意思就是在同一個維度上每個樣本之間的差值都非常小,那么我們就不能一眼看出該樣本的主成分。
通過如下一些二維數據我們走一遍PCA的過程:
| 原始樣本編號 | x | y |
| 1 | 2.5 | 2.4 |
| 2 | 0.5 | 0.7 |
| 3 | 2.2 | 2.9 |
| 4 | 1.9 | 2.2 |
| 5 | 3.1 | 3.0 |
| 6 | 2.3 | 2.7 |
| 7 | 2 | 1.6 |
| 8 | 1 | 1.1 |
| 9 | 1.5 | 1.6 |
| 10 | 1.1 | 0.9 |
第一步:求x、y的均值。=1.81,,得到去均值之后的樣本如下:
| 去均值后的樣本個數 | x | y |
| 1 | 0.69 | 0.49 |
| 2 | -1.31 | -1.21 |
| 3 | 0.39 | 0.99 |
| 4 | 0.09 | 0.29 |
| 5 | 1.29 | 1.09 |
| 6 | 0.49 | 0.79 |
| 7 | 0.19 | -0.31 |
| 8 | -0.81 | -0.81 |
| 9 | -0.31 | -0.31 |
| 10 | -0.71 | -1.01 |
第二步:求x,y的協方差矩陣:
求的協方差矩陣,對角線上分別是方差,非對角線上是協方差,協方差是衡量兩個變量同時變化的變化程度(協方差大于0表示,x和y若一個增另外一個也增;小于0表示一個增,一個相應的減。如果x和y是統計獨立的,那么兩者之間的協方差就是0;相反協方差是0并不能說明兩者是獨立的。而且兩者協方差的絕對值越大,那么兩者對彼此的影響就越大,反之越小。協方差是沒有單位的量。)
第三步:求協方差的特征值和特征向量,得到
第四步:將特征值按照從大到小的順序排序,選擇其中最大的k個,然后將其對應的k個特征向量分別作為列向量組成特征向量矩陣。
這里特征值只有兩個,我們選擇其中最大的那個,這里是1.28402771,對應的特征向量是(-0.677873399,?-0.735178656)T。
第五步:將樣本點投影到選取的特征向量上。假設樣例數為m(此處是10),特征數為n(此處是2),減去均值后的樣本矩陣為DataAdjust(m*n)(此處是10x2),協方差矩陣是n*n(此處是2x2),選取的k個特征向量組成的矩陣為EigenVectors(n*k)(此處是2x1)。那么投影后的數據FinalData為
FinalData(10*1)?=?DataAdjust(10*2矩陣)?x?特征向量(-0.677873399,?-0.735178656)T(此步的矩陣乘法就是將原始樣本點分別往特征向量對應的軸上做投影)
最后將每一個去均值后的數據點與選擇的k個特征向量做乘后的結果為:(10x2)與(2x1)矩陣得到(10x1)
| Transformed Data(一個維度) |
| -0.828 |
| 1.778 |
| -0.992 |
| -0.274 |
| -1.676 |
| -0.913 |
| -0.991 |
| 1.144 |
| 0.438 |
| 1.224 |
這樣,就將原始樣例的n維特征變成了k維,這k維就是原始特征在k維上的投影。
最后例子參照博客:https://blog.csdn.net/zhongkelee/article/details/44064401
總結
以上是生活随笔為你收集整理的PCA(1):基础知识介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【物料钢卷识别与定位】:1.读取数据(获
- 下一篇: 矩阵总结