在數據處理中,特徵縮放是一種用來正規化獨立變量或特徵範圍的方法。這一過程也被稱為數據正規化,並通常在數據預處理過程中執行。特徵縮放的主要目的在於使不同範圍的數據能夠以更一致的方式參與到機器學習算法中,從而提高模型的準確性和性能。
原始數據的範圍變化非常廣泛,在某些機器學習算法中,目標函數在未經正規化的情況下無法正常工作。
例如許多分類器通過歐幾里得距離來計算兩點之間的距離,如果其中一個特徵具有較大的數值範圍,那麼距離計算將受到這個特徵的主導影響。因此,所有特徵的範圍都應被正規化,以使每個特徵大致以相同比例對最終距離做出貢獻。
另一個需要進行特徵縮放的原因是,使用梯度下降法進行優化時,進行特徵縮放能夠大大加快收斂速度。如果在損失函數中使用了正則化,則進行特徵縮放也會確保係數的懲罰應用到位。實證研究顯示,特徵縮放能顯著提升隨機梯度下降法的收斂速度。在支援向量機中,使用特徵縮放可讓尋找支持向量的時間顯著減少。
特徵縮放通常在涉及數據點之間的距離和相似度的應用中使用,例如聚類和相似度搜索。
最小-最大正規化是最簡單的方法之一,通過將特徵的範圍重新縮放到 [0, 1] 或者 [-1, 1] 來實現。選擇目標範圍取決於數據的特性。該方法的公式如下:
x' = (x - min(x)) / (max(x) - min(x))
假設學生體重數據的範圍在 [160 磅,200 磅],為了進行數據縮放,我們首先從每個學生體重中減去 160,然後將結果除以 40(即最大和最小體重之間的差)。如果需要將範圍縮放到任意值 [a, b],公式將變為:
x' = a + (x - min(x)) * (b - a) / (max(x) - min(x))
均值正規化的公式為:
x' = (x - mean(x)) / (max(x) - min(x))
這裡的 mean(x) 是該特徵向量的均值。均值正規化的另一種形式是將其除以標準差,這就是所謂的標準化。
標準化處理使每個特徵的值具有零均值(即數據減去均值)和單位方差。該方法在許多機器學習算法中被廣泛使用。通用的計算方法是,首先為每個特徵計算分佈的均值和標準差,然後從每個特徵中減去均值,最後將每個特徵的值除以其標準差,公式如下:
x' = (x - mean(x)) / σ
魯棒縮放是使用中位數和四分位範圍(IQR)來進行的標準化,這種方法對異常值的影響不敏感。公式為:
x' = (x - Q2(x)) / (Q3(x) - Q1(x))
這裡的 Q1, Q2 和 Q3 分別是特徵的第一、第二(中位數)和第三四分位數。
單位向量正規化將每個數據點視為一個向量,然後除以其向量的範數,公式為:
x' = x / ||x||
可以使用任何向量範數,但最常用的範數是 L1 項和 L2 項。
在機器學習模型訓練的過程中,特徵縮放是一個關鍵的步驟。未經縮放的數據不僅可能使模型性能降低,還會影響算法的運行效率。面對日益增長和複雜的數據集,合理地選擇及使用特徵縮放方法顯得尤為重要。成功的機器學習模型是否依賴於對數據的精確處理與前期準備,你覺得呢?