數據預處理在機器學習或深度學習演算法中都起著重要作用,可能存在的操作有:
其中針對缺失值,一般都採用均值填充。針對數據歸一化,有以下幾種辦法(來自斯坦福大學深度學習Ufldl):
數據的預處理對後續的處理十分重要,因為很多默認參數(如 PCA-白化中的 epsilon)都假定數據已被縮放到合理區間。
根據jasonfreak的博客,首先我們從兩個方面考慮選擇特徵:
具體可以從以下幾個角度來進行選擇特徵:
互信息法針對每一種特徵 計算其與標籤 的信息量 ,然後根據信息量排序,選取其中前 個特徵,關鍵在於如何計算 ,這裡我們採用KL距離(Kullback-Leibler):
所以 如下:
衡量的是特徵 與標籤 的相關性,如果相互獨立,那麼 ,所有 距離為0,如果相二者密切相關,那麼KL距離會很大。
當特徵選擇完成後,可以直接訓練模型了,但是可能由於特徵矩陣過大,導致計算量大,訓練時間長的問題,因此降低特徵矩陣維度也是必不可少的。
常見的降維方法有主成分分析法(PCA)和線性判別分析(LDA),線性判別分析本身也是一個分類模型。PCA和LDA有很多的相似點,其本質是要將原始的樣本映射到維度更低的樣本空間中,但是PCA和LDA的映射目標不一樣:PCA是為了讓映射後的樣本具有最大的發散性,LDA為了讓映射後的樣本具有最好的分類性能。所以說PCA是一種無監督的降維方法,而LDA是一種有監督的降維方法。
除了這兩個之外,還有一些其他方法或者輔助的方法,比如白化(ZCA)、奇異值分解(SVD)、獨立成分分析(ICA)等。
PCA的主要思想是將 維特徵映射到 維上,並且這 維是正交的特徵。PCA的步驟如下:
詳細解釋可見:主成分分析PCA演算法:為什麼去均值以後的高維矩陣乘以其協方差矩陣的特徵向量矩陣就是「投影」?
關於PCA演算法為什麼如上述步驟這麼做,有幾種解釋:最大方差解釋、平方誤差解釋和坐標軸相關度解釋。
最大方差解釋:
在信號處理中認為信號具有較大的方差,雜訊有較小的方差,信噪比就是信號與雜訊的方差比,越大越好。所以我們應讓降維後的結果擁有最大的方差。因此我們認為,最好的k維特徵是將n維樣本點轉換為k維後,每一維上的樣本方差都很大。
假設 是特徵向量, 是樣本數, 是第 維值大小,那麼投影后的方差如下圖:
由於PCA在最開始就保證了每一維的均值都是零,所以可以如上圖表示。如果我們令 , ,可以得到:
,
,其中 是 的協方差矩陣, 就是協方差矩陣的特徵值, 就是協方差矩陣的特徵向量,我們需要讓投影后的方差最大,由於協方差矩陣的特徵值就是投影后的方差,所以找特徵值最大的方向投影,就可以得到最大方差。
其他兩種解釋可以詳見主成分分析(Principal components analysis)-最小平方誤差解釋。
有時數據的分佈並不是滿足高斯分佈的,在非高斯分佈的情況下,PCA方法得出的主元可能並不是最優的。在尋找主元時不能將方差作為衡量重要性的標準。要根據數據的分佈情況選擇合適的描述完全分佈的變數。這時我們就需要利用獨立成分分析(ICA),當數據滿足高斯分佈時,PCA與ICA等價。PCA也通常看做ICA的預處理步驟。
ICA的主要思想是認為我們得到的特徵是有多個相互獨立的特徵疊加得到的,我們要做的就是通過現有的特徵還原為相互獨立的特徵。如果把現有的特徵表示為 ,把本來相互獨立的特徵表示為 ,那麼我們可以得到:
由於我們假定的 為相互獨立的特徵,所以 的聯合分佈為:
帶入 ,可以得到 的聯合分佈(詳細可見獨立成分分析):
此時只要我們知道了 的分佈,就可以通過極大似然估計來求 了。由於概率函數是單調遞增的,並且在 內。所以我們通產選擇sigmoid函數作為概率函數,即:
那麼概率密度函數 ,然後就可以得到:
,然後可以利用梯度上升的方法求 :
求出 後就可以利用 求出相互獨立的特徵 。
ICA在盲信號分析領域的一個強有力方法,也是求非高斯分佈數據隱含因子的方法。使用ICA的前提條件是,認為樣本數據由獨立非高斯分佈的隱含因子產生,隱含因子個數等於特徵數,我們要求的是隱含因子。
LDA的主要目的與PCA相同,就是將數據降維,將高維數據投影到低維。但是LDA的思想和PCA有很大區別,首先PCA是無監督的,也就是數據降維時不會參考到數據的標籤,但是LDA的會根據數據的標籤來進行數據降維。主要思想的不同體現在投影的方向上,PCA是將高維數據投影到方差最大的方向,而LDA是將高維數據投影到類間距離最大、類內方差最小的方向。
推薦閱讀: