盛愛林,左劼,孫頻捷
(1.四川大學計算機學院,成都610065;2.上海政法學院,上海200000)
好看視頻App是一個聚合平臺,為用戶提供海量高質量的短視頻內容。它提供的短視頻類型覆蓋了所有的范圍,如樂趣、音樂、電影、娛樂、游戲、生活等。百度好看視頻App使用智能算法了解用戶的興趣和偏好,并向用戶推薦量身定制的視頻內容。在快速增長的過程中,百度好看視頻App也面臨新的挑戰。新用戶可以下載應用程序瀏覽和播放視頻一段時間。一些新的用戶將在第二天繼續使用App觀看視頻(我們稱他們為回歸用戶);但是,其他用戶不再使用該應用程序。我們想知道如何提高提高用戶留存率以及深度挖掘影響用戶留存率的因素。
根據用戶的人像數據(性別、年齡、學歷、地理位置、興趣愛好等)、用戶瀏覽行為、當天使用時間、安裝來源等,任務是估計新用戶是否會在第二天使用百度好看App。
對于這種異構數據,GBDT模型將有很好的性能,對類別數據的支持在這里尤為重要。因此,我們選擇了支持類別特征的LightGBM和CatBoost作為GBDT的代表模型,來檢驗我們的特征的有效性和結果的差異性。
ManyToMany結構的RNN模型,其每一個輸入都對應輸出后的用戶是否活躍,充分利用了監督信息,減少了梯度對負荷的影響,使訓練更加容易。與Light GBM和CatBoost相比,RNN以歷史統計數據作為特征,不需要對輸入序列進行過多的處理,可以直接輸入各種行為序列。通過余弦退火快照集成方法,可以以很低的成本獲得大量不同的局部最優解。
訓練集包含大量的用戶和視頻交互信息,包括喜歡、轉載、評論等,還有一些視頻沒有顯示給用戶,在后臺推薦。利用RNN多對多結構模型和GBDT模型融合的方法來增強模型的魯棒性。
WSDMCup用戶留存率預測比賽是一個典型的二分類任務,用于預測用戶在體驗百度好看App的第一天之后是否重新使用該App。可用的原始信息包括用戶的屬性數據、視頻的屬性數據和交互信息數據。挑戰的設置是使用第一天的交互信息作為訓練數據,并預測用戶第二天是否重新使用App。
為了證明預測的性能,我們使用對數損失作為評估指標,定義如下:

上面式子中,N是用戶的總數,log是自然對數,yi是樣本標簽,pi是模型預測的結果輸出。
區域編碼和評論這兩個字段的數據取值都相同,因此直接刪除掉。用戶上次播放視頻的時間為s,最后一次視頻播放的時間點加上視頻播放時間的時間點是t,如果s和t不在同一天,那么刪除訓練集中所有的此類用戶。
由于性別、年齡、文化程度、安裝渠道在同一個用戶中并不獨特,所以這些特征都是選擇使用頻率最高的值作為其代表特征,并使用LabelEncoder作為最后的特征。
由于原始數據中提供了三個數據集的集合,因此我們的特征可以從該三個維度的數據中生成,通過這三個維度的任意組合,我們可以創造出數百個特征出來。
用戶操作數,包括刪除顯示和點擊缺失值后的操作數、用戶觀看的視頻數和用戶關注的次數等,構成用戶操作的特征集合。
由于訓練集的用戶都是新用戶,且時間限制在一天之內,時間滑動窗口特征將失去其統計意義。但是時間點類型特征,例如上次或者第一次用戶做什么,意義重大。我們可以在這些時間點上做一些計時操作,例如時差、時差平均值等。同時我們也考慮到了視頻的特點。我們做了很多基于視頻的統計特征,例如播放的總持續時間、點擊次數、標簽的TF-IDF值的總和等。
從業務場景出發,我們生成了一些不尋常的特征。例如時間衰減特性放大了時間對用戶的影響。由于只有一天的動作記錄,用戶在特定時間的操作將變得尤為重要。我們可以聚合多個維度進行嵌套,然后進行堆疊操作。我們選擇在一個特定維度上聚合,然后在用戶級別聚合。例如,我們聚合視頻類型的特性,然后將它們聚合為一系列的聚合特征,例如單擊、喜歡和轉發,然后合并到用戶級別,然后在用戶級別再次執行聚合操作。我們稱通過該方法生成的特征為多層疊加特征。
通過我們的模型選擇和特征重要性排序,我們得到了前五個特征:①用戶上次打開App的時間;②用戶首次打開App的時間與上次打開App的時間間隔;③App安裝渠道;④用戶首次打開App的時間;⑤用戶交互的總持續時間。特征重要也說明我們的特征工程思想是正確的。
(1)梯度提升模型
LightGBM和CatBoost是兩個梯度提升模型框架,是基于決策樹的學習算法。XGBoost[2]逐層構建節點,LightGBM逐點構建節點,CatBoost始終使用完整的二叉樹來構建節點,它的節點是鏡像。CatBoost調用對稱樹來避免過擬合,提高可靠性,并大大加快預測速度。另外,LightGBM是基于直方圖的決策樹算法、具有深度限制的葉子生成策略以及使用直方圖進行差分加速。因此,將兩種方法結合起來可以取得很好的效果。

