熱線電話:13121318867

登錄
首頁精彩閱讀大數據實時推薦-不只是統計
大數據實時推薦-不只是統計
2016-06-05
收藏

大數據實時推薦-不只是統計

隨著大數據時代的來臨,如何幫助用戶從大量信息中迅速獲得對自己有用的信息成為眾多商家的重要任務,個性化推薦系統應運而生。個性化推薦系統以海量數據挖掘為基礎,引導用戶發現自己的信息需求,現已廣泛應用于很多領域。傳統的個性化推薦系統,采用定期對數據進行分析的做法來更新模型。由于是定期更新,推薦模型無法保持實時性,對用戶當前的行為推薦結果可能不會非常精準。實時個性化推薦實時分析用戶產生的數據,可以更準確地為用戶進行推薦,同時根據實時的推薦結果進行反饋,更好地改進推薦模型。

騰訊大數據平臺部和北京大學網絡所崔斌教授研究組從2014年起開展大數據實時推薦研究,雙方合作的論文連續兩年在國際頂級會議SIGMOD2015和2016發表:TencentRec: Real-time Stream Recommendation in Practice SIGMOD 2015,Real-time Video Recommendation Exploration SIGMOD2016 。研究工作側重解決實際應用中存在的問題,針對大數據實時推薦在精準、實時、海量等方面的挑戰,提出了分布式可擴展的實時增量更新推薦算法,使推薦效果得到了明顯的提升。所研究的方法已應用在包括視頻、新聞等多個業務中,推薦效果得到顯著提升。實時推薦系統現每天處理千億條用戶行為,支撐百億級用戶請求。

1. 大數據實時計算平臺

騰訊大數據實時計算平臺TRC[1]由實時數據接入TDBank、實時數據處理TDProcess、和分布式K-V存儲TDEngine等部分組成,其中TDBank主要負責從業務側接入實時數據,如用戶行為數據、物品信息數據等;TDProcess基于Storm對實時流入的數據進行計算,并利用TDEngine存儲計算結果,以供推薦引擎等使用。

計算平臺TRC的主要框架如上圖所示,有關TRC的文章已經有很多,這里不作詳述,有興趣的讀者可以參考文章[1]獲得詳細描述。

2. 推薦算法實時化

基于Storm的實時計算能夠針對海量流式數據進行有效的統計處理,然而流式計算在機器學習算法方面有著天然的劣勢,而要完成大數據實時推薦,只是實時統計顯然是不夠的,我們希望能實現推薦算法的實時化更新計算。

流式實時計算在機器學習方面的局限性主要表現在兩方面:首先,由于數據是以流的形式進入Storm平臺計算,在任何時刻,我們都只有目前流入的數據,而沒有傳統的全局數據概念,而在全局數據上進行迭代計算正是許多機器學習算法需要的;其次,Storm平臺是計算數據易失的,在海量數據背景下,如何保證模型的有效存儲及更新維護成為一個挑戰。

對于上述第二點不足,我們使用了TDE作為解決方案,TDE作為一個高容錯、高可用性的分布式K-V存儲,很好的滿足了我們對計算數據的存儲需求。而對于第一點不足,我們通過精細的設計,將原始的離線計算轉化為增量計算,并實現了幾類經典算法:

CF算法:協同過濾算法,根據當前時間用戶對物品的行為,實時更新物品間的共現數據和用戶的興趣分布數據,以計算物品間和用戶間的相似度,進行基于物品或用戶的協同推薦。

CB算法:通過分析用戶的實時行為數據,更新計算用戶和不同物品間的內容相似度,以對用戶進行推薦。

Hot算法:通過接收所有用戶的實時行為數據,實時更新物品的熱度,分析得到當前的熱點物品,如實時熱點新聞等,以對用戶進行實時的推薦。

MF算法:協同過濾矩陣分解算法,根據用戶對物品的行為評分矩陣,將矩陣分解為用戶和物品的特征向量,以預測用戶對物品的喜好,來進行推薦。

實現框架

下圖為基于Storm實現的框架圖,系統可以分為五層,數據接入層,數據預處理層,算法處理層,商品信息補充層,和存儲層。數據接入層負責接收數據,預處理層負責根據歷史數據對數據進行補全或者過濾等。算法處理層,是系統的主體部分,負責對數據進行分析處理,實現相關推薦算法的計算,將算法結果傳入下一層。商品信息補充層負責對算法結果進行商品信息補全,這里補全是為了后續與離線模型結合或向用戶推薦時,進一步對推薦結果做篩選的。最后一層是存儲層,負責將結果存入存儲部分,以供使用。

框架數據接入層

數據接入層負責接入數據,并且做簡單的檢查,對應TdbankSpout。通用推薦平臺接收的數據共有五類,包括類別數據,行為權重數據,商品屬性,用戶屬性,以及用戶行為數據。

類別數據:是各個商品的類別的描述和等級,用于基礎數據統計

行為權重數據:各個行為的權重,用于基礎數據統計

商品屬性:各個商品的基本屬性,基礎數據統計

用戶屬性:用戶的基本屬性,基礎數據統計

用戶行為數據:記錄了用戶的行為,是系統主要要分析的數據。

數據預處理層

包括兩個部分,一個是基礎信息構建,對應的bolt是BaseInfoBolt,一個是對用戶行為數據進行預處理,對應的是PretreatmentBolt?;A信息構建接受類別、行為權重、商品屬性和用戶屬性四種數據,并存入相應的table。預處理bolt接受用戶行為數據,根據用戶群信息和歷史數據對用戶行為記錄進行補全或者過濾等。

算法處理層

算法處理層是系統的主體部分,又可以分為數據統計部分和算法計算部分。數據統計部分包括用戶詳細信息統計,最近訪問商品統計,人群行為數據統計,人群商品共現數據統計,場景Ctr統計等。

