天天看點

騰訊社交廣告大賽總結

        沒想到這麼快就又跳槽了,新工作業務壓力小,個人時間比較多,是以第一次認真地參加完了一個比賽,收獲良多。這個比賽旨在預測廣告的轉化率pCVR,加入轉化率因子優化排序(有的廣告可能ctr高,但是轉化低),提升廣告投放效果,提升ROI。

        技術上面的一些收獲和展望:

1. 資料集的劃分: 資料集的劃分要與最終送出的測試集預測邏輯一緻。送出的預測集是根據31号之前的資料預測31号的轉化率,是以資料集也應該按照日期來劃分訓練集和驗證集。此其一,第二,不考慮日期來随機劃分訓練集和驗證集,可能存在資料洩露。比如,訓練集中如果有27号的資料,用27号的資料訓練出來的模型來預測27号之前的樣本,就存在資料洩露。另外,27号訓練出來的模型反映的是27号的規律,用這個規律來預測27号之前的測試集,這個邏輯不太合理。實際情況是,随機劃分方式,線上線下結果不一緻。而通過20-26号的資料訓練,27-28号的資料驗證,線下和線上則基本變化一緻。(29-30号有些負樣本可能是還沒有來得及上報轉化,是以資料不可信,将其舍棄)

2. 噪音資料預處理: 訓練集中有些樣本是噪音,比如相同的樣本出現很多次,或者同樣特征出現不同的label,這些情況在真實場景下都是可能的。在我的進行中,直接将相同的樣本去了重,将沖突的樣本全部去掉,這樣有大概萬分之8的提高。但是,有的參賽選手,從這種噪音資料裡面提取了相關特征,據說效果很好,以後可以嘗試。

3. 缺失值處理: 測試集上可能有些特征沒有取值,對于這種missing value的情況,用衆數或者平均數代替簡單地賦0可能更有效,有大概萬分之2的提高。

4. 統計特征: 對于userID, creativeID, positionID,可以統計下點選量-轉化量-轉化率等統計特征(但是不能有資料洩露,隻能用當天以前的樣本進行統計),這個對效果提升特别大(約千分之一)。同時,對于其他特征也可以加入統計特征,比如gender分别是1,2時的點選量-轉化量-轉化率等統計特征。對于age,connectionType等其他字段也可以加入統計特征。

5. 組合特征: 對于positionID-userID, positionID-creativeID, positionID-connectionType等組合特征,可以統計點選量-轉化量-轉化率等特征,組合特征對效果也有較大的提升(約千分之一)。

6. 模型尋優: 模型尋優的方式有random search, grid search等,這次比賽模型尋優沒有獲得太大的效果提升。下次可以嘗試用grid search找到最好的參數組合,然後在該點附近縮小範圍進一步尋優。另外,有一個自動化尋優工具Hyperot可以根據之前參數組合的表現,決定下次的參數組合,可以進行嘗試,看有沒有效果。

6. 模型組合: 參數組合的方法有stacking, blending和最簡單的average等。下次可以重點進行探索,根據其他參賽者的經驗,ensemble可以帶來較大的提升,但要保證base model的多樣性,盡量相關性小一些。另外,論文[1]中提到的ensemble selection下次也可以嘗試一下。

        總的來說,特征很重要,特征決定上限,模型決定對上限的接近程度。通過這次比賽,搭建起來整個流程架構,以後可以将更多的時間用來挖掘強特征和探索模型。

[1] Ensemble Selection from Libraries of Models: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/PrabhuVarmaKDD14.pdf