【数据竞赛】5行代码提升GBDT,提升巨大!
看過我歷史文章的都知道,以lightgbm,xgboost,catboost為代表的GBDT,在部分工業界場景的表格數據集上,一直一覽眾山小。
如果你打過kaggle應該一定都知道,大家心照不宣的表格一把梭中的第一把。
(一把梭的意思就是,基本上可以閉著眼用,肯定有用。)
他就是category特征的頻度統計了,你也可以稱為value counts等,用pandas實現起來也很簡單。我拿個簡單的3列表格,上五行代碼示例。
import?pandas?as?pddf?=?pd.DataFrame({'區域'?:?['西安',?'太原',?'西安',?'太原',?'鄭州',?'太原'],?'10月份銷售'?:?['0.477468',?'0.195046',?'0.015964',?'0.259654',?'0.856412',?'0.259644'],'9月份銷售'?:?['0.347705',?'0.151220',?'0.895599',?'0236547',?'0.569841',?'0.254784']}) #統計 df_counts?=?df['區域'].value_counts().reset_index() df_counts.columns?=?['區域','區域頻度統計'] df?=?df.merge(df_counts,on?=['區域'],how='left')你看到這了,可能說,就這?就這?
如果就這,肯定不是包大人的作風,授人以魚不如授人以漁,我們一起來想想,為什么這玩意,榮登一把梭的第一把。
第一層
除了老調重彈的決策樹的模型特性,我們今天再從數據的角度思考一下。
工業界category類的數據,大部分都是長尾分布的,你可以想象下諸如地區,職業,商品品類等。低頻部分,數量少,置信度低,容易過擬合。
那么第一個優點就呼之欲出了,你可以認為,頻度統計是一種帶智慧的哈希編碼方式,他對所有的低頻都一視同仁。
就跟我們在初中時候,班里男生各種與眾不同的發型,全都讓班主任剃成了5mm卡尺,軍訓頭。教導主任根據發型,毫不費力就能知道,以前這個學生挺有個性的。
這樣低頻,置信度低的東西,他們的共性也被挖掘出來了。這就是特征工程神奇的地方。
好了,剛才我們講了頻度統計對于低頻的歸一化作用,下面我們進入第二層。
第二層
離線數據集是真實數據分布的采樣。在工業界,頻度在不同場景下有著不同的含義。
最基本的,在展現日志表對廣告id 進行的頻度統計就是廣告的曝光量,在訪問日志表對頁面id 進行統計就是頁面的pv,對用戶id進行頻度統計就是頁面的uv。
這些不同含義的頻度統計量,他是有場景含義的,對應在背后就存在一定的規律。
比如在風控場景,一個user id的廣告點擊特別高,就得小心他是不是點擊工廠。一個用戶在一個時間段,支付了N筆不同的外賣,要小心他是不是在刷單。
剛才講了他在不同場景下的業務含義和目標一致關聯性,下面我們進入第三層。
第三層
第三層,對應著廣告點擊率預估里面一個術語,特征交叉。
舉個例子,特征交叉在生活中無處不在,比如阿里碼農,就是工作地和工種的交叉,工地打灰,也是工作地和工種的交叉,大廠除了碼農還有leader,工地除了打灰還有監工,他們的含義并不相同。
交叉是有代價的,比如工地也有寫代碼的,但不是太多,交叉會讓整個分布更加的長尾,對應著就更難學習了。
似乎,又帶來了第一個問題,嗯沒事,我們的頻度統計把刺頭又干掉了,美滋滋。特征交叉對應著第二層,又會產生更豐富的含義。每一個落地頁的pv uv就出來了,每個時段的pv和uv也出來了。
注意:以上一把梭哈適用在離線數據集,train和test之間無bias場景。其他情況,想必大家也知道怎么處理了~
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群955171419,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【数据竞赛】5行代码提升GBDT,提升巨大!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯视频下载格式_怎么下载腾讯视频
- 下一篇: Android平台Camera2数据如何