在機器學習中,特徵數量過多可能會引起一些問題,例如:
- 過擬合 (overfitting)
- 處理速度較慢
- 如果超過三個特徵以上不好視覺化
因此在這種情況下,我們需要對特徵進行降維。在實際應用中,手動挑選特徵明顯不是一個明智的方法。下面介紹兩種在機器學習中常用的降維方法。
PCA(主成份分析)
在介紹 PCA 之前,我們先定義目標:
將具有 n 個特徵空間的樣本,轉換為具有 k 個特徵空間的樣本,其中 k < n
以下是 PCA 的主要步驟:
- 將數據標準化
- 建立共變異數矩陣(covariance matrix)
- 利用奇異值分解(SVD)求得特徵向量(eigenvector)和特徵值(eigenvalue)
- 通常特徵值由大到小排列,選取前 k 個特徵值和特徵向量
- 將原始數據投影到特徵向量上,得到新的特徵數
PCA 中最重要的部分是奇異值分解。接下來談談奇異值分解。
直觀理解奇異值分解
在矩陣分解中,奇異值分解是一種著名的方法。矩陣分解在高中數學中最常見的用途之一是解方程式(如 LU 分解)。從奇異值分解的公式中,我們可以直觀地了解:
其中 A 是一個 m x n 的矩陣,𝑈 和 V 都是正交矩陣,𝛴 是奇異值矩陣。奇異值矩陣是矩陣 A 對應的特徵值,在 PCA 中也被稱為主成份,代表保存訊息的重要程度,通常按降序排列在對角線上,是一個對稱矩陣。
這裡的 A 對應什麼呢?當然是我們的特徵,但特別要注意的是,這裡的 A 通常使用**共變異數矩陣(covariance matrix)**來計算。記住,在進行奇異值分解之前,數據必須先進行正規化。
共變異數矩陣(covariance matrix)
共變異數矩陣通常用 Sigma 表示,不要與上面的 𝛴 混淆。因此,要進行降維,可以用 U 的前 k 列乘以對應的 𝛴 中的特徵向量,從而獲得新的特徵。從幾何角度來看,
這樣的運算在幾何中實際上是將 X 投影到 U 的前 k 個向量。
從圖中可以看到,黑線表示特徵向量,其長度為特徵值。
PCA 的應用
在降維時,我們希望保留最重要的特徵,而捨棄其他不太重要的特徵。
例如,在判斷一個人時,最重要的判別方式可能是眼睛、鼻子、嘴巴等特徵,所以膚色、頭髮等特徵可以被捨棄。事實上,在人臉辨識中,常常使用 PCA 進行降維。
這是對奇異值分解相當直觀的理解。由於篇幅限制,無法深入探討。如果對奇異值分解感興趣,可以參考維基百科。
t-SNE
PCA 是一種直觀且有效的降維方法,但是從三維降到二維時,我們可以看到,一些數據集群完全被搗成一團。
PCA 是一種線性降維方法,但如果特徵之間存在非線性關係,使用 PCA 可能會導致欠擬合。
t-SNE 是另一種降維方法,它使用更複雜的公式來表示高維和低維之間的關係。t-SNE 主要是通過使用高斯分佈的概率密度函數來近似高維數據,並使用 t 分佈來近似低維數據,然後使用 KL 距離計算相似度,最後使用梯度下降(或隨機梯度下降)求解最佳解。
高斯分佈的概率密度函數
其中,X 是隨機變量,𝝈 是變異數,𝜇 是平均值。
因此,原始高維數據可以表示為:
低維數據可以使用 t 分佈的概率密度函數表示(自由度為 1):
其中,x 是高維數據,y 是低維數據。P 和 Q 分別表示概率分佈。
為什麼要使用 t 分佈來近似低維數據呢?主要是因為在轉換為低維後,會損失許多信息,為了不受異常值的影響,可以使用 t 分佈。
當樣本數較少時,t 分佈可以更好地模擬母體分佈,不容易受到異常值的影響。
兩個分佈之間的相似度
通常使用 KL 距離(Kullback-Leibler Divergence)來計算兩個分佈之間的相似度,也稱為相對熵(Relative Entropy)。
t-SNE 中使用困惑度(Perp)作為超參數。
該論文中提到,通常困惑度在 5 到 50 之間。
成本函數
使用 KL 距離計算成本:
梯度可以表示為:
最後使用梯度下降法(或隨機梯度下降法)找到最小值。
實驗:使用 MNIST 測試
可以從這裡下載測試集。首先,我們先使用 PCA 將其降維到二維。
PCA
PCA 降維
可以看到,降維後的數據幾乎被搗成一團,完全看不出集群。這是因為 PCA 的線性降維過程中損失了太多訊息。
t-SNE
接下來使用 t-SNE 進行測試。
使用 t-SNE 降維
這是使用 t-SNE 降維後的結果,可以看到降維後的數據仍然清晰地分為不同的集群。從這兩張圖可以明顯看出 PCA 和 t-SNE 的差異。
小結
後來有人提出了一系列改進 t-SNE 效能的算法,詳情可以參考Accelerating t-sne using tree-based algorithms,大多數熱門的資料分析程式語言都已實現了這些算法,例如 sklearn、R、matlab 等。
然而,由於 t-SNE 不是線性降維,執行時間比 PCA 更長。
- 當特徵數量過多時,使用 PCA 可能會導致降維後的特徵欠擬合(underfitting),此時可以考慮使用 t-SNE 進行降維。
- t-SNE 的執行時間較長。
- 論文中還提出了一些優化技巧(如如何選擇困惑度等),由於尚未閱讀完畢,將逐漸補充。