由於當今數據的數量龐大且來自於各種不同類型的來源,因此出現數據異常的可能性不斷增加。鑑於高質量數據可生成更好的模型和預測,數據預處理的重要性與日俱增,並且已經成為數據科學、機器學習、AI 管道中的基本步驟。在本文中,我們將探討數據處理需求,並討論用於完成此流程中每個步驟的不同方法。
在數據收集過程中,存在三個影響數據質量的主要因素:
準確率:與期望值之間存在偏差的錯誤值。數據不準確的原因多種多樣,包括:
數據輸入和傳輸期間發生的人為錯誤、計算機錯誤
用戶有意提交錯誤值(稱為「偽裝缺失數據」)
輸入欄位格式錯誤
訓練示例重複
完整性:缺少屬性值、特徵值或者關聯值。數據集可能因以下原因而不完整:
一致性:數據聚合不一致。
影響數據質量的一些其他特徵還包括及時性(在某些時間段之後但在提交所有相關信息之前數據不完整)、可信度(用戶信任的數據量)以及可解釋性(所有利益相關方是否都能輕鬆理解數據)。
為確保獲得高質量的數據,對數據進行預處理就顯得至關重要。為了簡化此流程,數據預處理分為四個階段:數據清理、數據集成、數據縮減和數據轉換。
數據清理「數據清理」是指用於「清理」數據的方法,具體包括移除異常值、替換缺失值、將幹擾數據進行平滑處理以及糾正不一致數據。在執行上述每一項任務的過程中會使用到多種不同方法,將根據用戶偏好或問題集來確定具體使用的方法。下面從問題解決方法的角度介紹了每一項任務。
缺失值為了解決缺失數據的問題,可採用多種方法。讓我們來逐一了解這些方法。
移除訓練示例:如果缺少輸出標籤(如果這屬於分類問題),那麼可以忽略訓練示例。通常不鼓勵採用此方法,因為它會導致數據丟失,因為移除的屬性值也可以為數據集帶來價值。
手動填充缺失值:此方法較為耗時。對於大型數據集,建議不要採用此方法。
使用標準值來替換缺失值:缺失值可替換為全局常量(例如「N/A」或「Unknown」)。這是一種簡單方法,但並非萬無一失。
使用屬性的集中趨勢(平均值、中間值、眾數)來替換缺失值:根據數據分布,可使用平均值(適用於正態分布)或中間值(適用於非正態分布)來填充缺失值。
使用同類屬性的集中趨勢(平均值、中間值、眾數)來替換缺失值:此方法與方法 4 相同,但集中趨勢的度量值因每個類而異。
使用最可能的值來填充缺失值:可使用回歸和決策樹等算法來預測並替換缺失值。
幹擾數據幹擾定義為所度量的變量中的隨機方差。對於數字值,可使用箱線圖和散點圖來識別異常值。為處理這些異常值,可按下述方式應用數據平滑技術。
往期閱讀:
線程優先級的實現
輕便線程:更好的線程管理
Python HTTP框架之變體