閒聊數據建模流程

閒聊在數據建模之前的一些數據預處理步驟。
如何培養數據之間的敏感性,多看各指標的分佈,通過直方圖,柱形圖,概率密度圖能看到數據的分佈情況,能看到數據集中在什麼位置,邊界值在什麼位置。

1、取數:

首先是理解業務,理清邏輯,寫sql去數據庫裏面取數

2、簡單理解變量:

取數完成之後,放到excel或者是用python讀取文件,瀏覽數據,記錄下每一個變量的含義,並且對變量進行分組,比如在金融行業,將能代表還款意願的變量放到一組,還款能力的變量放到一組,用戶自己個人信息的放到一組,id類放到一組等等,形成良好的職業習慣,;另外順便將每個變量都升降序排列,或者篩選看看,是連續的還是離散的,或者最大值,最小值等等這些,有助於理清思路

3、看變量分佈:

離散變量看直方圖統計頻數,連續變量看概率密度函數

4、數據預處理:

(1)錯誤值:
首選是改對了(成本很高)、用缺失值替換、刪掉記錄
(2)缺失值:
1、樣本量小於20%的:
連續變量:用均值(正態分佈)或中位數(左右偏)代替,現在也有使用隨機森林來替補缺失值的;
分類變量:一般可以不做處理,直接當做一個類別來處理,或者使用衆數進行代替
2、20%-50%的:
填補方法如上,同時生成啞變量(這個啞變量是有數據用0,缺失數據填補的用1來編碼),讓模型來決定是變量的值更重要還是有沒有這個變量更重要,或者是結合在一起更有效
3、50%以上的:
根據業務理解,如果不太重要就直接刪除這個變量;如果比較重要,原變量不再使用,只生成啞變量(二分類啞變量)參與建模
4、其實要是比較少的話也可以直接刪除
(3)異常值(定義,5倍標準差之外,平均值±2-3倍標準差、上下四分位數之外)
1、直接刪除
2、蓋帽法,比如0.01分位點和0.99分位點之外的統一使用兩個極端值來進行代替
3、分箱法(等寬[等距]和等深[百分位數]分箱),比較推薦使用
(4)數據轉化和one-hot編碼等

5、特徵選擇:

有些變量單獨拿出來效果不顯著,但是有可能組合在一起會顯著,考慮交互性;或者單獨拿出來顯著,組合在一起有多重共線性等問題也是需要考慮的。
1、人工篩選:id類、對建模毫無意義、某一列值全都一樣的字段、缺失佔比高的先剔除,基本上屬於人爲特徵選擇;
2、統計檢驗:可以根據統計檢驗裏面的t檢驗、方差分析、相關係數來看相關性程度
3、根據IV、xgboost的importance,來篩選重要變量

6、建模:

根據業務需求選擇合適的模型進行建模,可以使用網格搜索方法來調節參數,這個方法只能是滿足局部最優,一個參數一個參數來調節。

模型效果不理想時,可以從以下方面來調整策略(參考金子老師):
1、調節正負樣本的權重參數;調整模型參數
2、更換模型算法,或者同時使用幾個算法,然後取最終結果
3、根據原始變量,生成衍生變量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章