PCA原理(一)


將由以下幾個部分介紹PCA相關知識:

(一)什么是PCA?

(二)PCA的目的是什么?

(三)通俗理解PCA

(四)預備知識

(五)PCA的數學原理

(六)python代碼示例

 

一、什么是PCA?

PCA: 全名 Principal components analysis,主成分分析。主要用於降維,保留低階主成分,忽略高階主成分。

二、PCA的目的是什么?

1、在機器學習中降維,降低特征復雜度

2、提取主要特征信息

3、去除特征之間的冗余信息

三、通俗理解PCA

PCA 是為了降低特征的維度。在實際工作中,可能會遇到特征維數過多,且部分特征具有一定相關性。比如:學習時間與學習成績,一般學習時間越長越容易取得比較好的成績,即學習時間與成績呈正相關,可以找一個維度來表現這兩個特征,而不會帶來過多的信息損失。

PCA最大可分思想:

假設有數據集是$n$維的,共有$m$個數據$\left(x_{1}, x_{2}, \dots, x_{m}\right)$。若想要將這$m$個數據從$n$降到$n^{\prime}$維,希望這$m$個$n^{\prime}$維數據盡可能代表原始數據集。

考慮最為簡單的情況,就是$n=2, n^{\prime}=1$。

上圖中,將所有的數據點,投影到$u_{1}$會比投影到$u_{2}$上更分散一些,這就是最大可分性。

四、預備知識

基變換的概念,本人初次接觸是在機器人運動學分析中遇到的,在多機械臂運動控制中,常常需要絕對坐標系與相對坐標系的變換。但是此處的基變換適用范圍要更廣,認識也要更為深刻。

過渡矩陣:

$x_{1},x_{2},...,x_{n}$是$V^{n}$空間內的一組舊基,$y_{1},y_{2},...,y_{n}$是$V^{n}$空間內的一組新基,則兩者之間的關系可以用下式表示:

\begin{equation}
\left\{\begin{array}{l}{y_{1}=c_{1} x_{1}+c_{12} x_{2}+\ldots+c_{1n} x_{n}} \\ {y_{2}=c_{21} x_{1}+c_{22} x_{2}+\ldots+c_{2n} x_{n}} \\ {\vdots} \\ {y_{n}=c_{n1} x_{1}+c_{n2} x_{2}+\ldots+c_{n n} x_{n}}\end{array}\right.
\end{equation}

同時可以寫成矩陣的形式:

\begin{equation}
Y=\left(y_{1}, y_{2}, \ldots, y_{n}\right)^{T}=C\left(x_{1}, x_{2}, \ldots, x_{n}\right)^{T}=C X
\end{equation}

由此可以想到,向量在X坐標下,如何變換到Y坐標下。

(自行分析,很簡單)

下面是理解的重點:

 上面的情況是新舊基的數量是相同的,如果將基的數目設置為不同,即Y中基的數目不是$n$,而是小於$n$的值,那么就可以降低維度。

方差與協方差:

根據前面PCA最大可分的思想,是將原始數據向新的基上面投影,求取方差,使得方差最大。通過這種方式來選取新的基。

\begin{equation}
\operatorname{Var}(a)=\frac{1}{m} \sum_{i=1}^{m}\left(a_{i}-\mu\right)^{2}
\end{equation}

在高維的情況下來思考的話,就是將數據在一個方向上投影,這個方向上的投影點方差最大,這樣很容易就可以選擇出第一個基,但是在選擇第二個基的時候,按照這種方法,選擇的第二個基會跟第一個基“幾乎重合在一起”。這時候就會想到協方差:

\begin{equation}
\operatorname{Cov}(a, b)=\frac{1}{m} \sum_{i=1}^{m} (a_{i}-\mu_{a}) (b_{i}-\mu_{b})
\end{equation}

協方差為0,則兩組基是正交的。(這不就是求取的兩個向量之間的夾角嗎)

關於均值與基變換的一點:

特征零均值化就是所有的數據都減去的均值,數據集變成了均值為0

\begin{equation}
\left(\mu_{x}, \mu_{y}\right)=\frac{1}{m} \sum_{i=1}^{m}\left(x_{i}, y_{i}\right)
\end{equation}

\begin{equation}
\left(x_{i}^{\prime}, y_{i}^{\prime}\right)=\frac{1}{m} \sum_{i=1}^{m}\left(\left(x_{i}, y_{i}\right)-\left(\mu_{x}, \mu_{y}\right)\right)
\end{equation}

新的基$(z, n)$為單位向量,$\left(x_{0}, y_{0}\right)$在新的基上的投影為$\left(x_{0}, y_{0}\right) \star(z, n)$

 \begin{equation}
\left(\mu_{x_{z}}, \mu_{y_{n}}\right)=\frac{1}{m} \sum_{i=1}^{m}\left(x_{i}^{\prime}, y_{i}^{\prime}\right) \cdot(z, n)=\frac{1}{m}(z, n) \sum_{i=1}^{m}\left(x_{i}^{\prime}, y_{i}^{\prime}\right)=(0,0)
\end{equation}

如果一開始數據已經進行了特征零均值化,那么在任何基的投影上的均值還是為0

協方差矩陣對角化:

 數據都是經過特征零均值化的,所以公式里面不再保留$\mu$。

設$Y$為原始數據$X$做完PCA降維后的數據,滿足$Y=X P$(矩陣乘法相當於映射,若$P$為的列向量為基向量,那么就相當於映射到新的坐標系),$Y_{c}$,$X_{c}$分別為對應的協方差矩陣,那么

\begin{equation}
\begin{array}{l}{Y_{c}=\frac{1}{m} Y^{T} Y} \\ {=\frac{1}{m}(X P)^{T} X P} \\ {=\frac{1}{m} P^{T} X^{T} X P} \\ {=P^{T}\left(\frac{1}{m} X^{T} X\right) P} \\ {=P^{T} X_{c} P}\end{array}
\end{equation}

 所以該問題就變成了只需要計算出$P$,使$Y_{c}=P^{T} X_{c} P$滿足對角矩陣的條件即可。而$X_{c}$為實對稱矩陣,我們只需要對它做矩陣對角化即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM