數據挖掘比賽/項目全流程介紹

【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。如下內容僅爲我的看法,歡迎批評指正,不喜勿噴![握手][握手]html

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/業務評估指標等(企業級應用)

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

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

相關文章
相關標籤/搜索