# 降維 Dimension Reduction
###### tags: `Machine Learning`
這裡會提到的演算法有:
* 主成分分析 Principal component analysis,PCA
* 核函數主成分分析 Kernel principal component analysis, Kernel PCA
## 為什麼要降維?
* 數據的多重共線性:特徵屬性之間存在著相互關聯關係。多重共線性會導致解的空間不穩定, 從而導致模型的泛化能力弱
* 高維空間樣本具有稀疏性,導致模型比較難找到數據特徵
* 過多的變量會妨礙模型查找規律
* 僅僅考慮單個變量對於目標屬性的影響可能忽略變量之間的潛在關係。通過特徵選擇/降維的目的是:
* 減少特徵屬性的個數
* 確保特徵屬性之間是相互獨立的
## 降維的方法

## 主成分分析 Principal Component Analysis, PCA
* 一種分析、簡化數據集的技術;也可視為是資料預處理
* 經常用於<font color='blue'>減少數據集的維度</font>,同時**保持**數據集中,對變異數貢獻最大的特徵
* 方法:
1. 對共變異數矩陣進行特徵分解,以得出數據的主成分(即特徵向量)與它們的權值(即特徵值)
2. 在原數據中除掉最小的特徵值所對應的成分,使得降維失去最少的訊息
* 如果一個多元數據集能夠在一個高維數據空間座標系中被顯現出來,那麼 PCA 就能夠提供一幅比較低維度的圖象,這幅圖像即為在訊息最多的點上原物件的一個「**投影**」
* 當數據集中含有 $m 個自變量時,PCA 可以從所有的自變量中提取 $p$ 個新的自變量,其中 $m\leq m$
* 這 $p$ 個自變量可以較好的解釋數據自變量的差異性(方差),無論應變量是多少
* 特點:
* 由於 PCA 依賴所給數據,所以數據的準確性對分析結果影響很大
* PCA 在分析複雜數據時尤為有用(如:人臉辨識)
### 說明
以下內容完全搬運陳怡永教授的 PPT,更多內容可以參考[機器學習(20)——數據降維為什麼要降維?PCA原理LDA比較](https://cloud.tencent.com/developer/article/1111769)。
1. 對 X 進行<font color='red'>特徵縮放</font>
* 假設 X 為包含所有 m 個自變量的矩陣
2. 計算 X 的<font color='red'>方差矩陣 A</font>
3. 計算矩陣 A 的<font color='red'>特徵值</font>與<font color='red'>特徵向量</font>
* 依據特徵值進行排序
4. 選擇解釋方差的百分比 P,並選擇前 p 個特徵值,以符合 $\dfrac{\sum^{p}_{j=1} \lambda_j}{\sum^{m}_{i=1} \lambda_i} \geq P$
5. 此 p 個特徵值的特徵向量即為主要成分
* 運用 p 個特徵向量組成的<font color='red'>投射矩陣</font>,將最初的 m 維特徵空間投射到 p 維空間
## 核函數主成分分析 Kernel PCA
一般來說,PCA 適用於數據的線性降維。而 Kernel PCA 可實現數據的非線性降維,用於處理<font color='red'>線性不可分</font>的數據集。
### 說明
對於輸入空間(Input space)中的矩陣 $X$,我們先用一個非線性映射把 $X$ 中的所有樣本映射到一個高維甚至是無窮維的空間(稱為特徵空間,Feature space)使其線性可分,然後在這個高維空間進行PCA降維。
更詳細的內容可以參考[數據降維: 核主成分分析(Kernel PCA)原理解析
](https://zhuanlan.zhihu.com/p/59775730)
### 示意圖
下圖左邊是在二維空間呈現線性不可分的資料,利用 kernel PCA 可以將其轉換成右邊的三維空間,使其變成線性可分。
:::info

:::