Data Mining Project Report
Notebook 代碼預覽
摘要
每天都有數以十萬計的新問題以及 UGC 內容產生在知乎網站,如何高效的將這些用戶新提出的問題邀請其他用戶進行解答,以及挖掘用戶有能力且感興趣的問題進行邀請下發,優化邀請回答的準確率,提高問題解答率以及回答生產數,是亟待解決的一個問題,智源-看山杯專家發現演算法大賽2019是解決該問題的競賽,旨在精準邀請用戶來提供優質回答,我在此競賽中盡可能多地挖掘了用戶、問題的資訊以及用戶和問題之間的關聯資訊,選擇了具有弱分類效果的決策樹作為學習模型,達到了較好的學習效果,能夠比較精準地預測用戶有意愿接受回答邀請的概率,
1 Introduction
本次比賽是 智源 2019 人工智能大賽 的任務之一,
知識分享服務已經成為目前全球互聯網的重要、最受歡迎的應用型別之一,在知識分享或問答社區中,問題數遠遠超過有質量的回復數,因此,如何連接知識、專家和用戶,增加專家的回答意愿,成為了此類服務的中心課題,
知乎是中文互聯網知名的綜合性社區平臺,是一個擁有 2.2 億用戶,每天有數以十萬計的新問題以及 UGC 內容產生的網站,其中,如何高效的將這些用戶新提出的問題邀請其他用戶進行解答,以及挖掘用戶有能力且感興趣的問題進行邀請下發,優化邀請回答的準確率,提高問題解答率以及回答生產數,成為知乎最重要的課題之一,
比賽提供了知乎的問題資訊、用戶畫像、用戶回答記錄,以及用戶接受邀請的記錄,要求參加者預測這個用戶是否會接受某個新問題的邀請,比賽使用 AUC 對參賽者提交的資料與真實資料進行衡量評估,
2 Overview

比賽給出的資料集包含邀請資訊、用戶資訊、問題資訊、回答資訊,以及主題、分詞、單字的64維向量資料,如上圖,需要輸出的值就是用戶對于某回答邀請,其接受邀請的概率,由于本人對詞向量等資訊的處理與挖掘不太熟悉,因此排除掉了主題、分詞、單字的向量資料,僅從其他資訊中尋找有用資訊進行挖掘,
根據邀請資訊,我們可以繪制出圖所示的關系圖:每一條邀請包含一個被邀請用戶和他所需要回答的一個問題,用戶有一些歷史回答,該問題下也有一些已有的回答,根據該關系圖,盡可能多地尋找出圖中的有用資訊就是我們要做的事情,因此,我從該邀請較合適、該用戶喜歡回答問題、該問題足夠吸引人回答、該用戶與該問題的契合度很高這四個大方向,對資料進行了挖掘,

經過挖掘的多維資料,可通過常用的決策樹分類器進行訓練學習,最終達到精準預測用戶接受回答概率的目的,
3 The Proposed Method
3.1 ?? Invite Feature Mining
訓練集的邀請資料(invite_info)中包含4維資料:問題ID、用戶ID、邀請創建時間、是否回答,其中“是否回答”項用作資料集的標簽,其余三個維度都是值得挖掘的項,
不同用戶以及不同問題都有著個體之間的差異性,因此問題ID和用戶ID都可以作為分類的特征,邀請在周幾、幾點發出,都會影響用戶回答的欲望,因此邀請小時數、邀請星期數可以作為有區分度的特征,另外,被邀請人被邀請次數和該問題發出邀請的次數也都是有用特征,
綜上,邀請資訊中,選出問題ID編碼、用戶ID編碼、邀請小時數、邀請星期數、被邀請人出現重復度、被邀請問題出現重復度這6維資料,
3.2 ?? User Feature Mining
每個邀請對應的用戶均有其個性特征,在用戶特征表(member_info)中可以得到這些特征,因此,選用該邀請對應的用戶的性別、訪問頻率、二分類特征A-E、多分類特征A-E、鹽值分數作為重要特征,其中存在較多的離散的、非數值的資料,我們將其轉換成整數型資料,另外,每個人的性別、訪問頻率、多分類特征在所有用戶中出現的重復度也值得挖掘,
綜上,在用戶資訊中選取出以上提到的20維資料進行利用,
3.3 ?? Question's Answers Feature Mining
每個邀請對應的問題下有許多的回答,這些回答的數量、點贊數等特征都從某一方面反應了問題的火爆程度以及該問題的吸引力程度,因此,從回答資訊表(answer_info)中找出該問題下所屬的回答,進行一些資料的挖掘是必要的,這些資料包括:問題回答距離提問的天數、問題的優秀、推薦、加入圓桌、有圖片、有視頻、字數、點贊、取贊、評論、收藏、感謝、舉報、沒有幫助、反對、邀請數,以上各資料的計數、最大值、最小值、均值、標準差、加和值這6維計算資料,再加上問題的回答數,
從以上的挖掘中,我們選取出了97維資料,
3.4 ???♂ User's Answers Feature Mining
每個被邀請的用戶有許多歷史回答,這些歷史回答的資料也可以代表該用戶對回答問題的熱衷程度,同上一個特征挖掘一樣,由用戶的歷史回答,同樣可以挖掘出97維資料,
3.5 ?? Question - User Relationship Mining
用戶歷史上回答過的問題,也從側面反映出了該用戶對當前問題的感興趣程度,試想,如果用戶曾經回答的問題與當前問題有一定相似度,則他應該有更大概率接受這次回答邀請,
將該用戶歷史回答過的問題列舉出來,把這些問題與當前邀請問題的主題、標題分詞、問題描述分詞進行對比,可以挖掘這三種屬性下兩問題的以下資料:
- 兩者交集集合的項數
- a占當前問題該屬性的比例
- a占歷史問題該屬性的比例
- a中項在歷史問題該屬性中出現總次數
- d占歷史問題該屬性的比例
綜上,可挖掘出3個屬性各5維對位元征,總計15維特征,
3.6 Model
經過以上特征挖掘,總共得到了235維度的數值特征,這些特征各自都具有一些弱分類能力,因此選用 python 的 LightGBM 庫中的決策樹分類器(LightGBMClassifier)作為學習模型,該模型能夠對一些弱分類特征進行集成,形成性能較強的分類器,
4 Experiments
4.1 ?? Parameters Optimization
對模型的每項引數都使用交叉驗證進行調參比較費時費力,因此我選用了 hyperopt 包進行自動化調參,
首先應該確定,有哪些引數需要進行調整,LightGBM分類器中,有以下幾項常用引數:max_depth, num_leaves, min_child_samples, min_child_weight, feature_fraction, reg_alpha, reg_lambda,
在這里,我們給定以下固定引數的取值:boosting_type='dart', learning_rate=0.5, n_estimators=200,
hyperopt 自動化調參工具需要指定一個 loss 函式作為最小化的目標函式,我們給定該 loss 函式:
\[Loss = 1 ? auc_{last} \]最小化該函式,就是最大化交叉驗證的最終驗證準確率,
經過 6 輪不斷縮小范圍的調參,得到了表所示引數優化程序表,
| Param Name | Epoch 1 | Epoch 2 | Epoch 3 | Epoch 4 | Epoch 5 | Final |
|---|---|---|---|---|---|---|
| max_depth | 20 | 24 | 22 | 20 | 20 | 20 |
| num_leaves | 200 | 200 | 180 | 180 | 190 | 190 |
| min_child_samples | 220 | 160 | 220 | 210 | 210 | 210 |
| min_child_weight | 0.056 | 0.045 | 0.045 | 0.055 | 0.055 | 0.055 |
| feature_fraction | 0.7 | 0.7 | 0.65 | 0.6 | 0.6 | 0.7 |
| reg_alpha | 0.001 | 0.029 | 0.001 | 0.009 | 0.005 | 0.005 |
| reg_lambda | 13.5 | 15.5 | 15. | 16 | 18 | 21 |
| loss | 0.16209 | 0.16205 | 0.16217 | 0.16195 | 0.16196 | 0.16187 |
我們可以對比使用了優化后的引數的學習器與未使用這些引數的優化器在訓練程序中的準確率差異,取經過200輪訓練的交叉驗證準確率資料,可繪制下圖所示折線圖,由折線圖可得知,使用調參后的引數比不使用引數有了明顯的提升效果,

4.2 ??? Result
日常驗證提交結果和最終驗證提交結果分別如表所示,
| Result | Rank | Score |
|---|---|---|
| Test | 115 | 0.80985 |
| Final Validation | 79 | 0.81110 |
5 Conclusion
本次比賽解決了在知識分享和問答社區進行精準邀請的問題,使得更高精準度的邀請投放成為可能,在該作業中,盡可能多地從已知的資料中挖掘出有用資料并進行利用是提升投放精準度的關鍵點,再配合模型引數的調整,最終達到了以較高精準度發送問答邀請的結果,
本次比賽的代碼已托管在 https://github.com/rayiooo/python_datamining_rayiooo,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/162338.html
標籤:其他
上一篇:超引數貝葉斯優化
下一篇:Pandas的資料過濾
