特徵降維之PCA

2022-02-11 03:46:36 字數 4818 閱讀 8445

目錄

pca運算步驟

pca理論解釋

性質引數k的選取

資料重建

主觀理解

應用**示例

pca主要用於資料降維,是一種無監督學習方法。主成分分析利用正交變換將可能存在相關性的原始屬性轉換成一組線性無關的新屬性,並通過選擇重要的新屬性實現降維。由一系列特徵組成的多維向量,其中某些元素本身沒有區分性,比如某個元素在所有樣本中都相等,或者彼此差距不大,那麼那個元素對於區分的貢獻度小。我們的目的即為找到那些方差大的維,去掉變化不大的維。

將 n 維特徵對映到 k 維上(k

從n維降到k維:找k個向量\(u^,u^,...,u^\),將資料垂直對映到每個向量上,然後最小化對映誤差(projection error,距離均方誤差).

\[conv(x,y)=e\=e(xy)-e(x)e(y)

\]若等於0,則稱x和y不相關.

協方差的上界是\(|conv(x,y)|\le\sigma_1\sigma_2\),其中,\(var(x)=\sigma_1^2,var(y)=\sigma_2^2\),當且僅當x和y之間有線性關係時,等號成立.兩邊除以\(\sigma_1\sigma_2\)得到pearson相關係數.

協方差矩陣常用來篩選特徵(特徵降維).

如對矩陣x進行降維,\(x\in \mathbb r^\),並且已去過均值:

\[x= \begin

a_1 & a_2 &\dots &a_n \\

b_1 & b_2 &\dots &b_n

\end

\]目標是使得每個行向量的方差盡可能大,而行向量間的協方差為0(行與行之間的相關性盡可能小).(最大方差理論)

x對應的協方差矩陣為:

\[c_ =xx^t= \begin

\sum_^n a_i^2 &\sum_^n a_ib_i \\

\sum_^n a_ib_i &\sum_^n b_i^2

\end

\]協方差矩陣是對稱半正定,主對角線元為每個行向量的方差,次對角線元為行向量間的協方差.

協方差大於 0 表示 x 和 y 若有乙個增,另乙個也增;小於 0 表示乙個增,乙個減;協方差為 0 時,兩者獨立。協方差絕對值越大,兩者對彼此的影響越大,反之越小。

特徵值(eigen value),特徵向量(eigen vector)

\(a\mathbb x=\bbox[5px,border:1px solid red]\lambda\ \mathbb x\),則常數\(\lambda\)為矩陣a的特徵值,\(\mathbb x\)為\(\lambda\)對應的特徵向量.可以有多個.

基礎演算法:

從資料中減去均值,每個樣本除以各自的方差(方差歸一化)(預處理的實質是將座標原點移到樣本點的中心點)

求特徵協方差矩陣

求協方差矩陣的特徵值和特徵向量

將特徵值按照從大到小的順序排序,選擇其中最大的 k 個,然後將其對應的 k個特徵向量分別作為列向量組成特徵向量矩陣。

將樣本點投影到選取的特徵向量上。假設樣例數為 m,特徵數為 n,減去均值後的樣本矩陣為 dataadjust(mxn),協方差矩陣是 nxn,選取的 k 個特徵向量組成的矩陣為eigenvectors(nxk)。那麼投影後的資料 finaldata 為

\[\text(m \times k) =\text(m \times n)\times \text(n \times k)

\]這樣,就將原始樣例的 n 維特徵變成了 k 維,這 k 維就是原始特徵在 k 維上的投影,代表了原始的n個特徵。

有三個理論可以解釋為什麼協方差矩陣的特徵向量作為k維理想特徵:

下面解釋乙個比較容易理解的理論.

在訊號處理中認為訊號具有較大的方差,雜訊有較小的方差,訊雜比就是訊號與雜訊的方差比,越大越好。

理論,最好的 k 維特徵是將 n 維樣本點轉換為 k 維後,每一維上的樣本方差都

很大。降維的過程即高維向低維對映的過程(向一些軸投影).

投影的概念:向量\(\mathbb x^=(x_1^,x_2^,\dots,x_n^)^t\)在單位向量\(u=(u_1,u_2,\dots,u_n)^t\)(代表某條直線的方向向量)上的投影的長度為:\(\langle x^,u \rangle =}^tu=u^tx^\).

由於資料預處理後每一維度均值為0,投影後仍為0,因此方差為:

\[\sum_^m(}^tu)^2 =\sum_^m u^tx^}^tu =u^t(\sum_^mx^}^t)u

\]最後乙個等號後邊的二次項的中間部分即為樣本特徵的協方差矩陣.

用a來表示該協方差矩陣,用\(\lambda\)表示方差(目標函式),則上式寫作:

\[\lambda=u^tau

\]由於 u 是單位向量,即\(u^tu=1\),上式兩邊都左乘 u 得, \(u\lambda=\lambda u=uu^tau=au\),即\(au=\lambda u\)

可以看出,\(\lambda\)就是a的特徵值,u是特徵向量.最佳的投影直線是特徵值λ最大時對應的特徵向量,其次是λ第二大對應的特徵向量,依次類推。

因此,我們只需要對協方差矩陣進行特徵值分解,得到的前 k 大特徵值對應的特徵向量就是最佳的 k 維新特徵,而且這 k 維新特徵是正交的。得到前 k 個 u 以後,樣例 x 通過以下變換可以得到新的樣本:

\[y^= \begin

u_1^tx^ \\

u_2^tx^ \\

\vdots \\

u_k^tx^

\end

\in \mathbb r^k

\]pca 將 n 個特徵降維到 k 個,可以用來進行資料壓縮,如果 100 維的向量最後可以用10 維來表示,那麼壓縮率為 90%。同樣影象處理領域的 kl 變換使用 pca 做影象壓縮。但pca 要保證降維後,還要保證資料的特性損失最小。

由於pca只是簡單對輸入資料進行變換,所以它既可以用於分類問題也可用於回歸問題。

優點:不需要設定引數,結果僅與資料有關。可以方便的應用到各個場合。

在主成分分析中,保留的主成分的數目是由使用者來確定的。乙個經驗方法是保留所有大於1的特徵值,以其對應的特徵向量來做座標變換。此外,也可以根據不同特徵值在整體中的貢獻,以一定的比例進行保留,即計算降維後的資料與原始資料之間的誤差,令誤差和原始資料能量的比值小於某個預先設定的閾值,選擇使如下不等式成立的最小的k:

\]可以表述為原資料99%的方差被保留。分子是對映均方誤差,分母是資料的總方差.降維之後損失的資訊越多,方差越小.然而,上述公式不能直接計算,實際中用到奇異值分解:[u,s,v] = svd(x). svd得到的s是個對角矩陣,選擇使如下不等式成立的最小的k:

\[^k s_\over \sum_^m s_}\ge 0.99

\]如何從壓縮表示的資料中重建原本的資料?

壓縮(降維)過程:\(z=u^t_x\)

從主觀的理解上,主成分分析到底是什麼?它其實是對資料在高維空間下的乙個投影轉換,通過一定的投影規則將原來從乙個角度看到的多個維度對映成較少的維度。到底什麼是對映,下面的圖就可以很好地解釋這個問題——正常角度看是兩個半橢圓形分布的資料集,但經過旋轉(對映)之後是兩條線性分布資料集。

變換後的各分量,它們所包括的資訊量不同,呈逐漸減少趨勢。事實上,第一主分量集中了最大的資訊量,常常佔80%以上。第

二、三主分量的資訊量依次很快遞減,到

了第n分量,資訊幾乎為零。選擇較少的主成分來表示資料不但可以用作特徵降維,還可以用來消除資料中的雜訊。在訊號處理中認為訊號具有較大的方差,雜訊有較小的方差。在很多情況下,在特徵值譜中排列在後面的主成分(次成分)往往反映了資料中的隨機雜訊。因此,如果把特徵值很小的成分置為0,再反變換回原空間,則實現了對原資料的降噪。

從神經科學到計算機圖形學都有它的用武之地。被譽為應用線形代數最有價值的結果之一。

壓縮降維:

資料視覺化(通常是2d,3d)

雖然可能能夠降低模型過擬合,但不是防止過擬合的根本方法,應該考慮對引數加正則項.在設計機器學習系統之前不要急著想要使用pca,應該先使用原始資料,效果不好或系統不能承受(計算,儲存量大等)再使用pca.

點選這裡參考ipython-notebook

# transforming the data

n_components=2

pca = pca(n_components)

x_reduced = pca.fit_transform(x)

# ('x shape: ', (70000, 784)),x_reduced.shape=(70000, 2)

# important thing - how much variance is explained by each dimension

print ('ratio of variance explained: ', pca.explained_variance_ratio_)

# ('ratio of variance explained: ', array([ 0.09746116, 0.07155445]))

principal_components = pca.components_ # (2, 784)

# reconstructing data

pca_rec = pca(n_components)

x_reduced_rec = pca_rec.fit_transform(x)

principal_components_rec = pca_rec.components_

rec = np.dot(x_reduced_rec, principal_components_rec)

機器學習之PCA降維

1.前言 如果學習分類演算法,最好從線性的入手,線性分類器最簡單的就是lda,它可以看做是簡化版的svm,如果想理解svm這種分類器,那理解lda就是很有必要的了。2.線性判別分析 lda 1 lda思想 lda是一種監督學習的降維技術,也就是說它的資料集的每個樣本是有類別輸出的。這點和pca不同。...

PCA降維演算法

文章由兩部分構成,第一部分主要講解pca演算法的步驟,第二部分講解pca演算法的原理。那麼首先進入第一部分 pca演算法的步驟 樣本矩陣x的構成 假設待觀察變數有m個,其實相當於乙個資料在m維各維度上的座標,我們的目標是在保證比較資料之間相似性不失真的前提下,將描述資料的維度盡量減小至l維 l樣本矩...

PCA降維原理

在之前的介紹中,一幅影象只能表示乙個物件。那麼對於w x h的灰度影象,只能表示為w x h位的向量,那麼乙個有100 100的影象就需要10000維的向量空間。對於一幅人臉而言,是否所有維的資料都是有用的呢?在矩陣論當中我們知道,矩陣可以近似的表示為乙個特徵值與特徵向量的乘積。根據這個原理,如果我...