pca是一種對高維度資料進行降維的一種方法,為了能夠了解pca的具體過程,一些數學知識,比如:期望,標準差,方差,協方差,特徵值,特徵向量等都是必須了解的。不過不要怕,我這裡先乙個乙個來介紹下這些概念。
pca是一種常用的統計方法,什麼是統計分析的過程?就是用樣本資料的特徵去代表整體資料特徵,而統計就是來分析這個樣本資料的特徵(為什麼要這樣來做?而不是把全部資料拿來分析呢?因為全部資料量太大)
1:概念介紹
ø 期望
在我們的一組離散資料中,期望就是平均值。
比如以下兩組資料分別是某燈泡廠隨即挑選出來的3個燈泡的壽命
a廠的如下:0,10,20。b廠的如下:9,10,11
那麼我們衡量a和b就用期望來做即可。得到a的期望是10,b的期望也是10。
ø 標準差
在期望中我們用期望對兩組資料進行了分析,發現他們的平均壽命都是一樣的,但是但看這些資料來看,只需要期望還是不夠的,因為上面兩組資料雖然期望值一樣,但是資料特徵還是有異同的,比如在上面兩組資料中我們更希望需要的是第二組資料,因為第二組資料更「穩定」,也就是這些資料距離期望值差別都不大。為了描繪這個特徵我們用標準差來衡量,標準差的定義是:樣本點和期望距離和。我們用下面的等價公式來計算這個值:
ø 方差
方差就是標準差的平方
ø 協方差
在我們上面的分析中我們知道,期望,標準差,方差都是來衡量一維資料的特徵的,二維的資料特徵我們如何衡量呢?這裡就要出現協方差了,協方差定義如下:
如果cov(x,y)大於0,說明當x增大的時候y也增加,反之一樣
如果cov(x,y)小於0,說明當x增大的時候y是減小的,反之一樣
如果cov(x,y)等於0,則說明x和y無關
ø 特徵值和特徵向量
這個概念由於我們大學學習的課本的問題,其實很多人都知道怎麼算的,甚至有的同學計算的時候可以尋找很多方法快速來計算,但是死活不知道實際的意義。這裡根據我的個人理解以及別人的溝通用一句話來描述下特徵值和特徵向量的現實意義。根據尋求特徵值和特徵向量的公式:px=λx,知道就是求可以在矩陣p下做變換後的向量x,和乙個變數乘以它的值相等,這說明什麼?一句話:就是尋找可以再p下進行變換的向量,變換後該向量的長度發生變化,方向不變。其實特徵值和特徵向量就是這個意思。
2:利用pca進行資料降維步驟
ø 我們這個地方用乙個關於影象壓縮的例子來闡述下pca降維的過程。
給一副,寬窄都是n,則按照從第一行畫素值,第二行畫素值…直到第n行畫素值連線成一行,儲存稱為行向量如下:
p=(x1,x2,…..xn
2),它的維度是n2。
我們給予20副這樣的,則20副經過處理行程乙個20*n2的矩陣。
ø 求協方差矩陣
協方差上面我們已經說過了,那麼什麼是協方差矩陣?給予乙個矩陣a
我們定義
則a的協方差矩陣就等於b*bt。
文字表示上述過程就是,先對a的每行元素求平均值,然後每個元素減去改行的平均值行程中間矩陣,然後中間矩陣與它轉置的乘積就是協方差矩陣,我們記做m
ø 求協方差矩陣m的特徵值和特徵向量
因為20副的協方差矩陣m是20*20的,所以它的特徵值有20個,對應20個特徵向量,把這20個特徵值從大到小排序,選擇前n個特徵值(n小於20)對應的特徵向量組合成矩陣p=(p1,p2,…pn)。每乙個pi是20維的列向量。這個時候我們把20個特徵向量就叫做原始資料的主成分。每個向量是20維的。
ø 得到經過pca之後的原始資料
我們把經過pca之後的原始資料叫做finaldata。則(finaldata)t=pt*mt.也就是說finaldata=m*p,由於m是20*20的,p是20*n的,所以finaldata是20*n的,因為n小於20。所以和之前對比節約了n/20的空間。
3:總結
個人覺得pca主要是利用一些資料知識,對原始資料進行相應的座標轉換,最初的資料在乙個座標系上,你覺得相互之間點都有關係,但是當尋找另外的座標系的時候會發現一些點可能距離很近也有可能重合,此時就可以把這些點省掉一些。。個人理解,不一定正確。
4:建議
我們之前做視覺化總是直接對原始資料進行視覺化,如果資料維度大可視難度是非常大的,其實可以做一些這樣簡單的變換,降低下資料維度,並且利用數學關係和模型來分析下到底和我們需要分析的哪些指標有關係,然後找到有關係的維度,去掉無關係的維度,既利於分析,也能得到真正有用的結果。
CVPR讀書筆記 7 PCA的理解
cvpr讀書筆記 7 pca的理解 朱金華 jinhua1982 gmail.com 下文中a a t表示a的轉置.n維資料的m個樣本構成的n m維矩陣x,尋找n n的變換矩陣w,使得變換後的矩陣y w x y.簡單的說如果w w1,w2,wn 中wi為變換後空間的基,則上述變換即將x對映為新空間中...
mysql運維 讀書筆記 Mysql 讀書筆記
mysql儲存時間有兩種型別 datetime和timestamp。分別說一下兩者的區別。datetime,以8位元組儲存時間,理論上可以從0000年儲存到9999年。並且沒有時區的概念,它儲存的就是乙個時間點的概念。timestamp和datetime最主要的不同就是,它是以4個位元組儲存,由19...
struts in action讀書筆記
struts in action 學習筆記 一 struts的控制流 因為web 應用是動態的,所以很難表現 乙個真正固定的控制流 取決於環境,不同的方式下有很多不同的事情發生 特別是在web 應用中。但是事情仍然有乙個通用的秩序。如果你是個struts,應用框架,甚至web 應用的新手,這些流程剛...