第一次接觸這樣的比賽,前期花了很多時間來嘗試錯誤的處理方式,特征篩選方式,靠了很多拍腦門決定的以及突發奇想的特征拿到了初賽66名。想一想真是全看運氣。
不過,也是有很多特征是經過一個很煎熬的過程,直到某一刻才發現的。比如我在這篇文章中重點介紹的兩個特征,posflag,stay_time.
1.特征工程是成功的99%。
2.單特征得分很高的,并不一定和其他特征很搭。
3.特征工程本質上是求特征的最優組合,是一個搜尋問題。
So,你得先有特征才行。
1.這兩個特征相關性不能太強,相關性太強,做了等于白做。比如第一個特征為x,第二個特征為y,假設相關性太強以至于y=f(x),那無論你怎麼交叉,你都是在用x這一個屬性。
2.盡量避免出現(a,b),(b,c)這樣的交叉特征組合,保證每個特征隻有一個交叉特征,原理同1。
3.二階的交叉特征其實FFM,FM都可以自動化生成,但其實對解決問題來說,并不一定有好效果。
So,你的交叉特征隻是一部分。
1.這才是解決問題的核心。
2.在這個回流率預估的情境下,又知道廣告位價錢不等,是以我們可以先考慮一下,廣告位有什麼特點。
3.為什麼會有推廣計劃,推廣計劃決定了對象,那麼推廣計劃對于ROI之外的回流率肯定很低吧?
4.有一個很重要的,但是又常常被忽略的特征,停留時間。
posflag
還記得那天我剛加進去二群(一群滿了),抱着投桃報李的心态,這個特征我在二群提出來。。。可惜太年輕了。
當天我的QQ快爆炸了,都是來要特征的。之後我在群裡開源了,結果他們不會用。。。orz。。。。
這個特征就是貝葉斯平滑後的positionID的回流率。
曾經有一段時間,我統計了positionID的回流率,但是點選次數有的特别少,還有的竟然點選1轉化1,這個要是當特征,簡直爆炸。
我想,次數多的比較可信,但是次數低的怎麼處理呢,而且次數低的在未來出現的次數會很多,又不能删掉,咋辦呢?
于是我找到了一種方式:貝葉斯平滑

很明顯,處理之後不會出現轉化率為1或0的情況了,而且轉化率連續性更好了。
這個使得點選次數多的,轉化率幾乎不變,次數少的,轉化率大變。- -
其實這個特征基于一個假設。
我先統計了所有的訓練集然後放到訓練集上當特征,其實這時候應該是過拟合的,but,線上提高了兩個千分點。
我思考了一下,可能positionID所代表的廣告位其實無論放啥,平均回流率都差不多,是以你統計的越多反而越準。
stay_time
stay_time=對同一使用者,記錄與上次點選的時間差,如果是第一次點選,置為-1
這個特征一開始我覺得應該不會有用,因為這個數不準。
BUT,它解決了連點好幾次的問題啊,這個就是trick。
複賽開始了,看到這個資料集大小我已經瑟瑟發抖,有空再繼續更新 吧。。。To be continued。。。
.