1. 程式人生 > >Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc

Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc

歷史 最終 edi 全球 ssi 使用 bm算法 oos cat

python風控評分卡建模和風控常識(博客主親自錄制視頻教程)

https://study.163.com/course/introduction.htm?courseId=1005214003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

技術分享圖片

http://www.360doc.com/content/18/1015/10/60075508_794857307.shtml

http://www.sohu.com/a/259742009_787107

任務 :精品旅行服務成單預測

提供了5萬多名用戶在境外旅行APP(黃包車)中的瀏覽行為記錄和歷史訂單記錄(具體數據和字段如下五張表所示),其中用戶在瀏覽APP之後有三種可能,購買精品旅遊服務,或普通旅行服務,還有部分用戶則不會下單。需要分析用戶的個人信息、歷史記錄和瀏覽行為等,預測用戶是否會在短期內購買精品旅遊服務。

(訓練集瀏覽記錄一百三十三萬條,測試集33萬條)

  • Tab1 用戶個人信息表(用戶id、性別、省份、年齡段)
  • Tab2 用戶瀏覽記錄表(用戶id、行為類型、發生時間)
  • Tab3 用戶歷史訂單表(用戶id、訂單id、訂單時間、訂單類型、旅遊城市、國家、大陸)
  • Tab4 待預測訂單表(id、訂單類型 1 精品 0普通)
  • Tab4 用戶評論數據(用戶id、訂單id、評分、標簽、評論內容)

比賽成績

  • 2018-02-08 AUC: 0.9764 B榜 Rank 2(Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc.)
  • 2018-02-07 AUC: 0.9589 A榜 Rank 3(Weight Average:0.65 * Catboost + 0.35 * XGBoost)
  • 2018-01-21 AUC: 0.9733 半程冠軍 (Single model:Catboost)

代碼獲取:

比賽方案

  1. 數據預處理:首先對數據進行清洗處理缺失值,瀏覽記錄表中的1-4類無順序,5-9類有順序,一方面對567*9這種補齊8操作,另一方面發現訂單歷史記錄中的下單時間戳和瀏覽記錄的7操作時間一樣,對於歷史訂單有訂單但在瀏覽記錄中對應時間點沒有7操作的記錄補齊7操作,還有基本信息缺失處理如性別的缺失處理等。
  2. 特征工程:特征設計主要從 (歷史訂單 + 瀏覽行為 + 時間特征 + 文本評論) 這幾方面展開,並根據特征方差和特征與label的相關系數&繪圖進行特征選擇,具體特征在如下。
  3. 模型選擇:由於其中包括瀏覽記錄是屬於類別特征,選用對類別特征直接支持且在泛化能力強不易過擬合的Catboost算法,和LightGBM算法。
  4. 模型融合:最後模型融合使用Stacking的方式,特征分三份:第一層使用(參數不一樣)的10個Catboost、xgboost和lightGBM訓練,第二層使用xgboost融合,最後三個stacking結果再次融合,融合方法采用概率大取更大、小取更小,通俗的理解是在表現效果 (AUC) 相差不大的多個模型中,去選取對該條樣本預測更自信的模型作為最終結果。(全集特征+兩份有重合不完全特征80%(根據特征相關性,強耦合的特征分開))單獨Stacking:0.9746,三份stacking融合0.97640,單模型0.9735
  5. 由於部分用戶瀏覽記錄很少(只有幾條),導致這些用戶的很多特征維度為空,屬於“冷啟動”問題,單獨建立在其歷史特征和評論特征維度進行預測。

模型設計與模型融合

技術分享圖片

特征工程

特征按照比賽時間進展在文件夾feature中,分別為1 ~ 10_extract_feature.py,以下根據特征所屬類別(歷史訂單 + 瀏覽行為 + 時間特征 + 文本評論 + 交互)進行分類,具體特征提取方法可以看其中註釋,另外特征工程運行時間較長,完整的特征文件下載:

精品旅行服務預測Rank2特征文件

獲取方式:

