数据清洗最基础的10个问题,基本涵盖目前常见的数分场景!
今天分享一個數據分析中最常見的概念:數據清洗。
很多時候,數據預處理和數據清洗、特征工程等混為一談,以至于大家分不清到底哪一步用誰。
我個人的理解是:數據預處理主要是對數據集進行探索性分析,而特征工程則是進行分析后的相應處理。以上兩個名詞不常說,最常聽的應該還是數據清洗,差不多也就相當于上面兩個步驟。
例如:在預處理階段發現數據存在缺失值、異常值;數據特征之間存在共線性;數據特征可以互相組合形成更好的特征等等。就可以在特征工程 階段對上述發現的問題進行相應的處理。
以下總結了在數據預處理和特征工程階段最常見的10個問題,基本上可以涵蓋大多數的處理場景:
什么是數據 EDA?
EDA:Exploratory Data Analysis,譯為:探索性數據分析。
數據 EDA 是在拿到數據之后對數據進行初步探索認識的一個過程,在數據 EDA 階段,并不對數據做任何處理,只進行數據探索,而在特征工程階段會對數據進行相關操作。具體的,數據 EDA 有如下作用:
了解數據的分布、特征的類別,以及發現離群點數據。這一步可通過簡單的直方圖、散點圖、小提琴圖、箱型圖等進行探索;
了解數據特征與特征之間的關聯情況,以及特征與目標變量之間的關系。這一步可通過組合直方圖、熱力圖等進行探索;
對于劃分后的數據集,可以探索訓練集和測試集的樣本整體分布是否一致,數據特征的缺失情況、分布是否一致等。
缺失值的處理方式有哪些?
對于缺失值的處理有很多方法,在缺失率低的情況下可以對缺失數據進行填充,比如使用均值、眾數、隨機森林算法等進行缺失值填充;
另外,如果缺失值不能簡單的填充,可以將缺失數據當做特征中的某個類別處理(具體的也可以在數據 EDA 中探索數據缺失的情況下和目標變量之間的關系)
如果某個特征的缺失程度過高,也可以直接剔除該特征。需要注意的是,在 xgb 和 lgb 模型中可以自動處理缺失值,所以不需要提前進行處理。(可參考 xgb 和 lgb 章節)
如何檢測異常數據?如何處理?
異常數據的檢測有兩種方法,基于統計的異常點檢測和基于距離的異常點檢測。
基于統計的異常點檢測常用的有四分位法,通過上下四分位對異常數據進行篩選,特別的,在數據 EDA 階段可以通過箱型圖、小提琴圖進行類似原理的檢測。
基于距離的異常點檢測可以參考聚類模型,通過歐氏距離公式計算點點之間的距離,并據此篩選異常數據。
對于異常數據,可以替換也可以刪除;特別的,在風控模型中,會通過 WOE 轉換對數據進行處理,將數據分成一箱一箱的,據此可以消除異常值對整體數據的影響。
什么是特征工程?有什么作用?
特征工程總體來說是對數據進行處理、轉換、篩選等,對在數據 EDA 階段發現的缺失數據、異常數據等,都會在特征工程中進行處理,另外,對于特征的衍生、組合、轉換等操作也會在此進行。
特征工程的目的就是通過數據預處理、特征衍生、特征篩選從而得到規整的數據和貢獻度大的特征,使模型達到更好的效果。
特征工程的一般步驟是什么?
特征工程的一般步驟包括數據預處理,特征轉換和特征篩選三部分。
數據預處理:主要對缺失值、異常值、數據格式等進行簡單的處理操作;
特征轉換:對連續特征、離散特征、時間序列特征等進行轉換,更進一步的,還會對特征之間進行特征組合,包括但不限于四則運算、交叉、合并等業務上的特征操作;
例如:未婚 + 本科畢業,男生 + 有房有車
特征篩選:在上一步生成的大量的特征中篩選部分對目標變量有明顯貢獻的特征,常用的方法有 過濾法、包裝法和嵌入法(后面會具體介紹)。
特征衍生的方法有哪些?
常用的特征衍生主要包括業務上的衍生和非業務上的衍生,整理如下:
業務上的特征衍生:基于對業務的深入理解,進行頭腦風暴,或者整合第三方的數據進行業務上的交叉和延伸
非業務上的特征衍生:拋開業務本身,對于特征可以進行四則運算、取平均/最大/最小、單位轉換等操作;另外,對于類別特征,還可以進行獨熱編碼等衍生操作。
對于時間序列特征、連續特征、離散特征如何做特征轉換的?
對于時間序列特征:將時間變量的維度進行分離(年/月/日/時/分/秒),或者進行簡單的衍生(季度、星期、凌晨、中午等),更進一步的可以與其他變量進行組合
對于連續型特征:常用標準化、歸一化、離散化等操作。評分卡模型中主要用到離散化分箱,常用的離散化方法有:卡方分箱、等頻等距分箱等。
對于離散型特征:如果是無序離散可以用獨熱編碼,如果是有序離散可以用順序編碼。如果類別數較多可以使用平均數編碼
如何處理樣本不平衡問題?
風控模型中樣本不平衡主要是因為壞樣本的數量太少,壞樣本受限于用戶本來就較少,也因為風控策略的嚴格導致壞用戶過少。在針對此類數據樣本一般使用如下方法:
嘗試擴大數據集,比如通過延長時間線來收集數據,將三個月的用戶數據延長到六個月以增加數據量;
對數據集進行抽樣,一種是進行欠采樣,通過減少較多類的數據樣本來降低數據的不平衡;另一種是進行過采樣,通過增加較少類的數據樣本來降低數據的不平衡,常用 SMOTE 方法來實現過采樣;
嘗試使用對不平衡樣本數據處理效果較好的模型,如 xgb 和 lgb 模型。
特征篩選的作用和目的?
在開始建模前的最后一個步驟就是進行特征篩選,特征篩選就是從所有的特征中篩選出貢獻度最高的 m 個特征,使用篩選后的特征建模后有如下好處:
大大縮短模型訓練的時間,特別是在評分卡模型數據維度特別多時效果更佳;
簡化模型,避免維度過多產生維度災難;
增加模型的可解釋性,減低模型過擬合的風險。
特征篩選的方法有哪些?優缺點各是什么?
特征篩選常用的方法有過濾法、封裝法和嵌入法,如何如下:
過濾法 Filter:
按照發散性或者相關性對各個特征進行評分,手動設定閾值或者待選擇閾值的個數,選擇特征。比較常用的方法有:方差過濾、卡方齊性檢驗、互信息法過濾、相關系數過濾、IV 值過濾,其中,后兩個較常用。
優點:算法復雜度低、通用性強,不需要訓練分類器,對于大規模數據集比較實用;
缺點:對于特征的評分在準確率上一般較低。
嵌入法 Embedded:
先使用某些機器學習算法進行模型訓練,得到各個特征的權重系數,根據系數從大到小選擇特征。比較常用的方法有:基于隨機森林、xgb、lgb 的嵌入法和使用懲罰項的模型的嵌入法(如嶺回歸,lasso 回歸等)
上述提到的權重系數代表特征對于模型的某種貢獻或重要性,比較樹模型中的 feature_importances_ 屬性。
優點:更加精確到模型的效用本身,對于模型性能的提升較好
缺點:特征對于模型貢獻度的閾值無法主觀確定,需要根據實際情況確定。
包裝法 Wrapper:
與嵌入法類似,包裝法是一個特征選擇和算法訓練同時進行的方法,比較依賴于算法自身的選擇。比較常用的方法有:遞歸消除法、啟發式搜索(前向/后向選擇法,逐步選擇法)、隨機搜索。啟發式搜索較常用。
具體的,包裝法在初始訓練集上訓練評估器,通過 coed_ 屬性或者通過 feature_importances_ 屬性獲得每個特征的重要性;然后,從當前的一組特征中修剪最不重要的特征,重復遞歸該過程直到特征達到要求
優點:相對于過濾法,封裝法的分類性能會更好
缺點:通用性不強,當改變學習算法時,需要針對該學習算法重新繼續寧特征選擇;并且對于大規模數據,執行時間較長。
推薦閱讀
誤執行了rm -fr /*之后,除了跑路還能怎么辦?!
程序員必備58個網站匯總
大幅提高生產力:你需要了解的十大Jupyter Lab插件
總結
以上是生活随笔為你收集整理的数据清洗最基础的10个问题,基本涵盖目前常见的数分场景!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫画 | 如何凭实力炒老板鱿鱼,并喜提N
- 下一篇: 35岁程序员大厂Offer接到手软,靠的