?譯者 | 陳峻
審校 | 孫淑娟
本文在介紹圖形數(shù)據(jù)庫(kù)和推薦系統(tǒng)的基本概念的基礎(chǔ)上,詳細(xì)討論了圖形分解技術(shù)、PageRank算法、以及協(xié)同過(guò)濾等方法,以及如何使用NebulaGraph圖形數(shù)據(jù)庫(kù),去構(gòu)建實(shí)時(shí)推薦系統(tǒng)。
實(shí)時(shí)推薦是當(dāng)今零售行業(yè)非常熱門(mén)的話(huà)題,其目標(biāo)是為了方便用戶(hù)在電商網(wǎng)站上搜索了產(chǎn)品之后,應(yīng)用程序立即為他們提供個(gè)性化的推薦。這是一項(xiàng)具有挑戰(zhàn)性的任務(wù),畢竟用戶(hù)尚未決定要購(gòu)買(mǎi)哪種產(chǎn)品,因此應(yīng)用系統(tǒng)需要深入了解他們的偏好和行為。
為了實(shí)現(xiàn)這一目標(biāo),實(shí)時(shí)推薦系統(tǒng)需要能夠以接近實(shí)時(shí)的速度處理海量數(shù)據(jù)。實(shí)時(shí)系統(tǒng)通常作為電商網(wǎng)站或移動(dòng)應(yīng)用的一部分,可以根據(jù)用戶(hù)當(dāng)前的行為,推薦相關(guān)的產(chǎn)品。例如,一個(gè)正在銷(xiāo)售鞋履的電商網(wǎng)站,可能做到在用戶(hù)查看“男士運(yùn)動(dòng)鞋”頁(yè)面時(shí),恰到好處地向其展示不同款式的鞋子。
而由于圖形技術(shù)具有預(yù)測(cè)用戶(hù)行為,并據(jù)此提出建議的能力,因此它是實(shí)時(shí)推薦的不錯(cuò)選擇。其中,以NebulaGraph為代表的圖形數(shù)據(jù)庫(kù),就提供了一種靈活的數(shù)據(jù)模型,可以被用來(lái)表示實(shí)體之間的各種類(lèi)型關(guān)系。此類(lèi)關(guān)系不僅包括典型的“產(chǎn)品”和“用戶(hù)”之間的關(guān)系,還包括其他對(duì)于應(yīng)用而言非常重要的關(guān)系。例如,您可以使用圖形數(shù)據(jù)庫(kù),來(lái)表示復(fù)雜的用戶(hù)分組(例如“各種朋友”)、以及產(chǎn)品類(lèi)別(例如“各種書(shū)籍”)。只要兩個(gè)實(shí)體之間有邊(edge),就可以使用圖形技術(shù)來(lái)表示。
其實(shí),圖形數(shù)據(jù)庫(kù)比關(guān)系數(shù)據(jù)庫(kù)更善于表示各種類(lèi)型的關(guān)系。例如,如果您有大量具有相似興趣、但屬于不同組的用戶(hù),那么在關(guān)系數(shù)據(jù)庫(kù)中,就需要為每個(gè)組創(chuàng)建一個(gè)單獨(dú)的表,然后在查詢(xún)的時(shí)候,將他們連接到一個(gè)大的數(shù)據(jù)表中。相反,在圖形數(shù)據(jù)庫(kù)中,每個(gè)用戶(hù)可能有多個(gè)邊,以代表他們?cè)诓煌M中的興趣。
一、什么是圖形數(shù)據(jù)庫(kù)?
圖形數(shù)據(jù)庫(kù)不同于大多數(shù)人熟悉的傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。RDBMS是將數(shù)據(jù)存儲(chǔ)在一個(gè)由列和行組成的表中,彼此之間幾乎不存在任何關(guān)系。而圖形數(shù)據(jù)庫(kù)在最初被設(shè)計(jì)的時(shí)候,就側(cè)重于數(shù)據(jù)集之間的關(guān)系。因此,它們具有更強(qiáng)大和更專(zhuān)業(yè)的處理能力。值得注意的是,此處的“圖形”其實(shí)是表示兩個(gè)事物之間關(guān)系的圖表。也就是說(shuō),圖形數(shù)據(jù)庫(kù)就是用來(lái)解釋數(shù)據(jù)之間關(guān)系的數(shù)據(jù)庫(kù)。下圖展示了典型的圖形數(shù)據(jù)庫(kù)—NebulaGraph的復(fù)雜架構(gòu)和設(shè)計(jì)。
為了避免數(shù)據(jù)集彼此之間形成無(wú)用的孤島,圖形數(shù)據(jù)庫(kù)可以將多個(gè)數(shù)據(jù)集之間的點(diǎn)連接起來(lái),揭示它們之間的重要關(guān)系。目前,圖形數(shù)據(jù)庫(kù)已經(jīng)得到了廣泛使用。
二、什么是實(shí)時(shí)推薦系統(tǒng)?
推薦系統(tǒng)主要用于預(yù)測(cè)客戶(hù)的偏好,并為他們提供可能喜歡的產(chǎn)品或服務(wù)。此類(lèi)系統(tǒng)往往被用于包括零售、媒體、娛樂(lè)、旅游、以及公共服務(wù)等各個(gè)行業(yè),通過(guò)為客戶(hù)提供個(gè)性化的建議,來(lái)幫助公司降低成本,并增加收入。例如,Netflix會(huì)使用某種算法,來(lái)根據(jù)您之前看過(guò)的電影,推薦后續(xù)的影片;Amazon也會(huì)使用推薦,來(lái)幫助購(gòu)物者找到他們可能感興趣、甚至?xí)?gòu)買(mǎi)的新產(chǎn)品;Facebook則使用自己的算法,根據(jù)您的興趣喜好,向您展示相關(guān)的廣告信息。
三、為何要使用NebulaGraph進(jìn)行實(shí)時(shí)推薦?
目前,在各種真實(shí)的應(yīng)用環(huán)境中,數(shù)據(jù)挖掘的相關(guān)技術(shù)已能夠給圖形數(shù)據(jù)庫(kù)帶來(lái)大幅的性能提升。而作為一個(gè)高性能的線(xiàn)性可擴(kuò)展類(lèi)圖形數(shù)據(jù)庫(kù),NebulaGraph可以通過(guò)無(wú)共享(shared-nothing)的分布式模型被使用在不同的場(chǎng)景中。其背后的目標(biāo)是釋放那些呈指數(shù)級(jí)增長(zhǎng)的連接數(shù)據(jù)的能力。相對(duì)其他競(jìng)品圖形數(shù)據(jù)庫(kù)而言,NebulaGraph可以安全地處理數(shù)據(jù)集的大小,并在速度上提升約兩倍左右。下圖展示了NebulaGraph的基本工作原理。總的說(shuō)來(lái):
- 它是唯一可以存儲(chǔ)和處理具有數(shù)萬(wàn)億個(gè)關(guān)系連接、以及數(shù)十億個(gè)數(shù)據(jù)點(diǎn)的數(shù)據(jù)庫(kù)
- 它旨在確保和實(shí)現(xiàn)無(wú)中斷的、可擴(kuò)展和恢復(fù)的最佳業(yè)務(wù)連續(xù)性
四、圖形技術(shù)在推薦中的應(yīng)用
推薦系統(tǒng)旨在根據(jù)用戶(hù)的品味和偏好,為他們提供個(gè)性化的推薦。例如,應(yīng)用可以通過(guò)用戶(hù)在電商網(wǎng)站上的購(gòu)物習(xí)慣,來(lái)提取和表示他們?cè)陔娪昂蜁?shū)籍領(lǐng)域的偏好特征。
通常,推薦系統(tǒng)主要有兩大類(lèi):協(xié)同過(guò)濾(Collaborative Filtering,CF)方法和基于模型(model-based)的方法。而為了在不知道用戶(hù)和電影屬性的情況下,預(yù)測(cè)電影的評(píng)分,以KNN為代表的協(xié)同過(guò)濾方法,需要與基于模型的方法相結(jié)合,形成圖形分解(graph factorization)方法,以提高評(píng)分記錄在稀疏時(shí)的預(yù)測(cè)準(zhǔn)確性。
作為一種基于圖形的模型,圖形分解方法可用于表示用戶(hù)偏好,以及用戶(hù)、項(xiàng)目和屬性之間的關(guān)系。其目標(biāo)是從用戶(hù)評(píng)分和推薦中提取潛在特征,以便這些特征可以被用于以無(wú)監(jiān)督的方式,實(shí)現(xiàn)對(duì)用戶(hù)偏好的預(yù)測(cè)。
圖形分解需要通過(guò)將原始數(shù)據(jù)集分解為更小的數(shù)據(jù)集、或集群來(lái)完成。而由于圖形數(shù)據(jù)庫(kù)能夠支持高度連接的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)點(diǎn)之間的關(guān)系,因此圖形分解的過(guò)程往往需要使用圖形數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。目前,圖形分解方法已經(jīng)被廣泛地應(yīng)用于許多在線(xiàn)推薦系統(tǒng)中。
五、如何使用NebulaGraph來(lái)構(gòu)建推薦系統(tǒng)?
下面,我將向您介紹如何使用NebulaGraph之類(lèi)的圖形數(shù)據(jù)庫(kù)來(lái)構(gòu)建推薦系統(tǒng)。
1.定義數(shù)據(jù)模型
我們首先需要為推薦系統(tǒng)定義數(shù)據(jù)模型,以告知系統(tǒng)需要推薦什么類(lèi)型的數(shù)據(jù)。如果想推薦電影的話(huà),那么電影便可被我們作為實(shí)體。然后是定義需要那些與實(shí)體相關(guān)的信息。例如,如果您準(zhǔn)備構(gòu)建一個(gè)書(shū)籍推薦系統(tǒng),那么您就需要知道它屬于什么類(lèi)型、或者是用什么語(yǔ)言編寫(xiě)的。而對(duì)于電影領(lǐng)域,我們只需要獲取名稱(chēng)、發(fā)行年份、類(lèi)別、以及國(guó)家等即可。下圖展示了我們的電影實(shí)體的相關(guān)定義:
2.定義關(guān)系
接下來(lái),我們需要做的是定義電影和用戶(hù)(或人)之間存在什么類(lèi)型的關(guān)系。通常,此類(lèi)關(guān)系有兩種:用戶(hù)喜歡該電影和用戶(hù)看過(guò)該電影(或用戶(hù)沒(méi)有看過(guò)電影)。在本例中,我們將把其簡(jiǎn)化為用戶(hù)喜歡的電影。
假設(shè)有兩個(gè)用戶(hù)James和Kelsey,他們都是科幻電影A的粉絲。那么該電影就屬于科幻題材的類(lèi)別。如果James同時(shí)也喜歡科幻電影B,而Kelsey并沒(méi)有看過(guò),那么我們就并不知道kelsey是否喜歡科幻電影B。
使用上述數(shù)據(jù)圖建模,我們可以很容易地發(fā)現(xiàn)由于James和Kelsey喜歡同樣類(lèi)別的事物,其中就包括了科幻電影B,因此Kelsey也可能會(huì)喜歡科幻電影B。推薦系統(tǒng)則會(huì)向Kelsey推薦科幻電影B。
3.提出建議
我們可以使用各種圖形算法,在圖形數(shù)據(jù)庫(kù)中提出建議。
PageRank算法常被用于對(duì)于搜索結(jié)果中的網(wǎng)頁(yè)進(jìn)行排名。通過(guò)使用該算法,我們可以確定當(dāng)有人搜索Google、或任何其他主流搜索引擎時(shí),應(yīng)首先為其推薦顯示哪些網(wǎng)頁(yè),以及判定哪些網(wǎng)站的受歡迎程度更高。PageRank背后的基本思想是,下一個(gè)將要連接跳轉(zhuǎn)的頁(yè)面,會(huì)比當(dāng)前的頁(yè)面更重要。也就是說(shuō),如果每個(gè)人都被鏈接到某個(gè)相同的鞋類(lèi)購(gòu)買(mǎi)網(wǎng)站的頁(yè)面,那么就意味著系統(tǒng)判斷該頁(yè)面會(huì)比其他網(wǎng)站更重要。而且被鏈接過(guò)來(lái)的人越多,則意味著其獲得的權(quán)重越高。可以說(shuō),一個(gè)網(wǎng)站的受歡迎程度是通過(guò)它指向(和被引用)的鏈接數(shù)量來(lái)衡量的。同理,在看電影方面,一個(gè)人既可以繼續(xù)觀看相似類(lèi)別的電影(即延續(xù)他的興趣愛(ài)好),也可以跳轉(zhuǎn)去看完全不同類(lèi)型的隨機(jī)影片。可見(jiàn),電影流行度的判斷就建立在將給定電影,與其同類(lèi)進(jìn)行數(shù)字哈希的結(jié)果上。
協(xié)同過(guò)濾算法是一種基于用戶(hù)、項(xiàng)目及其連接信息的推薦系統(tǒng)方法。其判斷的前提是:相似的用戶(hù)群往往有著相似的興趣。該方法通過(guò)查看現(xiàn)有用戶(hù)及其臨近用戶(hù)的興趣,來(lái)進(jìn)行推薦。
六、小結(jié)
綜上所述,由于圖形數(shù)據(jù)庫(kù)可以表示推薦系統(tǒng)中用戶(hù)和產(chǎn)品之間的關(guān)系,因此它們可以被用來(lái)構(gòu)建實(shí)時(shí)推薦系統(tǒng)。同時(shí),由于能夠針對(duì)強(qiáng)大的數(shù)據(jù)分析提供支持,圖形數(shù)據(jù)庫(kù)能夠讓推薦系統(tǒng)更加廣泛地分析具有不同偏好的用戶(hù)和產(chǎn)品。
原文鏈接:https://itnext.io/use-cases-of-graph-databases-in-real-time-recommendation-db222a8b2c83
譯者介紹
陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專(zhuān)注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。?