當前位置:
首頁 > 科技 > 你的廣告能打幾分?Kaggle需求預測挑戰賽冠軍方案這樣做

你的廣告能打幾分?Kaggle需求預測挑戰賽冠軍方案這樣做

作者 Dance with Ensemble

伊瓢 編譯

量子位 出品 | 公眾號 QbitAI

我們每天在網頁上看到的各種電商廣告,到底夠不夠吸引人?4個月前Kaggle和「俄羅斯版58同城」Avito辦了個需求預測挑戰賽,預測不同的廣告能吸引用戶多大的購買需求。

如今冠軍已出爐,並且在社交網路上引起了一波關注收藏,量子位在此分享一下。

Avito需求預測挑戰賽

而爛廣告則表意不明、圖片不清晰,或者讓人覺得這壓根就是個騙子。

所以,對同樣的產品,好廣告產生的需求高,爛廣告產生的需求低。Kaggle的這次需求預測挑戰,就是把「需求」用方差來定義:

公式中?為預測值,y為實際值。

這場比賽在今年4月底推出,6月底截止,共有1873支隊伍參賽,冠軍獎勵12000美元,亞軍獎勵8000美元,季軍獎勵5000美元。

冠軍方案

冠軍團隊Dance with Ensemble的最終分數為0.2150,團隊包含兩名中國人、兩名俄國人。領銜作者Little Boat目前Kaggle比賽排名第五。

之後,他們公開了自己的方案。

整個網路的第一層包含一些lgb模型、一些NN模型和一些xgb模型,第二層包含一些lgb模型、一些xgb模型和一些NN模型,一個NN作為最後一層。作者認為複雜的結構(3層)可能給提供了大約0.0002-0.0004分的改進。

他們還發現了一些基於主動訓練+測試的特徵,將最好的單個lgb提升到213X,最終貢獻了0.0007的改善。

整個Dance with Ensemble團隊四個人的部分合併時,他們模型的線性混合可以達到0.2133。

神經網路

如何用一個NN達到0.215X?

包括文本,分類,數字,圖像在內,所有內容都很重要。作者是這樣實現的:

1.得到了0.227X的數字特徵和分類嵌入。

2.用2個RNN包含了titile和description,使用fastText預訓練嵌入,通過一些調整,得分降至0.221X。

3.用自我訓練fastText嵌入訓練+測試,並主動訓練、主動測試。事實證明,訓練+測試的自我訓練是最好的。得分達到0.220。

4.添加具有平均池化的VGG16頂層。這一步其實讓分數變低了,在將文本,圖像,分類,數字特徵合併在一起之前做一些調整,分數約為0.219X。

5.嘗試用CNN或Attention等調整文本模型,發現無效後使用2層LSTM,然後是dense層,這裡可能有0.0003的改進。

6.嘗試了用不同的CNN模型處理圖像,固定的ResNet50中間層可能還有0.0005分的提升,分數變成了0.218X。

7.開始做各種調整,發現在文本和LSTM之間添加空間dropout有很大幫助,大概貢獻了0.0007 - 0.001。精細調整的退出率總體上也有所幫助,這裡改進了大約0.001 - 0.0015,所以現在的分數大約為0.2165 - 0.217。

8.開始整合所有特徵,得到一個0.215分的NN!

9.如果你一直在保存模型,你可以在它們之上訓練一個全連接的NN,還有大約0.008的改進。換句話說,用神經網路打進前10名很容易!

特徵工程

文字特徵

在標題,描述,標題+描述,標題+描述+param_1等上面,用了tfidf演算法。保留所有xgb模型的稀疏特徵; 使用svd和oof ridge為所有lgb模型保持多樣化。

文本統計,比如字長、標題包含而描述中沒有的特殊字詞等。

圖像特徵

1.圖像統計,參考:https://www.kaggle.com/shivamb/ideas-for-image-features-and-image-quality

2.三個預訓的練神經網路模型的特徵,參考:https://www.kaggle.com/wesamelshamy/high-correlation-feature-image-classification-conf

3.vgg16預訓練網路特徵

4.關鍵點特徵,參考:https://www.kaggle.com/c/avito-demand-prediction/discussion/59414

分類特徵

計算/統計各個級別的獨特特徵。

這些特徵是為train + test和train + test + train_active + test_active生成的。例如,(parent_category_name,category_name,param_1)中的廣告數量,(region,city)中的唯一user_id數量。

各種級別的目標編碼。這些包括count> = 5000的類別的平均deal_probability; count> = 5000的類別的平均預測deal_probability(train + test)(注意,選擇閾值使得cv / lb間隙保持大致相同。); OOF表示deal_probability編碼; OOF表示deal_probability * min(1,log(count)/ log(10000))編碼。

預測自變數特徵

xgb預測價格,image_top_1;

lgb預測價格,image_top_1,item_seq_number(oof預測);

rnn預測day_diff = day_to - day_from

在不同分類級別的平均預測價格,image_top_1,item_seq_number,day_diff。

不同級別的差異特徵,例如(price-xgb_price)/(category_name)級別的價格,log(image_top_1) - (resnet50_category1)級別的log(lgb_image_top_1)等。

嘗試從文本特徵預測parent_category_name和category_name(multicalss分類),但包括它們使cv略差。

user_id特徵

路程特徵,首先從(user_id,item_seq_number,activation_date)開始訓練,然後計算旅程數量(和百分比)、不同級別的返程數量(和百分比),例如( user_id,parent_category_name),(user_id,parent_category_name,category_name,activation_date)等。

分類特徵,將user_id視為分類變數,在(user_id)或(user_id,其他分類變數)級別生成特徵。例如,unique item_seq_number,price range = log1p(max(price)) - log1p(min(price)))。

周期特徵,由periods_train和periods_test生成。

傳送門

作者原貼:

https://www.kaggle.com/c/avito-demand-prediction/discussion/59880

加入社群

量子位AI社群19群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

Waymo無人計程車年底發射,現已進入定價環節
有屏智能設備的多維對話:延遲和指令呈現

TAG:量子位 |