資料探勘比賽/專案全流程介紹

FinTecher發表於2020-04-18

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]

1. 資料預處理

1.1 選擇資料樣本(企業級應用)

  • 例如客觀選擇某一時間段內的所有樣本集合等(避免人為主觀選擇)
  • 例如在評價樣本中去除惡意/隨意評價樣本等(避免錯誤樣本的干擾)

1.2 視覺化特徵分佈

  • dataframe.info/dataframe.describe等(檢視資料樣本的整體分佈情況)
  • dataframe.plot/matplotlib/seaborn等(包括柱狀圖/散點圖/折線圖等)

1.3 缺失值處理

  • 如果某樣本的缺失記錄佔比較大:
    • 可統計為“缺失量”
    • 可直接刪除該樣本
  • 如果某特徵的缺失記錄佔比較大:
    • 可二值化為“有/無”
    • 可直接刪除該樣本
  • 如果某樣本/特徵的缺失記錄佔比較小:
    • 可根據領域知識補全
    • 數值型:可根據均值/眾數/模型預測等補全
    • 類別型:可以定義為新的類別等
  • 可不處理,有些模型對缺失值不敏感:例如樹模型/神經網路等

1.4 異常值處理

  • 異常值判定:需根據資料分佈/業務場景等
    • RobustScaler/robust_scale等
    • 之後會推出異常值檢測專題
  • 可直接刪除該樣本
  • 可採用缺失值的處理方式
    • 注意資料不一致問題
    • 注意數值型可用蓋帽/對數變換等壓縮
  • 可不處理,有些模型對異常值不敏感:例如KNN/隨機森林等

2. 特徵工程

2.1 數值型

  • 連續型:離散化(例如年齡/身高/體重等)
    • 無監督:分箱等
    • 有監督:基於卡方檢驗/資訊增益等
  • 標準化/歸一化:Normalizer/StandardScaler/MinMaxScaler

2.2 非數值型

  • 類別型
    • 存在排序問題的編碼:sklearn.preprocessing.LabelEncoder
    • 不存在排序問題的編碼:sklearn.preprocessing.OneHotEncoder/get_dummies/Binarizer二值化
  • 時間型
    • 與數值型/類別型進行特徵交叉/組合(企業級應用很常見)
    • 採用時間滑動視窗統計特徵count/min/max/mean/median/mode/variance等
  • 字串型
    • 可採用詞袋模型/TF-IDF/主題模型/Word Embedding等

2.3 特徵體系擴充

  • 特徵交叉/特徵組合等
  • 多項式轉換:PolynomialFeatures
  • 引入新特徵:根據迭代評估決定是否新增(企業級應用)

2.4 特徵選擇(降維)

  • 去掉取值變化小的特徵:取值基本都相同的特徵
  • 衡量單個特徵和標籤的關聯度:scipy.stats.pearsonr/minepy.MINE/迴歸權重等
  • 含正則化的線性模型/樹模型等:SelectKBest/SelectFromModel
  • 其他特徵選擇思路:RandomizedLasso/sklearn.feature_selection.RFE
  • 降維:sklearn.decomposition.PCA/sklearn.lda.LDA

2.5 sklearn.pipeline

  • 能夠完成流水線式和並行式的工作

3. 模型選擇/融合

3.1 常見的機器學習演算法

  • lr/svm/rf/GBDT/xgboost/lightgbm等

3.2 模型融合

  • 迴歸預測的boosting思路:各模型的加權平均融合
  • 分類識別的bagging思路:各模型的投票融合
  • Stacking/Blending等模型融合方法

3.3 企業級模型應用思路

  • lr/xgboost/gbdt+lr/引入DNN等

4. 模型訓練/測試

4.1 資料集劃分

  • 按比例劃分:sklearn.model_selection.train_test_split
  • K折交叉驗證:KFold/GroupKFold/StratifiedKFold

4.2 調參

  • 網格搜尋/貝葉斯優化等(sklearn.grid_search.GridSearchCV)

5. 其他問題

5.1 樣本不均衡問題

  • 資料角度:欠取樣/過取樣/SMOTE演算法等
  • 模型角度:調整lr的閾值/採用樹模型等
  • 評估角度:採用F1值/ROC曲線等

5.2 無標籤樣本問題

  • 半監督學習方法/聚類思考等

5.3 欠擬合/過擬合問題

  • 欠擬合
    • 特徵擴充/非線性模型等
  • 過擬合
    • 擴充資料集/正則化/early stoppping/交叉驗證
    • Dropout/batch normalization

6. 模型評估

6.1 迴歸問題

  • 平均絕對誤差MAE/平均平方誤差MSE/均方根誤差RMSE/決定係數R2等

6.2 分類問題

  • 混淆矩陣/準確率/召回率/F1/ROC曲線/AUC/PR曲線/交叉熵損失等

6.3 上線問題

  • 線下預估/流量分配/ABtesting/業務評估指標等(企業級應用)

老規矩,最後直接上完整的思維導圖!

如果您對人工智慧演算法感興趣,歡迎瀏覽我的另一篇部落格:人工智慧新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)
如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的應屆生,你如何準備求職面試?
如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的本科生,你可以選擇學習什麼?
如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的研究生,你可以選擇學習什麼?
如果你對金融科技感興趣,歡迎瀏覽我的另一篇部落格:如果你想了解金融科技,不妨先了解金融科技有哪些可能?
之後博主將持續分享各大演算法的學習思路和學習筆記:hello world: 我的部落格寫作思路

相關文章