ch11 特徵選擇與稀疏學習

Blackteaxx發表於2024-06-21

子集選擇與評價

緩解維度災難的另一種重要方法是進行特徵篩選,同時它也能降低學習任務的難度,只留下關鍵特徵。

對當前學習任務有用的屬性稱為“相關特徵”,而對當前學習任務沒有用的屬性稱為“無關特徵”,包含資訊能被其他特徵表示的屬性稱為“冗餘特徵”。

如果想要從原始特徵集中選擇出一個子集,那麼就是一個特徵選擇問題。特徵選擇通常包含以下兩個環節

  • 子集搜尋:搜尋最優特徵子集
    暴力搜尋會遇見組合爆炸問題,所以需要一些啟發式方法,如貪心法(前向、後向、雙向)

  • 子集評價:評價特徵子集的好壞
    評價指標有很多,如資訊增益、資訊增益比、基尼指數、方差、相關係數等

常見的特徵選擇方法有:過濾法、包裹法、嵌入法

過濾法

先對資料集進行特徵選擇,再用特徵子集訓練模型,特徵選擇過程與學習過程無關

著名的演算法有:Relief、Relief-F

Relief 設計了一個相關統計量用於度量特徵的重要性

相關統計量:對於每一個樣本點\(x_i\),尋找與其最近鄰的樣本點\(x_{i,nh}\)(同類)和\(x_{i,nm}\)(異類),於是我們可以定義如下的相關統計量

\[\delta^j = \sum_{i=1}^m - \text{diff}(x_{i,j}, x_{i,nh,j})^2 + \text{diff}(x_{i,j}, x_{i,nm,j})^2 \]

那麼最終得到的一個統計量向量越大,說明子集選擇的越好,分類效能越強

包裹法

直接利用學習器的效能來評價特徵子集的好壞,通常效果更好,但計算開銷也更大

著名的演算法有:LVW 框架,在特徵選擇的過程中使用了隨機演算法

嵌入法

將特徵選擇過程與學習過程融為一體,直接在學習器上進行特徵選擇

著名的演算法有: L1 正則化、L2 正則化

對於線性迴歸演算法,我們通常認為有這樣一條直線可以擬合資料

\[Y = XW \]

\(X\)不可逆時,我們使用最小二乘法,即

\[\min \| Y - XW \|_2^2 \]

\[W = (X^T X)^{-1} X^T Y \]

\(X\)列不滿秩時,即\(X^T X\)不可逆,即樣本特徵多於樣本數,此時我們可以使用正則化

\[\min \| Y - XW \|_2^2 + \lambda \| W \|_2^2 \]

\[W = (X^T X + \lambda I)^{-1} X^T Y \]

保證了\(X^T X + \lambda I\)可逆,從而解決了多重共線性問題

這是一種罰函式法,即在目標函式中加入了一個罰函式,使得最佳化問題變得更加複雜

最直觀的罰函式是 L0 範數,即非零元素的個數,但是 L0 範數是一個非凸函式,所以我們通常使用 L1 範數,L1 通常能獲得稀疏解,即有些特徵的權重為 0

img

因此可以說,L1 正則化是一種特徵選擇方法

L1 正則化的求解方法

可以使用近端梯度下降法(Proximal Gradient Descent),對於最佳化目標

\[\min_x f(x) + \lambda \| x \|_1 \]

如果滿足 Lipschitz 連續梯度條件,即

\[\exist L > 0, \quad \| \nabla f(x) - \nabla f(y) \|_2 \leq L \| x - y \|_2, \quad \forall x, y \]

那麼在\(x_k\)處對目標函式進行二階泰勒展開,有

\[f(x) \approx f(x_k) + \nabla f(x_k)^T (x - x_k) + \frac{L}{2} \| x - x_k \|_2^2 \\ = \frac{L}{2} \| x - (x_k - \frac{1}{L} \nabla f(x_k)) \|_2^2 + \text{const} \]

? 那麼我們可以得到

\[x_{k+1} = \arg \min_x \frac{L}{2} \| x - (x_k - \frac{1}{L} \nabla f(x_k)) \|_2^2 \\ \Rightarrow x_{k+1} = x_k - \frac{1}{L} \nabla f(x_k) \]

最小值可以透過如上的迭代方式求解,即梯度下降法是對 二次擬合函式的近似

那麼應用到 L1 正則化的問題上,我們可以得到

\[x_{k+1} = \arg \min_x f(x_k) + \nabla f(x_k)^T (x - x_k) + \frac{L}{2} \| x - x_k \|_2^2 + \lambda \| x \|_1 \\ \Rightarrow x_{k+1} = \arg \min_x \frac{L}{2} \| x - (x_k - \frac{1}{L} \nabla f(x_k)) \|_2^2 + \lambda \| x \|_1 \]

這個問題不存在交叉項,因此可以使用座標軸下降法(Coordinate Descent)求解,即

\[x_i^{(k+1)} = \arg \min_{x_i} \frac{L}{2} (x_i - z_i^{k})^2 + \lambda |x_i| \]

求導數,令導數為 0,即可得到

\[x_i^{(k+1)} = \begin{cases} z_i^{(k)} - \frac{\lambda}{L}, & z_i^{(k)} > \frac{\lambda}{L} \\ 0, & |z_i^{(k)}| \leq \frac{\lambda}{L} \\ z_i^{(k)} + \frac{\lambda}{L}, & z_i^{(k)} < -\frac{\lambda}{L} \end{cases} \]

L1 正則化的求解方法

相關文章