騰訊算法大賽
本文參考于我協會前會長吳師兄的文檔
騰訊社交廣告高校算法大賽是面向高校大學生的算法大賽,作為騰訊核心的廣告業務單元,騰訊社交廣告通過對海量社交數據進行深入分析,構建多樣廣告場景,與8億用戶連接對話。在大數據、機器學習領域的持續創新投入,驅動社交廣告生態發展。本次大賽旨在開放騰訊在社交和數字廣告領域的真實數據,面向高校學生征集最智慧的算法解決方案。
詳細的賽題見騰訊算法大賽, 記得也把 FAQ 看完, 里面也包含了許多重要信息
賽題比較難理解, 因為賽題屬于廣告學范疇, 如果實在難以理解賽題的可以先看看這篇文章, 看完再重新看一遍賽題就會通透許多轉化率預估
官方已經不再關閉數據的下載通道了, 不過之前已經備份到了百度云, 在這里提供給大家官方數據下載
賽題要求
官方提供17-30天移動 APP 的廣告、用戶的轉化情況,及相關上下文, 根據這些數據預測第31天指定用戶和對應廣告的轉化率.
評估方式?(賽題中提供的計算公式)
通過Logarithmic Loss評估(越小越好),公式如下:

其中,
N是測試樣本總數,
yi是二值變量,取值0或1,表示第i個樣本的label,
pi為模型預測第i個樣本 label為1的概率。
示例代碼(Python語言實現):

項目目的
主要在于剖析和學習大賽中取得 第64 名大牛的分享, 對其代碼進行理解和分析, 主要著重點在于特征工程。
機器學習的主要流程

數據分析和清洗方法

關于數據分析,閱讀FAQ可知:
App 的激活定義為用戶下載后啟動了該App,即發生激活行為。從用戶點擊廣告到廣告系統得知用戶激活了App(如果有),通常會有較長的時間間隔,主要由以下兩方面原因導致:
1) 用戶可能在下載之后過了很久才啟動App;
2) 用戶啟動App的行為需要廣告主上報回傳給廣告系統,通常會有一定的延時。
這里回流時間表示了廣告主把App激活數據上報給廣告系統的時間,回流時間超過5天的數據會被系統忽略。
值得注意的是,本次競賽的訓練數據提供的截止第31天0點的廣告日志,因此,對于最后幾天的訓練數據,某些label=0并不夠準確,可能廣告系統會在第31天之后得知label實際上為1。
即
某些app和用戶的記錄比較少
最后幾天有部分數據不準確
對于這個問題, 這里采用了比較暴力的方法, 將最后幾天這些可能會出現問題的數據刪除
特征工程
特征工程即根據基本的數據提取出更多有用的數據, 然后結合基本特征來選取最終決定需要采用訓練的特征數據, 往往特征工程決定了最終預測的效果
基本數據在官方已經提供了數據描述的表格, 這個一定要好好理解每一個字段的作用, 這里就不重復描述數據的字段了
在這里先強調一下,在做完特征工程之后, 我們得到了更多的特征, 但并不是每一個特征都對模型的訓練有用, 故此我們需要對特征進行篩選 (不僅僅是單方面的取舍, 還需要根據重要的程度進行權重的分配)
通過數據分析,計劃以下的特征作為最終的訓練數據標簽
1.基礎特征:計數特征、轉化率、比例特征等各種基本的特征(各種ID)
2.用戶當天行為特征:基于當天數據統計的用戶行為、app行為的特征
3.用戶歷史行為特征:word2vec 計算用戶行為與歷史行為的關聯
1. 基礎特征
基礎特征即騰訊官方提供的數據,各種的ID標簽,將一些沒用的標簽去掉即可,不需
要作過多的處理
2、3 用戶行為特征的處理
用戶行為特征的處理邏輯較為繁瑣, 也是整個項目中最繁瑣的操作, 邏輯比較難理
清,建議通過源碼來理解