總結如下:

  • 歷史訂單特征
    • 歷史訂單數量
    • 歷史出現精品訂單 1 的數量和占比
    • 歷史出現普通訂單 0 的次數和占比
    • 用戶最近一次出行是否為精品旅行 1
    • 歷史紀錄中城市的精品占比
    • 歷史訂單是否出現過精品訂單 1 (leak)
    • 歷史訂單最近一次是什麽類型 0 / 1
    • 歷史訂單最近一次去的州、國家、城市
  • 瀏覽行為特征(全部:指用戶所有的瀏覽記錄,對應:指該次購買對應的瀏覽記錄)
    • 全部瀏覽記錄中0-9出現的次數
    • 對應瀏覽記錄中0-9出現的次數
    • 全部瀏覽記錄瀏覽時間
    • 對應瀏覽記錄瀏覽時間
    • 對應瀏覽記錄是否出現5 6
    • 全部瀏覽記錄是否出現56 67 78 89
    • 對應瀏覽記錄是否出現56 67 78 89
    • 全部瀏覽記錄是否出現567 678 789 566
    • 對應瀏覽記錄是否出現567 678 789 566
    • 全部瀏覽記錄是否出現5678 6789
    • 全部瀏覽記錄是否出現56789
    • 對應瀏覽記錄是否出現56789
    • action中大於6出現的次數
    • 對應點擊2-4的和值 與 5-9 的比值
    • 全部點擊2-4的和值 與 5-9 的比值
    • 對應瀏覽記錄 1-9 操作所用平均時間
    • 全部瀏覽記錄 1-9 操作所用平均時間
    • 全部action 最後一次 的類型
    • 全部 action 倒數第2-6次操作的類型
    • 最後1 2 3 4 次操作的時間間隔
    • 時間間隔的均值 最小值 最大值 方差
    • action 最後4 5 6 次操作時間的方差 和 均值
    • 對應瀏覽記錄瀏覽平均時間(可以改成最近幾天的)
    • 對應瀏覽記錄 1-9 操作所用平均時間
    • 全部瀏覽記錄 1-9 操作所用平均時間
    • 每日用戶action的次數
    • 每日用戶action的時間
    • 最近1周的使用次數 eval-auc:0.963724
    • 離最近的1-9的距離(間隔操作次數) 只取 56789
    • 總體操作 1 2 3 4 5 6 7 8 9 次數的排名 rank
    • 對應操作 1 2 3 4 5 6 7 8 9 次數的排名 rank
    • 用戶使用APP的天數,分別是否老用戶
    • 用戶當前時間距離最近歷史訂單時間間隔
  • 文本評論特征
    • 評論的長度
    • 評論的標簽個數(強特征 漲分1個萬)
    • 用戶訂單評分的統計特征(平均分、方差)
    • 用戶評論各類分數的比例,最近一次評論的分數
    • 分用戶普通訂單評論的平均分和精品訂單平均分
    • 使用snownlp對用戶評論進行情感分析,統計用戶訂單評論得分
  • 用戶特征
    • 是否新用戶
    • 性別 是否男 是否女 是否缺失
    • 所屬省份/城市(one-hot encode)
    • 所屬年齡段(one-hot encode)
  • 時間特征
    • 以最近的瀏覽記錄作為要預測的用戶訂單時間
    • 當前時間點的月份、當月第幾天、星期幾、是否周末
    • 用戶歷史訂單最多的月份、當月第幾天、星期幾、是否周末
    • 是否為該城市的旅遊旺季
    • 季節特征

運行環境和代碼結構

代碼運行環境,包含主要軟件和庫

技術分享圖片

代碼結構

  • 在boutique_travel是整個比賽的代碼,數據存儲路徑在
  • data文件夾用來存放數據,
    • 其中包含提取的特診集(train6/test6、train_feature1/test_feature1、data_train/data_test)
    • submit文件夾是提交的結果文件,其下面子文件夾包含各個單模型的預測結果
  • feature文件夾存放提取特征的代碼
    • 包含1 ~ 10_extract_feature.py 每部分代碼對應提取的特征均有註釋
  • model文件夾存放模型訓練、預測和融合的代碼
    • 1_submit.py是概率文件融合和修改預測結果為比賽要求的提交格式
    • 2~6分別是catboost、xgboost、lightGBM等的單模型和5折CV訓練預測
    • 7是特征分三分,分別做兩層的stacking learning,最後再對表現結果差不多的概率文件結果融合
    • model文件夾存儲訓練好的模型

車輛檢測及型號識別,準確率接近90%

全球AI挑戰-場景分類的比賽源碼(多模型融合)

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

技術分享圖片

Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc