天天看點

【 SPA大賽 】關于資料處理和特征工程的一些分享

大家好,筆者是“南七技師”隊,作為一支全部由萌新組成的隊伍,一路走來雖步履維艱但卻收貨頗豐。同時也非常感謝騰訊公司舉辦這次社交廣告高校算法大賽,為筆者提供了良好的學習途徑與機會。

下面主要分享筆者在比賽過程中的心得體會:

剛拿到資料,筆者就對其進行了一些探索性的分析,包括對資料變量之間的聯系和資料分布情況的統計,并對其進行了可視化。進行可視化之後,就可以對原始資料有進一步的了解,然後進行資料的些清洗工作,包括對缺失值的處理以及對離群點的去除等。

筆者在特征公共步驟進行了幾次嘗試如下:

1) 選用前7天的資料作為訓練集、後7天的資料作為測試集,結果發現效果并沒有使用全部的資料集效果好。

原因分析:資料量減小。

2) 選用所有天的上午、下午資料作為訓練集,來分别預測上午、下午的結果。

3) 把所有的資料都轉化合成了一張表,并且把低次元的特征進行了One-hot處理,将這些特征全部加入到了模型中進行訓練,成績并不是特别理想。

原因分析:隻是單純的加入所有的特征,并未選擇有效特征。

經過幾次嘗試之後,筆者着手于對資料作統計分析,對于一個特征是否真的有意義是需要看特征的分布比例,在正負樣本中所占的比例越大就表明該特征的對正負樣本的區分度較好。同時,筆者還進行對特征的組合,計算出其中的轉化率。然而,特征之間必然是會有重複的,這将會導緻過拟合的現象出現,給模型造成不必要的幹擾,筆者解決這種問題的方法就是逐一測試特征是否有效。

在實驗過程中,通過分析原始資料背後的真實意義,以及觀察送出結果的回報,總結了一些有用的技巧,如下:

1) 筆者對轉化回流時間做了一些小處理。因為回流時間是從使用者點選到廣告系統得知使用者激活App,而且轉化資料是由廣告主提供的,就可以計算出廣告主上報到廣告系統這期間的時間,這個特征也提升了有萬分之五。

2) 嘗試了position*connectionType,效果也有提升。

3) 通過觀察資料發現,可以發現存在很多重複點選的資料,同一個廣告被連續多次點選後轉化隻在最後一次點選上,由這個筆者構造出的特征一下子讓筆者的成績提升了千分之三。

由于筆者團隊是個新手團隊,沒有參賽經曆,是以開始比賽的時候第一步就是了解資料,各個字段的含義聯系等等。然而過了這段時間,筆者就埋頭進入了所謂的“業務”分析的方向,再也沒有仔細看過資料,不斷地更換模型更換參數構造各種的特征,然而取得的效果卻并不和消耗的時間成正比。後經提醒,筆者将目光轉移回了初始資料,這才有所斬獲。這可能是新手往往會經常犯的錯誤吧,以後的比賽過程中還是要多多花點時間在資料上面。

最後祝大家取得好成績!