誠邀:每日十萬+提問,知乎精準推薦如何做得更好?

  • 2020 年 2 月 12 日
  • 筆記

整理 | Jane

出品 | AI科技大本營(ID:rgznai100)

1 月 10 日,北京智源人工智能研究院聯合知乎、數據評測平台biendata舉辦的 「2019智源·知乎看山杯專家發現算法大賽」正式收官。該比賽從2019年9月正式啟動,為期3個月,以問題路由推薦系統為賽題,開放近200萬用戶和1000萬邀請數據的Link prediction大型數據集。

比賽一共吸引了 711 支來自全球各個院校以及工業界的算法挑戰隊伍參與,參賽者達到 1631人,最終 7 支隊伍脫穎而出,獲得大賽獎金。其中,騰訊「test團隊」獲得冠軍,重慶郵電大學、華南理工大學、電子科技大學、廣東工業大學組成的混合團隊獲得亞軍,季軍則由華南理工大學獲得。

(獲獎者現場合影)

比賽任務

知識分享服務已經成為目前全球互聯網的重要、最受歡迎的應用類型之一。在知識分享或問答社區中,問題數遠遠超過有質量的回複數。知乎,每天有數以十萬計的新問題以及 UGC 內容產生的網站,如何高效的將這些用戶新提出的問題邀請其他用戶進行解答,以及挖掘用戶有能力且感興趣的問題進行邀請下發,優化邀請回答的準確率,提高問題解答率以及回答生產數,成為知乎最重要的課題之一,而本次比賽也旨在解決這一問題。

自2016年引入機器學習技術以來,知乎已經將人工智能、算法技術應用到社區內容和產品體驗的各個環節中。目前,知乎算法團隊已經搭建了一套基礎生態體系,通過算法實現了用戶畫像、內容分析、內容個性化推送等,其效率比過去的人工運營方式提高了數十倍。

為了讓內容和用戶更高效、精準地匹配,知乎專家推薦系統即問題路由系統應運而生。問題路由推薦系統每日對10萬+的問題進行分發,並保證問題提問後3日內的解答率達到70%以上;系統對千萬級的創作群體進行精準推薦,經由系統智能分發推薦下每日產生的回答數超過20萬。

問題路由同時也是本次看山杯的題目來源,比賽旨在從選手中徵集高效精準的推薦算法,挖掘有能力且感興趣的用戶進行問題的精準推薦。比賽將提供知乎的問題信息、用戶畫像、用戶回答記錄,以及用戶接受邀請的記錄,要求選手預測這個用戶是否會接受某個新問題的邀請。

數據

相比國外的ImageNet、Gigaword等高質量數據集,中文互聯網相關的高質量數據集是相對缺乏的,而知乎累積了非常多的高質量文本語料和其他各種各樣的數據。此次比賽,知乎選出了一個月的邀請數據作為訓練數據,開放近 200 萬用戶和 1000 萬邀請數據的Link prediction大型數據集。

數據特徵包括:

1、問題信息。包括<問題id、問題創建時間、問題的話題、問題的文本、問題的描述>等。

2、用戶的回答。包括<回答id、問題id、作者id、回答的文本、回答時間、點贊數、收藏數、感謝數、評論數>等。

3、用戶人畫像數據。包括<用戶id、性別、活躍頻次、關注話題、長期興趣、鹽值>等。

4、<topic、token(詞)、單字 64維 embedding >數據。

5、最近一月的邀請數據包括<問題id、用戶id、邀請時間、是否回答>。

在現場聽了各位獲獎團隊的分享後,營長決定把這些優秀的方案整理分享給大家。接下來,我們帶領大家先一睹本次競賽 Top3 團隊與他們的解決方案,看看他們都是如何做賽題分析、特徵工程與模型設計的。

Top 1:特徵工程在知乎推薦中的應用

(一)團隊:test團隊(曹雄,騰訊)

(二)在這次競賽中,test團隊取得了 auc 排名第一的成績。通過抽取用戶特徵、問題特徵、用戶興趣命中特徵、問題統計特徵、用戶行為特徵,融合 LightGBM 模型和 DeepFM 模型進行訓練,得到最終的預測結果。

