本筆記涵蓋機器學習中兩個至關重要的步驟:資料預處理和特徵工程。這兩個環節是確保模型效能的基石,其重要性甚至超過模型演算法本身。
一、資料預處理
在開始任何機器學習任務前,首先要對原始資料進行預處理。這是一個包含探索性分析、資料清洗和特徵工程的流程。
探索性分析 (Exploratory Data Analysis, EDA)
探索性分析是透過視覺化圖表和統計方法,對原始資料進行初步了解的過程。其主要目的在於:
-
了解資料集的基本資訊:掌握資料的結構、類型和概況。
-
為資料清洗提供方向:識別資料中的問題,例如重複值、缺失值或異常值。
-
為特徵工程提供方向:發掘資料中的潛在模式和有價值資訊。
資料清洗 (Data Cleansing)
「好的資料勝過好的演算法。」這句話點出了資料清洗的重要性。現實中的資料集往往是「不乾淨的」,可能存在以下問題:
-
重複記錄:資料集中存在完全相同的多條記錄。
-
不相關記錄:資料集中包含與分析目的無關的數據。
-
無用的特徵資訊:某些欄位(如身份證號碼)對分析結果沒有影響。
-
文字拼寫錯誤:明顯的輸入錯誤,例如「beijing」和「Beijing」。
-
資訊格式不統一:同一特徵有多種表示方式,例如「陝西省」和「陝西」。
-
離群值 (Outlier):明顯偏離資料常態的數值,例如年齡為 175。
-
缺失資料 (Missing Data):表格中某些欄位資訊空白。
二、特徵工程 (Feature Engineering)
特徵工程又稱特徵提取,是從原始資料中尋找並建立合適特徵的過程。在許多機器學習任務中,這不僅是最重要,也是最耗時的環節。一個好的特徵集能顯著提升模型表現,甚至比使用複雜的模型演算法更有效。在 Kaggle 競賽中,參賽者平均花費超過 70% 的時間在特徵工程上。
處理離群值
處理離群值時,不應輕易刪除。即使數值過大,它也可能包含有價值的資訊。除非有確切證據證明其為錯誤數據,否則應謹慎處理。
處理缺失值
處理缺失值有幾種常見方法:
-
填充法:使用均值、中位數或眾數來填充缺失值。這種方法快捷方便,但若缺失值佔比較大,可能會引入雜訊,影響分析結論。更複雜的填充方式包括插值或模型擬合。
-
刪除法:刪除包含缺失值的特徵。當某個特徵大部分值都缺失且對分析沒有幫助時,可以考慮此方法。
-
保留法:將缺失值視為一個獨立類別。這種方法特別適用於分類型資料,能保留缺失值本身所帶有的資訊。