樣本極不均衡情況下的無效擬合問題

樣本極度不均衡,有時會出現一種無效擬合現象。簡單來說,就是模型會嘗試忽視少數類的誤差。但是總體也擬合的很好,in or out of samples的評測,auc等指標很高。

但是如果你的業務重視少數類,那麼這種擬合對你是無效的。

比如對廣告點擊率預估業務來說,絕大部分情況下都是不點擊,大概100個不點擊才有一個點擊,那如果模型把所有廣告都預測成不點擊,顯然我們的準確度也有100/101 = 0.999... ...

不過這種預測,意味著所有廣告都不用出了,公司收入為0,只好把演算法工程師捉來祭天... ...

怎麼判斷演算法出現了預測偏差問題呢? 核心關注下面幾個線索:

1)樣本不均衡;

2)in or out of samples的評測,max auc 或auc有提升;

3)預測值分布出現左偏現象(假設正樣本是1,負樣本是0)

去年12月,當我們在廣告模型中成功加入了一個新特徵後,演算法出現了這種嚴重的預測偏差。具體表現如下:

1) AUC 大幅提升;

AUC提升了4個點

2)logloss 降低;

從0.022降低到0.018

3)實際效果大幅下降,ctr、cpm都下降20%以上;

根據logloss降低,我們能推導出ctr預測出現了分布左偏現象。根據logloss計算公式:

logloss降低說明預測值肯定更低了(因為正樣本是少數類)。再從實際表現看,我們的預測效果很差,所以不是ctr分布的左移,而是出現了左偏現象(左移並不會帶來效果下降)。

以上線索,我們猜測這是一個擬合偏差問題,並且通過線上測試快速驗證了這點。對正樣本(少數類)做了最簡單upsample,線上對比效果如下:

ctr和cpm提升,效果有修正,也驗證了我們的猜測。

解決方案

有如下手段:

1) 對少數類進行上採樣;上採樣各種方法

2) 對大數類進行下採樣;也是有各種方法

3)做bagging 或者 boosting

4) 改造loss函數(加入class weight)

我們採用了第4種方法,因為簡單,簡單就是最吼的。。。 而且相對採樣,速度更快,效果也更好更穩定。

對Logistic Regression 改造如下:

在線上評測,收斂沒有問題,同時auc也沒有下降,而cpm和ctr取得了5%以上正向收益。

回頭來看評估指標

對不均衡樣本,光看auc、logloss、oe等評估值是不夠的,還需要引入apr、gauc等評估指標。這個下篇來講。


推薦閱讀:

機器學習基礎與實踐(一)----數據清洗
打開機器學習的黑盒——卷積神經網路原理介紹
機器學習與數據挖掘網上資源
2-2 Cost Function
機器學習不僅僅是模型

TAG:機器學習 | 樣本均衡 | 精準廣告 |