(現場頒獎:一等獎)

(三)特徵工程

test團隊使用的特徵包含:用戶特徵、問題特徵、用戶興趣命中特徵、問題統計特徵、用戶行為特徵。

  • 1、使用的用戶特徵如下:

(1)用戶ID, 格式為 Mxxx。

(2)性別。

(3)創作關鍵詞的編碼序列,格式為 W1,W2,W3,…,Wn , 表示創作關鍵詞的編碼序號,如果創作關鍵詞為空,則用 -1 進行佔位。

(4)創作數量等級。

(5)創作熱度等級。

(6)註冊類型。

(7)註冊平台。

(8)訪問頻率,有五種取值 [new | daily | weekly | monthly | unknow] , 分別對應為 [新用戶 | 日活用戶 | 周活用戶 | 月活用戶 | 未知]。

(9)用戶二分類特徵A,兩種取值 0 或 1。

(10)用戶二分類特徵B,兩種取值 0 或 1。

(11)用戶二分類特徵C,兩種取值 0 或 1。

(12)用戶二分類特徵D, 兩種取值 0 或 1。

(13)用戶二分類特徵E, 兩種取值 0 或 1。

(14)用戶分類特徵A, 格式為 MDxxx。

(15)用戶分類特徵B, 格式為 BRxxx。

(16)用戶分類特徵C, 格式為 PVxxx。

(17)用戶分類特徵D, 格式為 CTxxx。

(18)用戶分類特徵E, 格式為 PFxxx 。

(19)用戶的鹽值分數。

(20)用戶關注的話題,格式為 T1,T2,T3,…,Tn , 表示用戶關注話題的序列編號 (最多 100 個),如果關注話題為空,則用 -1 進行佔位。

(21)用戶感興趣的話題,格式為 T1:0.2,T2:0.5:T3,-0.3,…,Tn:0.42 , 表示用戶感興趣的話題序列編號及喜好程度分數 (最多 10 個),如果感興趣話題為空,則用 -1 進行佔位。

其中很多特徵是文本特徵,需要進行離散到數值空間

  • 2、使用的問題特徵如下:

(1)問題創建時間, 格式為 D3-H4。

(2)問題標題的單字編碼序列, 格式為 SW1,SW2,SW3,…,SWn , 表示問題標題的單字編碼序號。

(3)問題標題的切詞編碼序列, 格式為 W1,W2,W3,…,Wn , 表示問題標題的切詞編碼序號, 如果問題標題切詞後為空, 則用 -1 進行佔位。

(4)問題描述的單字編碼序列, 格式為 SW1,SW2,SW3,…,SWn , 表示問題描述的單字編碼序號, 如果問題沒有描述, 則用 -1 進行佔位。

(5)問題描述的切詞編碼序列, 格式為 W1,W2,W3,…,Wn , 表示問題描述的切詞編碼序號, 如果問題沒有描述或者描述切詞後為空, 則用 -1 進行佔位。

(6)問題綁定的話題 ID, 格式為 T1,T2,T3,…,Tn , 表示問題綁定的話題 ID 的編碼序號, 如果問題沒有綁定的話題,則用 -1 進行佔位。

其中很多特徵是文本特徵,需要進行離散到數值空間;問題id特徵沒有使用,因為在測試中發現該特徵的作用是負向的,負向的原因可能是問題推送給用戶回答的時間比較短(只有幾天時間)。

  • 3、使用的用戶興趣命中特徵如下:

(1)用戶topic命中問題topic的Id

(2)用戶topic命中問題topic個數

  • 4、使用的問題統計特徵如下:

(1)問題點擊率統計

(2)問題標題點擊率統計

(3)問題描述點擊率統計

(4)問題ID點擊率統計

以上特徵按照天區間進行統計,分為1天、7天、14天、30天;同時以上特徵可以按照小時統計,統計最近12小時的數據

  • 5、用戶行為特徵分為:用戶行為統計特徵、用戶行為相似特徵、用戶展示特徵

其中,使用的用戶行為統計特徵如下:

(1)問題標題點擊率統計

(2)問題描述點擊率統計

(3)用戶點擊率統計

以上特徵按照天區間進行統計,分為1天、7天、14天、30天;

使用的用戶行為相似特徵如下:

(1)問題標題點擊相似

(2)問題描述點擊相似

以上特徵按照天區間計算相似度,分為1天、7天、14天、30天;相似的計算過程是;利用數據中的embeding,將標題embeding相加得到問題標題的embeding,將用戶點擊標題的embeding相加得到用戶embeding,計算用戶embeding和標題embeding的cos距離。

使用的用戶展示特徵如下:

(1)當前展示位置

(2)當前小時展示數量

(四)模型簡介:本文使用deepfm和LightGBM訓練數據,其中deepfm的特徵需要進行離散化

1、LightGBM:是一個梯度 boosting 框架,使用基於學習算法的決策樹與傳統算法相比具有的優點:

  • 更快的訓練效率
  • 低內存使用
  • 更高的準確率
  • 支持並行化學習
  • 可處理大規模數據
  • 原生支持類別特徵,不需要對類別特徵再進行0-1編碼這類的

使用的參數如下:

  • num_leaves=800
  • learning_rate=0.035
  • min_data_in_leaf=100
  • max_bin=2047

2、DeepFM:和Wide & Deep的模型類似,DeepFM模型同樣由淺層模型和深層模型聯合訓練得到。不同點主要有以下兩點:

wide模型部分由LR替換為FM。FM模型具有自動學習交叉特徵的能力,避免了原始Wide & Deep模型中淺層部分人工特徵工程的工作。

共享原始輸入特徵。DeepFM模型的原始特徵將作為FM和Deep模型部分的共同輸入,保證模型特徵的準確與一致。

3、模型融合:LightGBM取得AUC為0.895,DeepFM取得的AUC為0.88,融合權重0,7:0.3,最終auc為0.8969

Top 2:多模式專家發現算法

(一)團隊 Conquer:章凡(電子科技大學)、劉岱遠(廣東工業大學)、葉青照(華南理工大學)、林智敏(重慶郵電大學)

(二)Conquer 團隊對問題尋找最佳匹配的專家回答任務,提供了一個多模式的解決方案。其中,對於特徵工程,本文考慮了全局特徵,時間滑窗特徵,匹配特徵,句嵌入特徵,圖特徵,排序特徵,Word2vec等;對於模型,針對賽題的設計並修改了多種模型,最後進行融合,其中包括:LightGBM,CatBoost,Multi-ESIM,DSSM,LSTUR。每種模型考慮不同的特徵,融合取得了非常顯著的結果。

(現場頒獎:二等獎)

(三)特徵工程

1、全局統計特徵:針對Train和Test,對於樣本用所有邀請時間之前的數據做為特徵。

(1)answer_info統計:針對answer_info,提取每個樣本在該邀請時間之前的用戶的回答次數,問題的回答次數,用戶在該邀請時間之前回答問題的點贊數、回答詞數、收藏數等(去掉方差為0的特徵)的(sum、mean、max、min、std、median)

(2)時間統計:用戶邀請時間、天、小時、星期,問題創建時間、天、小時、星期。邀請時間減去創建時間,上一次邀請時間(天數),用戶受到邀請的rank(根據時間、天數),問題受到邀請的rank(根據時間、天數),邀請時間減去上一次回答的時間、天數)等

用戶回答時間,當前邀請時間之前該用戶回答問題時間的(時間、天數、小時、星期),回答時間減去問題創建時間(時間、天數、小時、星期)的統計特徵(sum、mean、max、min、std、median)。

(3)當天邀請統計:用戶同一時間收到邀請的時間,當天收到邀請的rank,用戶收到邀請總共有多少種獨特的天數。用戶同一時間最多收到多少次邀請。

(4)前七天、前一天用戶收到的邀請的時間統計,問題前七天、前一天發出邀請的時間 統計。

(5)時間diff:用戶邀請時間間隔,回答時間間隔的統計特徵(mean,max,min,std)

(6)用戶關注主題下有多少個問題,問題主題下有多少個用戶關注。

2、時間滑窗統計:劃分train test提取的特徵區間(其中3809等為天數的脫敏值)

  • train1 3809-3839預測3840-3846
  • train2 3816-3846預測3847-3853
  • train3 3823-3853預測3854-3860
  • train4 3830-3860預測3861-3867
  • test 3837-3867預測3868-3874

構造的特徵除了全局特徵中的處理方式,還包括:1)一天里最多回答次數2)用戶最高贊的回答3)用戶最高贊的回答的話題4)用戶最高贊回答的問題5)優秀回答的次數/優秀回答

3、匹配特徵

(1)對用戶關注的主題以及問題的主題的topic embedding分別平均構成句向量,計算向量時間的相似度(cosine, cityblock, jaccard, canberra, euclidean, minkowski, braycurtis),對相似度按天進行rank。

(2)對用戶邀請時間之前的回答的問題的標題,與當前問題的標題計算BM25相似度打分,統計當前問題與過去回答過的問題的相似度打分的均值

4、文本特徵、主題特徵

(1)除了使用nn外,使用平均詞向量得到的句向量直接入模,使用加權詞向量獲得的句向量直接入模。

(2)使用tfidf,分別對用戶關注主題-問題主題做tfidf(用弱分類器提取oof特徵,包括LR,SGD,Ridge)

(3)對用戶感興趣主題的興趣值構建csr矩陣,與問題主題的tfdif-count構架的csr矩陣進行拼接提取oof特徵(模型包括SGD、LR、Ridge)

5、基本統計

(1)對member_info做頻率編碼。

(2)對用戶ID,問題ID做頻率編碼。

(3)提取關注話題個數,問題話題個數等。

6、圖特徵

(1)使用IJCAI2019的工作ProNE[3]算法,使用用戶當節點,受邀問題作為邊,提取用戶ID的圖Embedding。該算法計算圖Embedding速度較快。

(2)使用pagerank算法提取用戶ID和問題ID的打分。

7、點擊率特徵:使用劃分時間窗的方法(劃分方法與2.2相同)提取用戶ID和問題ID 的點擊率特徵,並使用貝葉斯平滑,填充新用戶和新問題。

(四)模型簡介

1、CatBoost:由於對GPU友好,且用本比賽中相同數據特徵做實驗,最後線上結果和LightGBM相差無幾,故選用CatBoost作為訓練分類器。CatBoost 算法有以下三個的優點:它自動採用特殊的方式處理類別型特徵(categorical features)。首先對categorical features做一些統計,計算某個類別特徵(category)出現的頻率,之後加上超參數,生成新的數值型特徵(numerical features)。這也是我在這裡介紹這個算法最大的motivtion,有了catboost,再也不用手動處理類別型特徵了。 catboost還使用了組合類別特徵,可以利用到特徵之間的聯繫,這極大的豐富了特徵維度。

2、LightGBM:在特徵分配方面,所有全局特徵使用LightGBM訓練,所有滑窗特徵使用CatBoost訓練。增加了模型之間的差異性。

3、 DSSM

4、Multi-ESIM

模型說明:ESIM是IJCAI2017年的工作,具體結構為:使用Bi-LSTM對文本編碼,並加入了軟對齊,最後使用Bi-LSTM增強表示,是文本匹配任務中的經典模型,具體模型結構請見[1]。本方案構造多種匹配對,對當前問題以及過去回答過的問題,主題等進行匹配,針對字Embedding和詞Embedding訓練了兩個模型,效果吊打下方所述LSTUR模型,也可能是由於特徵比較多一些。

5、LSTUR

模型說明:ACL2019[2]的工作,原模型主要針對新聞推薦任務,用GRU提取用戶長期的興趣表示,並與當前新聞做相似度打分。沒有開源源碼,所以僅憑個人理解復現。由於上述Multi-ESIM沒有使用更多的用戶更長時間之前的回答過的問題,所以針對長期興趣使用該模型。這裡沒有完全按照原本的設計,部分結構根據效果好壞進行了微改,效果略差於ESIM。

Top 3:基於用戶畫像和文本信息的問題推薦策略

(一)團隊:MemoryError;陳雄君 陳垂澤 黎瀟瀟(華南理工大學)

(二)MemoryError團隊基於用戶畫像和文本信息對新問題進行用戶推薦,旨在高效地將用戶新提出的問題邀請其他用戶進行解答,以及挖掘用戶有能力且感興趣的問題進行邀請下發,優化邀請回答的準確率,提高問題解答率以及回答生產數。

(現場頒獎:三等獎)

(三)特徵工程

針對本次數據集所構建的特徵主要可歸類為:橫向特徵、統計特徵、相似度特徵和深度提取特徵。各類特徵說明如下:

1、橫向特徵:本類特徵均為對單行數據進行構建,主要集中對member info、invite info以及question info三個數據集進行特徵構建,橫向特徵可概述為原始特徵、SVD特徵、長度(計數)特徵、間隔特徵、時間特徵和交互特徵,如表1所示。

2、統計特徵:本類特徵為對合併後的數據集進行的全局/局部統計,統計特徵可概述為:鹽值分數統計、用戶/問題的全局統計、用戶/問題的SVD、用戶/問題曝光局部統計、時間統計、曾回答問題的狀態統計、長度統計。統計特徵詳情見表2。

3、相似度特徵:本類特徵為對各序列進行求取餘弦相似度,主要分為對各序列所對應的id的embedding序列求average後求餘弦相似度,以及對各序列的每個id的embedding求餘弦相似度後再求max/min/mean的統計特徵,如表3所示。

4、神經網絡提取特徵:本類特徵為通過不同網絡提取序列特徵,對各編碼序列作不同預處理後分別輸入不同的網絡,根據五折所得的out-of-fold預測作為新特徵。深度提取特徵詳情見表4。

(四)模型介紹

1、基於神經網絡的序列特徵提取

在本次比賽中,我們進一步使用神經網絡來對序列數據進行建模,並用於提取序列特徵。我們使用序列數據包括:用戶關注話題、問題所屬話題、用戶歷史回答問題的標題和描述、問題的標題和描述。對應不同序列的網絡結構如下:

(1)用戶關注話題、問題所屬話題:我們嘗試了兩種不同結構的網絡。首先序列特徵經過Embedding層,中間(a)使用卷積層+池化層(Average/Max)、(b)使用Flatten直接拉伸Embedding向量,最後再經過若干層全連接。網絡結構如下:

(2)用戶歷史回答問題的標題和描述、問題的標題和描述:這裡我們同樣也嘗試了不同結構的網絡。上述四組序列經過Embedding層後,再使用(a)卷積層+池化層、(b)LSTM+Attention進行特徵提取,最後再接全連接層。(c)我們還嘗試先對兩組標題向量、兩組描述向量先分別計算餘弦相似度,再接全連接層。網絡結構如下:

通過上述的特徵構建後,全量特徵被使用在樹模型以及神經網絡模型中,在模型選擇方面,因數據較大,選擇了可使用並行GPU的Catboost、Xgboost以及Wide& Deep網絡,並最終將三個模型作簡單的blending,最後再把兩個模型組所得結果加權平均。

以CChan的特徵和模型在A榜數據為例,僅使用人工構造的特徵可達到0.86+的分數,加入神經網絡提取的序列特徵後,分數達到0.870。對Catboost,Xgboost和Wide & Deep的預測結果進行融合,分數可達到0.873。A榜採用上述特徵, Travis的Catboost模型的AUC最高分為0.87559,相同特徵通過三個不同模型融合可得0.878左右的分數,與CChan模型所得結果加權融合後可得0.88013左右的分數。B榜根據特徵分佈情況剔除部分特徵並加入在A榜丟棄的特徵,我們在B榜得到0.89449的分數。比賽過程的大致得分曲線如下:

其他獲獎選手的解決方案,我們將在後續的文章中為大家繼續做報導,感興趣的小夥伴可持續關注 AI科技大本營(ID:rgznai100)

(*本文為AI科技大本營整理文章,轉載請微信聯繫1092722531)