算法計算部分實現了CF,MF,Hot,CB等算法。這里對算法進行描述。

商品信息補全層

商品信息補充層負責對算法結果進行商品信息補全,這里補全是為了后續與離線模型結合或向用戶推薦時,根據商品信息來對算法推薦結果進行篩選后對相應用戶進行推薦,比如,根據商品價格和離線模型分析的用戶財富層次等對推薦結果進行篩選,有些商品是vip免費的,可以對vip用戶推薦,而對普通用戶則要慎重考慮。

存儲層

存儲層是系統的最后一層,負責將推薦結果存入tde,tde是騰訊構建的一個內存k-v存儲,對用戶進行在線推薦時,從tde中取出推薦結果,與離線模型結合,對推薦結果進一步處理后推薦給用戶。

2.2 實現優化策略

針對實現過程中遇到的問題和挑戰,我們提出了幾點優化策略以優化資源使用、提升效果。

分群計算:在實際計算過程中,我們根據不同的用戶群體對數據進行了劃分,并在劃分數據集上進行計算。用戶群體可根據用戶年齡、性別等進行劃分,也可根據其他信息如職業、活躍度等進行劃分。由于不同群體內的用戶行為模式可能不同,在經過劃分的數據集上進行計算,可以得到更準確的用戶行為模式。

滑動窗口:為了保證數據模型的實時性,某些情況下需要對歷史數據進行“遺忘”,即只使用最近一段時間的數據來進行計算。為此,我們實現了滑動窗口,對于某個時間單位,我們維護近n個時間窗口的數據信息,這些窗口會實時滑動,丟掉最遠的數據,保留最近的實時數據信息用于計算。

局部集成:為了有效維護計算數據,我們使用了TDE作為數據外部存儲,而在計算過程中與TDE的交互成為了計算開銷不可忽視的一部分。為了減少與TDE的交互,降低資源使用,我們使用了局部集成策略,根據不同的計算特點,將數據先在worker內部做集成,然后再將局部集成結果合并到TDE。實踐證明,這一策略有效降低了與TDE的交互,減少了資源使用。

多層Hash:在計算過程中,會出現有多個worker需要寫同一個Key-Value值得到情況,稱之為寫沖突,為了保證TDE的高可用性,我們使用了多層Hash策略來解決寫沖突問題,減小了TDE在數據一致性上的負擔。通過多層Hash策略,對同一個key的寫操作將只發生在同一個worker上。

實時可擴展item-based CF

基于物品的協同過濾推薦[2](item-based CF)是亞馬遜于2003年公布的推薦算法,由于其推薦效果較好且易于實現等特點,在工業界得到了廣泛應用。這里我們以item-basedCF算法為例,解釋實時推薦算法的具體實現[3],有關其他算法的具體描述可參考論文[3]和[4]。

3.1 原始Item-basedCF

Item-based CF的基本思想是認為用戶會喜歡和他以前所喜歡的物品相似的物品,其計算分為相似物品計算和用戶喜好預測兩部分,相似物品計算是整個算法的關鍵部分,用戶喜好預測根據物品相似度加權預測用戶對新物品的評分。<a href='/map/tuijianxitong/' style='color:#000;font-size:inherit;'>推薦系統</a>1<a href='/map/tuijianxitong/' style='color:#000;font-size:inherit;'>推薦系統</a>2

3.2 實時item-basedCF

在傳統的推薦算法中,用戶對物品的喜好評分由用戶打分決定,而現實世界中,用戶對物品的打分數據較少,大部分數據是用戶行為數據,如瀏覽、點擊等,這些用戶行為具有不確定性,比如,用戶點擊一個物品詳情頁后關閉,可能表示用戶喜歡該物品因為用戶點擊了詳情頁,也可能表示用戶不喜歡該物品因為用戶又關閉了詳情頁。這種情況下,我們只能從用戶行為數據中去猜測用戶的喜好。

為了降低對用戶行為數據的錯誤理解造成的損失,我們對原始item-basedCF算法進行了改進。具體來說,我們為每個用戶行為類型設置了評分權重,衡量不同行為表示的用戶喜好的可靠性,如,對點擊行為我們設定其評分權重為一分,而購買行為三分,因為用戶的購買比點擊更有可能說明用戶喜歡該物品。對于一個物品,用戶可能有多種行為,比如點擊、購買、評論等,這時我們取權重最高的用戶行為評分作為該用戶對物品的喜好。

我們定義了用戶對兩個物品的共同評分用于計算物品相似度,如下:

通過將物品的共同評分設定為兩個物品評分中較低的那個,我們限定了對行為錯誤估計的損失為兩者的較小值。相應的,兩個物品的相似度計算如下:

為了實現流式實時計算,實時更新物品的相似度,我們將上式計算分為了三部分,如下:

其中, ,

3.2 實時item-basedCF3.2 實時item-basedCF1

3.3 實時剪枝策略

在實際計算過程中,我們發現,由于數據量太大,用戶的某一個行為會帶來大量的物品需要重新計算。具體來說,我們一般認為用戶在某一時間段中交互的物品相互之間相關,即可能相似,這個時間段可能是一天或者一個月,那么一個用戶行為帶來的物品評分更新,可能會造成數十甚至數百個物品對的相似度需要重新計算,而這些物品對很多可能是不那么相似的,即

數據公式

4 總結

隨著近年來個性化服務的發展,推薦系統在實際應用中的價值也得到越來越多的認可,大數據實時推薦在推薦效果上的優秀表現,以及其巨大的發展空間,使其獲得很多的關注。大數據實時推薦仍然有許多值得探索的地方,如實時矩陣分解、實時LR、實時深度學習等在線學習算法。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