圖1 LightGBM的葉子生成策略
我們根據大量的歷史數據特征進行訓練,并通過參數來控制過擬合策略,使訓練效果的改善更加穩定。我們還使用了兩個框架進行訓練,獲得效果如表1所示。

表1 GBDT方法的分數
我們可以看出,在這個數據集上,CatBoost的效果比LightGBM要好,我們構建的特征也更好地反映在具體的分數上。
(2)RNN模型
通常設想使用RNN的解決方案,輸入用戶行為序列,并用用戶是否在第二天處于活躍狀態來標記該序列,這種RNN結構被稱為ManyToOne。

圖2 ManyToOne的RNN結構
為了充分利用數據,訓練數據需要大量的滑動窗口來實現數據的擴充,但這樣也會導致計算量過大。另外,每個序列只有一個標簽,梯度很難傳遞,導致訓練非常困難。相反,我們可以考慮ManyToMany的結構,即每個輸入對應一個輸出,用戶是否在第二天處于活躍狀態。充分利用了監督信息,減輕梯度傳遞的負擔,使訓練更加容易。

圖3 ManyToMany的RNN結構
LightGBM和CatBoost的方法,主要以歷史數據為特征。而RNN不需要處理太多的輸入序列,可以直接輸入各種行為序列,簡單的列表如下:
●當天是否登錄(0或者1)
●觀看視頻的次數
●動作類型(是否顯示、是否點擊、是否收藏等)的操作次數
另外,直接在輸出層進行截距拼接,輸入日期和安裝渠道。低頻類別可以劃分為一個總的類別。通過余弦退火和快照集成,可以以非常低的成本獲得大量不同的局部最優解,最后融合可以實現顯著的提升。
(3)快照集成
在訓練開始時,SGD將在權重空間做一個較大的跳躍,隨后,由于采用余弦退火策略,學習率逐漸降低。SGD收斂到局部最優解,并通過快照集成將模型權重加入到集合中,實現模型的融合。然后,將學習率重置為一個較大的值,在模型收斂到某些不同的最優解之前,SGD將再次顯著跳躍。
快照集成方法的迭代周期為20到40次。長期循環學習率可以在權重空間中找到盡可能不同權重的模型。如果模型相似,則融合模型中各個網絡的預測結果也會非常接近,使得融合模型的優點變得微不足道。快照集成的效果很好,大大提高了模型的性能,而快速集合集成方法效果更好。
(4)隨機加權平均
隨機加權平均法(SWA)與快速集合集成方法(FGE)非常接近,但是計算量小。SWA可以應用于任何模型結構和數據集,并在這些數據集中顯示出良好的效果。SWA將趨于全局最低水平。SWA不是我們在傳統意義上理解的集成方法。在訓練結束時,將得到一個性能優于快照集成和FGE的模型。
如圖4所示,W1、W2和W3代表三個獨立訓練的網絡,WSWA是它們的平均值。與SGD相比,在測試集上表現出更好的性能。
SWA的靈感來自于經驗觀察,在每個學習率周期結束時,局部極小值往往在損失曲面上損失值極低的區域的邊界處累積。通過對這些點的損失值進行平均,可以得到具有較低損失值、推廣性和通用性的全局最優解。

圖4 SWA
提出的兩階段學習過程包括特征工程和參數優化等技術部分。我們應用不同的參數來獲得最終的結果。使用了最佳CatBoost的結果和兩個RNN模型的結果進行集成,得到了最高的分數。我們融合策略是疊加和平均,使用ManyToMany的結果作為訓練Cat?Boost的特征,并應用CatBoost模型的結果和RNN-Ma?nyToMany結果的平均值。我們提交了線下驗證集上的最高分數,最終在排行榜上的得分為0.7671。

表2融合方法分數
本文介紹了一個實用的端到端的機器學習解決方案,在特征工程部分,采用多種數據分割方法豐富了特征提取,并利用多層疊加特征和時間衰減特征對模型進行增強。最后,在模型學習部分,我們使用三種方法來建立我們最終的方案,我們這種方法在離線測試和線上測試中,都具有很好的表現。進一步工作將包括使用CNN和DeepFM來提高我們現有模型的性能。