數據降維的主要方法:
投影和流形學習
投影:
高維空間的所有訓練實例實際上(或近似於)受一個低得多的低維子空間所影響
投影並不是降維的最佳方法。許多情況下,許多情況下,子空間可能會彎曲或轉動,比如
著名的瑞士捲玩具數據集
簡單地進行平面投影會直接將瑞士捲的不同層壓扁在一起。
d維流形就是n維空間的一部分,局部類似於一個d維超平面。在瑞士捲的例子中,d=2,n=3:它局部類似於一個2D平面,但是在第三個維度捲起。
流形學習:
許多降維算法是通過對訓練實例進行流形建模來實現的,這被稱爲流形學習。
PCA
主成分分析(PCA)是迄今爲止最流行的降維算法。
將訓練集投影到低維超平面之前,需要選擇正確的超平面。選擇保留最大差異性的看起來比較合理,比其他方式丟失的信息更少。
或者,比較原始數據集與其軸上的投影之間的均方距離,使這個均方距離最小的軸是最合理的選擇。
PCA流程:
例:
主成分
軸的數量與數據集維度數量相同
定義第i條軸的單位向量就叫作第i個主成分。第一個主成分是c1,第二個主成分是c2.
標準矩陣分解技術,奇異值分解
它可以將訓練集矩陣X分解成三個矩陣的點積USV,其中V包含我們想要的所有主成分
主成分矩陣:
下面的python代碼使用numpy的svd()函數來獲取訓練集中所有的主成分,並提取前兩個
x_centered = x - x.mean(axis=0)
u,s,v = np.linalg.svd(x_centered)
c1 = v.T[:, 0]
c2 = v.T[:, 1]