隨著大數(shù)據(jù)時代的到來,如何幫助用戶從大量的信息中快速獲取有用的信息成為許多企業(yè)的重要任務(wù),個性化推薦系統(tǒng)應(yīng)運而生?;诤A繑?shù)據(jù)挖掘的個性化推薦系統(tǒng),引導(dǎo)用戶發(fā)現(xiàn)自己的信息需求,已經(jīng)在很多領(lǐng)域得到了廣泛的應(yīng)用。傳統(tǒng)的個性化推薦系統(tǒng)通過定期分析數(shù)據(jù)來更新模型。由于定期更新,推薦模型不能保持實時性,對于用戶當前行為的推薦結(jié)果可能不太準確。實時個性化推薦對用戶實時生成的數(shù)據(jù)進行分析,可以更準確地為用戶做出推薦,并根據(jù)實時推薦結(jié)果進行反饋,從而更好地改進推薦模型。
騰訊大數(shù)據(jù)平臺部和北京大學(xué)網(wǎng)絡(luò)學(xué)院崔斌教授的研究團隊于2014年開始進行大數(shù)據(jù)實時推薦的研究。雙方合作的論文連續(xù)兩年在國際頂級會議SIGMOD2015和2016上發(fā)表:騰訊REC:實時流推薦在實踐SIGMOD 2015,實時視頻推薦探索SIGMOD 2016。研究工作的重點是解決實際應(yīng)用中的問題。針對大數(shù)據(jù)實時推薦在準確性、實時性和海量性方面的挑戰(zhàn),提出了一種分布式、可擴展的實時增量更新推薦算法,顯著提高了推薦效果。該研究方法已應(yīng)用于包括視頻、新聞在內(nèi)的多個業(yè)務(wù),推薦效果得到了顯著提高。實時推薦系統(tǒng)現(xiàn)在每天處理數(shù)十億的用戶行為,支持數(shù)十億的用戶請求。
1.大數(shù)據(jù)實時計算平臺
騰訊大數(shù)據(jù)實時計算平臺TRC[1]由實時數(shù)據(jù)訪問TDBank、實時數(shù)據(jù)處理TDProcess、分布式K-V存儲TDEngine組成,其中TDBank主要負責從業(yè)務(wù)端訪問實時數(shù)據(jù),如用戶行為數(shù)據(jù)、物品信息數(shù)據(jù)等。;TDProcess基于Storm計算實時流入數(shù)據(jù),并使用TDEngine存儲計算結(jié)果供推薦引擎使用。
TRC的主要框架如上圖所示。關(guān)于TRC的文章很多,這里不詳細介紹。感興趣的讀者可以參考第[1]條進行詳細描述。
2.實時推薦算法
基于Storm的實時計算可以有效地統(tǒng)計處理海量流數(shù)據(jù)。然而,流計算在機器學(xué)習(xí)算法中有一個自然的缺點。要完成大數(shù)據(jù)的實時推薦,實時統(tǒng)計顯然不夠。我們希望實現(xiàn)推薦算法的實時更新計算。
機器學(xué)習(xí)中流式實時計算的局限性主要表現(xiàn)在兩個方面:一是因為數(shù)據(jù)以流的形式進入Storm平臺,任何時候我們只有當前的流入數(shù)據(jù),而沒有傳統(tǒng)的全局數(shù)據(jù)的概念,對全局數(shù)據(jù)的迭代計算正是很多機器學(xué)習(xí)算法所需要的;其次,Storm平臺在計算數(shù)據(jù)上是不穩(wěn)定的。在海量數(shù)據(jù)的背景下,如何保證模型的有效存儲、更新和維護成為一個挑戰(zhàn)。
對于上面提到的第二個缺陷,我們使用TDE作為解決方案。TDE作為一個高容錯、高可用的分布式K-V存儲,很好地滿足了我們對計算數(shù)據(jù)的存儲要求。對于第一個不足,我們通過精心設(shè)計,將原來的離線計算轉(zhuǎn)化為增量計算,實現(xiàn)了幾個經(jīng)典算法:
CF算法:協(xié)同過濾算法,根據(jù)當前用戶對項目的行為,實時更新項目間的共現(xiàn)數(shù)據(jù)和用戶的興趣分布數(shù)據(jù),從而計算項目與用戶之間的相似度,基于項目或用戶進行協(xié)同推薦。
CB算法:通過分析用戶的實時行為數(shù)據(jù),更新計算用戶與不同項目的內(nèi)容相似度,從而推薦用戶。
熱點算法:通過接收所有用戶的實時行為數(shù)據(jù),實時更新熱點項目,分析當前熱點項目,如實時熱點新聞,實時推薦用戶。
MF算法:協(xié)同過濾矩陣分解算法,根據(jù)用戶對物品行為的評分矩陣,將矩陣分解為用戶和物品的特征向量,從而預(yù)測用戶對物品的偏好并做出推薦。
實施框架
下圖是基于Storm的框架圖。系統(tǒng)可分為五層:數(shù)據(jù)訪問層、數(shù)據(jù)預(yù)處理層、算法處理層、商品信息補充層和存儲層。數(shù)據(jù)訪問層負責接收數(shù)據(jù),預(yù)處理層負責根據(jù)歷史數(shù)據(jù)完成或過濾數(shù)據(jù)。算法處理層是系統(tǒng)的主體部分,負責對數(shù)據(jù)進行分析處理,實現(xiàn)相關(guān)推薦算法的計算,并將算法結(jié)果傳遞給下一層。商品信息補充層負責完成算法結(jié)果的商品信息,其中完成是結(jié)合離線模型或推薦給用戶時進一步過濾推薦結(jié)果。最后一層是存儲層,負責將結(jié)果存儲在存儲部分供使用。
數(shù)據(jù)訪問層
數(shù)據(jù)訪問層負責訪問數(shù)據(jù),并做簡單的檢查,對應(yīng)于TdbankSpout。一般推薦平臺接收的數(shù)據(jù)有五種類型,包括類別數(shù)據(jù)、行為權(quán)重數(shù)據(jù)、商品屬性、用戶屬性和用戶行為數(shù)據(jù)。
類別數(shù)據(jù):每個商品類別的描述和等級,用于基礎(chǔ)數(shù)據(jù)統(tǒng)計
行為權(quán)重數(shù)據(jù):每個行為的權(quán)重,用于基本數(shù)據(jù)統(tǒng)計
商品屬性:每種商品的基本屬性和基本數(shù)據(jù)統(tǒng)計
用戶屬性:用戶的基本屬性和基本數(shù)據(jù)統(tǒng)計
用戶行為數(shù)據(jù):記錄用戶的行為,是系統(tǒng)要分析的主要數(shù)據(jù)。
數(shù)據(jù)預(yù)處理層
包括兩個部分,一個是基礎(chǔ)信息構(gòu)建,對應(yīng)的螺栓是BaseInfoBolt,另一個是用戶行為數(shù)據(jù)的預(yù)處理,以及對應(yīng)的預(yù)處理螺栓?;A(chǔ)信息構(gòu)造接受類別、行為權(quán)重、商品屬性、用戶屬性四種數(shù)據(jù),存儲在對應(yīng)的表中。預(yù)處理螺栓接受用戶行為數(shù)據(jù),根據(jù)用戶組信息和歷史數(shù)據(jù)完成或過濾用戶行為記錄。
算法處理層
算法處理層是系統(tǒng)的主體部分,分為數(shù)據(jù)統(tǒng)計部分和算法計算部分。數(shù)據(jù)統(tǒng)計包括用戶詳細信息統(tǒng)計、最近訪問商品統(tǒng)計、人群行為數(shù)據(jù)統(tǒng)計、人群商品共現(xiàn)數(shù)據(jù)統(tǒng)計、場景Ctr統(tǒng)計等。
算法計算部分實現(xiàn)了CF、MF、Hot、CB等算法。算法描述如下。
商品信息完成層
商品信息補充層負責完成算法結(jié)果的商品信息。這里的完成是根據(jù)商品信息過濾算法推薦結(jié)果,然后在結(jié)合離線模型或者推薦給用戶的時候推薦給相應(yīng)的用戶。比如根據(jù)離線模型分析的商品價格和用戶財富水平過濾推薦結(jié)果。有些產(chǎn)品是vip免費的,可以推薦給vip用戶,但對于普通用戶應(yīng)該慎重考慮。
存儲層
存儲層是系統(tǒng)的最后一層,負責在tde中存儲推薦結(jié)果。tde是騰訊打造的內(nèi)存k-v存儲。在線推薦用戶時,從tde中取出推薦結(jié)果,結(jié)合離線模型,進一步處理后推薦給用戶。
2.2實現(xiàn)優(yōu)化策略
針對實施過程中遇到的問題和挑戰(zhàn),提出了幾種優(yōu)化策略,以優(yōu)化資源利用,提高效果。
分組計算:在實際計算過程中,我們根據(jù)不同的用戶群體對數(shù)據(jù)進行劃分,并對劃分后的數(shù)據(jù)集進行計算。用戶組可以根據(jù)用戶的年齡、性別等進行劃分。,也可以根據(jù)職業(yè)、活動等其他信息進行劃分。因為不同組中的用戶行為模式可能不同,所以可以通過對劃分的數(shù)據(jù)集進行計算來獲得更準確的用戶行為模式。
滑動窗口:為了保證數(shù)據(jù)模型的實時性,有些情況下需要“忘記”歷史數(shù)據(jù),也就是說只有最新的數(shù)據(jù)用于計算。為此,我們實現(xiàn)了滑動窗口。對于某個時間單位,我們維護了近N個時間窗的數(shù)據(jù)信息,這些時間窗會實時滑動,丟失最遠的數(shù)據(jù),保留最新的實時數(shù)據(jù)信息進行計算。
局部集成:為了有效維護計算數(shù)據(jù),我們使用TDE作為數(shù)據(jù)的外部存儲,計算過程中與TDE的交互已經(jīng)成為不可忽視的計算開銷的一部分。為了減少與TDE的互動,減少資源的使用,我們采用了當?shù)厝诤蠎?zhàn)略。根據(jù)不同的計算特點,我們先在工作人員中整合數(shù)據(jù),然后將本地整合結(jié)果合并到TDE。實踐證明,這種策略有效地減少了與TDE的互動,減少了資源的使用。
多層Hash:在計算過程中,會出現(xiàn)很多工作者需要寫相同的Key-Value值的情況,稱為寫沖突。為了保證TDE的高可用性,我們采用多層哈希策略來解決寫沖突問題,減輕了TDE對數(shù)據(jù)一致性的負擔。通過多層哈希策略,對同一密鑰的寫操作將只發(fā)生在同一工作機上。
實時可擴展的基于項目的CF
[2](基于項目的CF是亞馬遜2003年發(fā)布的推薦算法。由于其推薦效果好,易于實現(xiàn),在行業(yè)內(nèi)得到了廣泛的應(yīng)用。這里我們以基于項目的dCF算法為例說明實時推薦算法[3]的實現(xiàn),其他算法的具體描述可以參考文獻[3]和[4]。
3.1基于項目的原始數(shù)據(jù)格式
基于項目的CF的基本思想是用戶會喜歡和以前喜歡的項目相似的項目。其計算分為相似項計算和用戶偏好預(yù)測兩部分。相似項目計算是整個算法的關(guān)鍵部分,用戶偏好預(yù)測根據(jù)項目的相似度預(yù)測用戶對新項目的評分。
3.2基于實時項目的dCF
在傳統(tǒng)的推薦算法中,用戶的偏好評分是由用戶的評分決定的,但在現(xiàn)實世界中,用戶的評分數(shù)據(jù)較少,大部分數(shù)據(jù)是用戶的行為數(shù)據(jù),如瀏覽、點擊等。這些用戶行為是不確定的。例如,如果用戶單擊某個項目詳細信息頁面并關(guān)閉它,這可能意味著用戶喜歡該項目是因為用戶單擊了詳細信息頁面,也可能意味著用戶不喜歡該項目是因為用戶關(guān)閉了詳細信息頁面。在這種情況下,我們只能從用戶行為數(shù)據(jù)中猜測用戶的偏好。
為了減少因誤解用戶行為數(shù)據(jù)而造成的損失,我們對原有的基于項目的dCF算法進行了改進。具體來說,我們?yōu)槊總€用戶行為類型設(shè)置評分權(quán)重,以衡量不同行為所表達的用戶偏好的可靠性。例如,我們將點擊行為的評分權(quán)重設(shè)置為1分,而將購買行為的評分權(quán)重設(shè)置為3分,因為用戶的購買更有可能表明用戶喜歡該項目,而不是點擊。對于一個項目,用戶可能有許多行為,如點擊、購買、評論等。此時,我們將權(quán)重最高的用戶行為得分作為用戶對該項目的偏好。
我們定義用戶對兩個項目的共同評分,以計算項目的相似性,如下所示:
通過將項目的共同得分設(shè)置為兩個項目中較低的一個,我們將行為誤差估計的損失限制在兩者中較小的值。因此,兩個項目的相似度計算如下:
為了實現(xiàn)流式實時計算和實時更新項目的相似度,我們將上述計算分為三個部分,如下:
其中,,
3.3實時修剪策略
在實際計算過程中,我們發(fā)現(xiàn)由于數(shù)據(jù)量較大,用戶的某種行為會帶來大量需要重新計算的項目。具體來說,我們一般認為用戶在某段時間內(nèi)交互的項目是相互關(guān)聯(lián)的,也就是說可能是相似的。這段時間可能是一天,也可能是一個月,所以用戶行為帶來的項目分值的更新,可能會導(dǎo)致幾十個甚至幾百個項目對的相似度被重新計算,而這些項目可能沒有那么多相似,也就是說,
4總結(jié)
隨著近年來個性化服務(wù)的發(fā)展,推薦系統(tǒng)在實際應(yīng)用中的價值越來越得到認可。大數(shù)據(jù)實時推薦在推薦效果上的優(yōu)異表現(xiàn)及其大發(fā)展空備受關(guān)注。大數(shù)據(jù)實時推薦還有很多值得探索的地方,比如實時矩陣分解、實時LR、實時深度學(xué)習(xí)等在線學(xué)習(xí)算法。
[1]“騰訊實時計算平臺(TRC)系列:首次會議TRC”
[2]林登、史密斯和約克。Amazon.com推薦:逐項協(xié)同過濾?!峨娮踊ヂ?lián)網(wǎng)計算》,7(1):76–80,2003年1月
[3]、黃、、、、。騰訊網(wǎng):實踐中的實時流推薦。[C]//2015年ACM SIGMOD會議紀要。ACM,2015: 227-238
[4]黃,,,,洪,,,謝。實時視頻推薦。SIGMOD 2016年
文章來自www.36dsj.com 36大數(shù)據(jù),微信號大樹巨36,36大數(shù)據(jù)是一個專注于大數(shù)據(jù)創(chuàng)業(yè)、大數(shù)據(jù)技術(shù)與分析、大數(shù)據(jù)業(yè)務(wù)與應(yīng)用的網(wǎng)站。分享大數(shù)據(jù)干貨教程和大數(shù)據(jù)應(yīng)用案例,提供大數(shù)據(jù)分析工具和數(shù)據(jù)下載,解決大數(shù)據(jù)產(chǎn)業(yè)鏈中的創(chuàng)業(yè)、技術(shù)、分析、商務(wù)、應(yīng)用等問題,為大數(shù)據(jù)產(chǎn)業(yè)鏈中的數(shù)據(jù)行業(yè)公司和員工提供支持和服務(wù)。
結(jié)束。
1.《數(shù)據(jù)統(tǒng)計平臺 大數(shù)據(jù)實時推薦-不只是統(tǒng)計》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《數(shù)據(jù)統(tǒng)計平臺 大數(shù)據(jù)實時推薦-不只是統(tǒng)計》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/fangchan/1650524.html