假如你要處理乙個資料集, 資料集中的每條記錄都是乙個d
d維列向量. 但是這個d
d太大了, 所以你希望把資料維度給降下來, 既可以去除一些冗餘資訊, 又可以降低處理資料時消耗的計算資源(用computation budget 來描述可能更形象).
用稍微正式點的語言描述:
那麼, 問題就來了. 如何將乙個d
d維向量對映成乙個p
p維向量? 答案是基變換. 然而基變換方式不是唯一的, 如何確保變換是最優的? 這就由優化目標"盡量儲存原資料集中的資訊" 決定了: 最好的基變換能儲存最多的資訊. 注意了, 這裡的比較都是在同乙個p
p下進行的, 也就是說, 參與競爭的基集(basis set)們, 都把dd維d
d對映到了乙個新的pp維z
z.那麼, (不好意思, 又乙個那麼. 這不是第乙個, 當然也不是最後乙個. 是的, 我喜歡用這個詞.), 現在面臨的問題是, 如何衡量資訊的多少? 我並不懂資訊科學, 只知道一點, 資訊在差異中存在. 如果全是相同的東西, 量再多,它的資訊量也沒有多少. pca演算法採用方差(variance)來度量資訊量.
那麼, 如何用variance來度量資料集d
d包含的資訊量呢? 乙個基(basis)乙個基地衡量.資料集在某個基上的投影值(也是在這個基上的座標值)越分散, 方差越大, 這個基保留的資訊也就越多. 不嚴格的來一句,乙個基集保留下的資訊量是每個基保留下的資訊量的和.
基於上面的理念, 或者說假設, 我們已經有一種可以有效地找出最優基集的方法了: 貪心演算法---先找出保留資訊量最大的基向量, 然後是第二大的, 然後然後, 直到找滿p
p個基向量.
接下來, 將上面的分析用數學語言描述出來.vv
為乙個用於變換的基. d
d中的某一條記錄xx在v
v上的投影長度(即座標值)為:pr
oj(x
,v)=
vtx|
|v||
proj(x,v)=vtx||v||假如v
v為單位向量, 則:pr
oj(x
,v)=
vtxproj(x,v)=vtx
所以, 為了方便計算, 我們對vv
有了乙個約束條件: vv
為單位向量. 這個太好說了, normalize 一下就行了.
於是, 整個dd在v
v上的投影長度可以打包表示為:xvxv
, 其中, x
x是乙個m×d
m×d的矩陣, 每一行是一條記錄, mm是d
d中的記錄總數目. 在資料預處理時, 我們先將x
x每一列的均值變為0: 先算出每一列的均值, 得到均值向量μ
μ, 然後從每一條記錄xixi
中減去μ
μ: xi←
xi−μ
xi←xi−μ
. 最後用這些預處理後的xixi
組成xx
.現在, 我們來計算dd在v
v上的資訊量, 即所有資料在v
v上的投影長度的方差:μ(
x,v)
=0μ(x,v)=0in
fo(d
,v)=
σ2(x
,v)=
1m∑i
=1m(
vtxi
−μ)2
=1m(
xv)t
xv=1
mvtx
txvinfo(d,v)=σ2(x,v)=1m∑i=1m(vtxi−μ)2=1m(xv)txv=1mvtxtxv
仔細看xtx
xtx這個東西, 因為做過均值化處理, 1m
xtx1mxtx
, 成為了原資料集dd
的協方差矩陣, 用cc
表示. 所以in
fo(d
,v)=
σ2(x
,v)=
vtcv
info(d,v)=σ2(x,v)=vtcv
這就是我們需要最大化的目標函式. 不過, 再回想一下, 我們之前為了方便計算還加了乙個條件進來: vv
是乙個單位向量, 即vt
v=1vtv=1
. 把這個條件也加到目標函式裡去:f(
v)=v
tcv−
λ(vt
v−1)
f(v)=vtcv−λ(vtv−1)
所以, 這才是我們最終需要優化的目標函式.
now, 求使f(
v)f(v)
最大的vv.
f(v)
f(v)
取得條件極值的必要條件為:
(這個向量函式求偏導的過程類似於神經網路bp演算法求偏導過程, 以後在另一篇文章單獨推導.)∂f
∂v=2
cv−2
λv=0
∂f∂v=2cv−2λv=0cv
=λvcv=λv
所以, vv
為cc的特徵向量. 它儲存的資訊量為:in
fo(d
,v)=
vtcv
=vtλ
v=λv
tv=λ
info(d,v)=vtcv=vtλv=λvtv=λ
於是, 奇蹟就這麼出現了:
資訊量儲存能力最大的基向量一定是d
d的協方差矩陣的特徵向量, 並且這個特徵向量儲存的資訊量就是它對應的特徵值.
接下來的戲碼你們應該都知道了: 用單位正交陣將c
c對角化(c
c是對稱矩陣, 天生如此);特徵值降序排列, 以排名前p
p個特徵值對應的特徵向量作為新的基集. (這個做法看起來很自然, 但若細細思量, 會發現這一步是pca演算法裡水最深的一步, 至少我現在還沒真正理解為何要這麼做, 聽qw學長說要用什麼rayleigh商).
剩下的問題, 比如降維後損失了多少資訊, 也很明白了, 就不多講了.
均值 方差 協方差 協方差矩陣 特徵值 特徵向量
均值 描述的是樣本集合的中間點。方差 描述的是樣本集合的各個樣本點到均值的距離之平均,一般是用來描述一維資料的。協方差 是一種用來度量兩個隨機變數關係的統計量。只能處理二維問題。計算協方差需要計算均值。如下式 方差與協方差的關係 方差是用來度量單個變數 自身變異 大小的總體引數,方差越大表明該變數的...
均值,方差,協方差,協方差矩陣,特徵值,特徵向量
均值 描述的是樣本集合的中間點。方差 描述的是樣本集合的各個樣本點到均值的距離之平均,一般是用來描述一維資料的。協方差 是一種用來度量兩個隨機變數關係的統計量。只能處理二維問題。計算協方差需要計算均值。如下式 方差與協方差的關係 方差是用來度量單個變數 自身變異 大小的總體引數,方差越大表明該變數的...
均值 方差 協方差 協方差矩陣 特徵值 特徵向量
均值 描述的是樣本集合的中間點。方差 描述的是樣本集合的各個樣本點到均值的距離之平均,一般是用來描述一維資料的。協方差 是一種用來度量兩個隨機變數關係的統計量。只能處理二維問題。計算協方差需要計算均值。如下式 方差與協方差的關係 方差是用來度量單個變數 自身變異 大小的總體引數,方差越大表明該變數的...