天天看點

【SPA大賽】資料處理經驗以及特征選擇方法

第一次接觸這樣的比賽,前期花了很多時間來嘗試錯誤的處理方式,特征篩選方式,靠了很多拍腦門決定的以及突發奇想的特征拿到了初賽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,這個要是當特征,簡直爆炸。

我想,次數多的比較可信,但是次數低的怎麼處理呢,而且次數低的在未來出現的次數會很多,又不能删掉,咋辦呢?

于是我找到了一種方式:貝葉斯平滑

【SPA大賽】資料處理經驗以及特征選擇方法
【SPA大賽】資料處理經驗以及特征選擇方法

很明顯,處理之後不會出現轉化率為1或0的情況了,而且轉化率連續性更好了。

這個使得點選次數多的,轉化率幾乎不變,次數少的,轉化率大變。- -

其實這個特征基于一個假設。

我先統計了所有的訓練集然後放到訓練集上當特征,其實這時候應該是過拟合的,but,線上提高了兩個千分點。

我思考了一下,可能positionID所代表的廣告位其實無論放啥,平均回流率都差不多,是以你統計的越多反而越準。

stay_time

stay_time=對同一使用者,記錄與上次點選的時間差,如果是第一次點選,置為-1

這個特征一開始我覺得應該不會有用,因為這個數不準。

BUT,它解決了連點好幾次的問題啊,這個就是trick。

複賽開始了,看到這個資料集大小我已經瑟瑟發抖,有空再繼續更新 吧。。。To be continued。。。

.