當前位置:成語大全網 - 新華字典 - PCA降維算法

PCA降維算法

降維是機器學習中很重要的壹種思想。在機器學習中經常會碰到壹些高維的數據集,它們會占用計算機的內存和硬盤空間,而且在運算時會減緩速度。

降維能夠使得數據量被壓縮,加快運算速度,減小儲存空間,以及方便可視化的觀察數據特點。

PS:在降維中,我們減少的是特征種類而不是樣本數量,樣本數量m不變,特征值數量n會減少。

壹種常用的降維算法是主成分分析算法(Principal Component Analysis),簡稱 PCA

PCA是通過找到壹個低維的線或面,然後將數據投影到線或面上去,然後通過減少投影誤差(即每個特征到投影的距離的平均值)來實現降維。

上圖是壹個包含二維特征值的樣本集。黑色的叉代表樣本,紅色的線表示找到的低維的線,綠色的叉則是樣本投影在線上的位置。而它們的投影距離就是PCA算法所需要考慮的。

通過上圖可以看出PCA算法就是找出壹個線,在數學上就是壹個向量,使得其他樣本投影到該向量上的距離最小。

推而廣之:

壹般情況下,將特征值的維度從n降到k,就是找到k個向量 ,使得樣本在這些向量上的投影最小。

例如,2維降到1維,就是找到1個向量,即壹條線;3維降到2維,就是找到2向量,即壹個平面。

數據處理

假設有m個樣本集:

下面需要對數據做壹下特征值縮放或者均值歸壹化。

先計算出平均值,然後用樣本值減去平均值。

然後用 替換 , 可以是數據最大值最小值的範圍或者標準差。

算法部分

我們需要的就是矩陣U,他是壹個n維方陣 ,它的每壹列就是我們需要的向量:

使用 矩陣可以降維:

那麽要回到原來的維度上去就需要:

這裏我們只能得到原來的近似值

與 近似相等,兩者之間的差就是投影誤差,或平均平方映射誤差:

數據的總變差(total variation),即樣本的長度平方的均值:

選擇維度k的最小值的方法:

表示平方投影誤差除以總變差的值小於0.01,用PCA的語言稱之為 保留了99%的差異性

PS:這個值是可以變化的,可以是95%,90%,85%等等。

使用循環驗證的辦法:

初始化 ,然後計算出 ,通過 計算出 和 ,然後通過上方的公式計算出值是不是小於0.01。

如果不是,增加k值,直到獲得最小的k值滿足條件。

快捷辦法

通過奇異值分解的到的矩陣 是壹個n維的對角矩陣:

通過這個矩陣可以來計算:

也可以用下面的式子:

這種方法就非常快捷高效。

我們在訓練集上通過PCA獲得矩陣 ,在交叉驗證集和測試集上就不能再使用PCA來計算矩陣了,而是直接用訓練集裏的矩陣來映射交叉驗證集和測試集上的數據。

PCA最常用的就是壓縮數據,加速算法的學習,或者可視化數據。

PCA的錯誤用法,用來防止算法過擬合

算法過擬合的原因之壹是算法過於復雜,特征值的維度過高,使用PCA可以降低維度,看起來會有效,但是實際上效果很差。防止算法過擬合還是使用正則化的方法來實現。

還有壹個註意點。就是在設計壹個機器學習算法時,不用壹開始就考慮降維,先在不使用PCA的條件下設計算法,當算法出現問題,例如,算法計算過慢,占用大量內存...,之後當確定需要使用PCA的時候再繼續使用。