陳明輝,董 晶
(華北計(jì)算技術(shù)研究所 公共安全信息化事業(yè)部 北京 100083)
自適應(yīng)推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
陳明輝,董 晶
(華北計(jì)算技術(shù)研究所 公共安全信息化事業(yè)部 北京 100083)
推薦系統(tǒng)是現(xiàn)代電子商務(wù)中必不可少的系統(tǒng)。由于數(shù)據(jù)和計(jì)算的復(fù)雜度,導(dǎo)致普通應(yīng)用維護(hù)和使用推薦系統(tǒng)變得不容易。文中設(shè)計(jì)和實(shí)現(xiàn)了自適應(yīng)推薦系統(tǒng)平臺(tái)。通過自適應(yīng)推薦系統(tǒng)平臺(tái),用戶可以不需要大量計(jì)算資源而進(jìn)行復(fù)雜而緩慢的推薦系統(tǒng)計(jì)算任務(wù),只需對(duì)每個(gè)推薦任務(wù)進(jìn)行算法和相關(guān)細(xì)節(jié)的定制,就可以實(shí)現(xiàn)推薦模型的訓(xùn)練。文章最后展示了系統(tǒng)的主要界面,并介紹了使用方法。
推薦系統(tǒng);大數(shù)據(jù);自適應(yīng);消息隊(duì)列
互聯(lián)網(wǎng)的出現(xiàn)和普及給用戶帶來了大量的信息,滿足了用戶在信息時(shí)代對(duì)信息的需求,但隨著網(wǎng)絡(luò)的迅速發(fā)展而帶來的網(wǎng)上信息量的大幅增長(zhǎng),使得用戶在面對(duì)大量信息時(shí)無法從中獲得對(duì)自己真正有用的那部分信息,對(duì)信息的使用效率反而降低了,這就是所謂的信息超載(Information Overload)問題[1]。在大數(shù)據(jù)背景下這種情況尤為突出。
目前,針對(duì)信息超載,主流的解決方法是搜索引擎。通過搜索引擎,用戶可以通過輸入查詢字段進(jìn)行相關(guān)資料的搜索。然而,早期的搜索引擎并不能夠根據(jù)不同的用戶返回不同的搜索結(jié)果,有必有引入一種新的解決方案,這就是推薦系統(tǒng)[2]。
推薦系統(tǒng)的起源可以追溯到認(rèn)知科學(xué)和信息檢索等領(lǐng)域的相關(guān)研究,它與管理學(xué)以及市場(chǎng)營(yíng)銷中的用戶行為建模也有密切的關(guān)系。上世紀(jì)九十年代中后期,互聯(lián)網(wǎng)迎來了蓬勃發(fā)展階段,信息和商品的數(shù)量和種類均呈現(xiàn)快速的增長(zhǎng),用戶需要花費(fèi)大量時(shí)間才能找到自己重要的信息或商品。在這樣的背景下,協(xié)同過濾為代表的推薦技術(shù)發(fā)表,并受到學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。推薦系統(tǒng),作為一種信息過濾工具,逐漸成為一個(gè)獨(dú)立的研究分支。
現(xiàn)有的推薦系統(tǒng)都是針對(duì)某一具體問題進(jìn)行實(shí)現(xiàn),而實(shí)際情況中,尤其在大數(shù)據(jù)環(huán)境下,我們需要一種自適應(yīng)平臺(tái)來特定問題進(jìn)行領(lǐng)域建模,以期實(shí)現(xiàn)自適應(yīng)的分析。
1.1 推薦系統(tǒng)數(shù)學(xué)模型
從1995年開始,推薦系統(tǒng)就開始成為了一個(gè)獨(dú)立的研究領(lǐng)域,一般來講,推薦系統(tǒng)的本質(zhì)就是為用戶u推薦感興趣的物品v。推薦算法的主要是根據(jù)用戶的行為和興趣為用戶推薦用戶可能感興趣的物品。數(shù)學(xué)表征如下:
其中, 函數(shù)F用于度量用戶u對(duì)物品v的效用函數(shù)。效用函數(shù)通常用來表示消費(fèi)者在消費(fèi)中所獲得的效用與所消費(fèi)的商品組合之間數(shù)量關(guān)系的函數(shù),以衡量消費(fèi)者從消費(fèi)既定的商品組合中所獲得滿足的程度。目標(biāo)函數(shù)即為滿足最大化用戶效用的物品推薦。因此推薦系統(tǒng)本質(zhì)是一個(gè)最優(yōu)化問題模型,問題的關(guān)鍵就在于如何求解這個(gè)最優(yōu)值。
1.2 推薦系統(tǒng)應(yīng)用分類
依據(jù)應(yīng)用場(chǎng)景的不同,推薦系統(tǒng)主要分為以下幾類:
1)視頻推薦。視頻推薦最早最成熟的莫過于Netflix,在推薦系統(tǒng)領(lǐng)域,同Amazon是最有代表性的兩家公司。Netflix在相關(guān)資料中聲稱,有60%的用戶是通過推薦系同獲發(fā)現(xiàn)新興趣。其他如Hulu,youtube,優(yōu)酷,愛奇藝,都有相應(yīng)的推薦系統(tǒng)進(jìn)行視頻推薦。
2)音樂推薦。音樂推薦最典型的比如網(wǎng)易云音樂和豆瓣音樂。其中豆瓣音樂不允許用戶點(diǎn)歌,而是通過用戶的反饋喜歡,不喜歡或者跳過來訓(xùn)練用戶的興趣模型。網(wǎng)易云音樂在提供在線音樂搜索和電臺(tái)服務(wù)。
3)社交網(wǎng)絡(luò)推薦。社交網(wǎng)絡(luò)國(guó)內(nèi)以微信,微博最熱。國(guó)外則是FaceBook和twitter。在社交網(wǎng)絡(luò)中,用戶可以發(fā)揮社群優(yōu)勢(shì),推薦和分享好多有用的知識(shí)和物品。社交網(wǎng)絡(luò)中的推薦系統(tǒng)主要包括好友推薦,物品推薦和群組推薦。
4)閱讀推薦。已經(jīng)下線的Google Reader作為早期一款流行的社會(huì)化閱讀工具。它允許用戶閱讀關(guān)注用戶分享的文章。 現(xiàn)在最流行的雜志推薦系統(tǒng)Flipboard, 其前身是Zite,同為流行的閱讀推薦工具。它可以將Facebook或者微博上流行的內(nèi)容整合起來以雜志的形式提供給用戶閱讀。
5)基于位置的推薦?;谖恢玫耐扑]通常見于基于地圖的應(yīng)用上,如大眾點(diǎn)評(píng),美團(tuán),餓了么外賣和百度地圖的附近搜索。隨著移動(dòng)設(shè)備的飛速發(fā)展,位置信息作為一種隱形公開的數(shù)據(jù)很容易被App后臺(tái)獲取,位置作為一種很有效的上下文信息,可以基于位置為用戶提供感興趣的餐飲,娛樂等服務(wù),引導(dǎo)用戶消費(fèi)。
6)個(gè)性化郵件。通常,個(gè)人每天都收到很多郵件,其中部分郵件對(duì)我們來說非常重要,有些不太重要和一些垃圾郵件。垃圾郵件可以通過垃圾郵件過濾器刪除,這是一個(gè)專門的研究領(lǐng)域,這里不討論。但在普通郵件中,如果你能發(fā)現(xiàn)消息的用戶重要,允許用戶瀏覽,毫無疑問會(huì)大大提高用戶的生產(chǎn)力。
1.3 推薦算法分類
大部分的推薦算法其工作原理還是基于物品或用戶的相似性進(jìn)行推薦,大致上可以分為如下幾種:基于人口統(tǒng)計(jì)學(xué)的推薦(Demographic-based Recommendation)[3],基于內(nèi)容的推薦(Content-Based Recommendation)[4],以及基于協(xié)同過濾的推薦(Collaborative Filtering-Based Recommendation),以及混合型推薦(Hybrid Recommendation)[5]基于協(xié)同過濾的推薦被研究人員研究的最多也最為深入,它又可以被分為多個(gè)子類別,分別是基于用戶的推薦(User-Based Recommendation),基于物品的推薦(Item-Based Recommendation),基于社交網(wǎng)絡(luò)關(guān)系的推薦(Social-Based Recommendation),基于模型的推薦(Model-based Recommendation)[6]等。
2.1 需求分析
自適應(yīng)推薦系統(tǒng)相對(duì)于傳統(tǒng)推薦系統(tǒng)的額外需求如下:
1)自適應(yīng)。針對(duì)不同的應(yīng)用場(chǎng)景和業(yè)務(wù)需求,用戶只需要定義好輸入?yún)?shù),格式,方法以及輸出參數(shù),格式,方法,系統(tǒng)就能夠自動(dòng)進(jìn)行推薦系統(tǒng)模型的訓(xùn)練,而不需要用戶介入。
2)可配置。對(duì)于同一個(gè)推薦算法模型,用戶可以配置不同的輸入?yún)?shù)來進(jìn)行模型訓(xùn)練。
3)時(shí)效性。在線推薦中需要處理各種實(shí)時(shí)用戶日志,比如用戶的瀏覽記錄,點(diǎn)擊記錄等,這些對(duì)數(shù)據(jù)的實(shí)時(shí)處理要求比較高。自適應(yīng)推薦系統(tǒng)需要能夠綁定特殊的數(shù)據(jù)源,并且能夠進(jìn)行實(shí)時(shí)計(jì)算。
4)智能。系統(tǒng)自身能夠預(yù)留,動(dòng)態(tài)分配,實(shí)時(shí)釋放系統(tǒng)資源。大數(shù)據(jù)環(huán)境中的資源雖然數(shù)目非常多,但是針對(duì)不同的計(jì)算需求,系統(tǒng)會(huì)需要不同的計(jì)算資源。比如計(jì)算密集型任務(wù)對(duì)CPU數(shù)目和速度要求比較多。而數(shù)據(jù)密集型則對(duì)內(nèi)存要求比較高。因此,自適應(yīng)推薦系統(tǒng)必須首先智能化的提供資源分配的功能,這樣才能體現(xiàn)出自適應(yīng)推薦系統(tǒng)的巨大潛力。
5)自治。自適應(yīng)推薦系統(tǒng)能夠?qū)ψ约嘿Y源作有效的評(píng)估,選擇可以接受的作業(yè)運(yùn)行。一個(gè)計(jì)算機(jī)由于自身?xiàng)l件限制,并不能執(zhí)行用戶提供的所有任務(wù),因此,每個(gè)計(jì)算機(jī)都需要有自治功能,一方面,能對(duì)自身情況作有效評(píng)估,另一方面,當(dāng)系統(tǒng)有故障時(shí),能夠通知中央管理器,對(duì)作業(yè)進(jìn)行遷移。
6)重設(shè)計(jì)而不重開發(fā)。針對(duì)開發(fā)者,能夠分離算法層和程序代碼層,無疑對(duì)對(duì)程序運(yùn)行了解很少的科研工作者很有幫助。作為信息網(wǎng)格的主要客戶群體—科研工作者,需要一個(gè)算法描述平臺(tái)來大量,高性能的處理自己的計(jì)算需求,成為一個(gè)必然的趨勢(shì)。
7)可擴(kuò)展。不僅僅針對(duì)推薦系統(tǒng)一個(gè)層面的應(yīng)用,自適應(yīng)推薦系統(tǒng)也可以存儲(chǔ)其他的算法,如傳統(tǒng)的統(tǒng)計(jì)算法,機(jī)器學(xué)習(xí)算法等。這樣使用的對(duì)象和作用域都可以擴(kuò)展。
8)高吞吐。自適應(yīng)推薦系統(tǒng)中,由于同時(shí)要進(jìn)行多個(gè)推薦模型任務(wù)的數(shù)據(jù)記錄以及模型計(jì)算,因此,高吞吐量是自適應(yīng)推薦系統(tǒng)設(shè)計(jì)的核心。整個(gè)系統(tǒng)的設(shè)計(jì)必須圍繞高吞吐,高并發(fā)為核心展開。
9)模塊化。從功能上講,自適應(yīng)推薦系統(tǒng)已經(jīng)涉及到現(xiàn)在最新的數(shù)據(jù)存儲(chǔ)核處理技術(shù),因此整個(gè)系統(tǒng)的結(jié)構(gòu)是復(fù)雜的。模塊化作為一種通過將系統(tǒng)切分為更小的,獨(dú)立的子系統(tǒng)的軟件設(shè)計(jì)方法。這種方法要求模塊之間相互獨(dú)立,通過清晰的接口定義來進(jìn)行模塊之間的交流。
2.2 分層設(shè)計(jì)
針對(duì)上述自適應(yīng)推薦系統(tǒng)的需求,設(shè)計(jì)出一個(gè)可拓展的自適應(yīng)系統(tǒng)。該系統(tǒng)主要用戶接入層,轉(zhuǎn)換層,平臺(tái)層和并行計(jì)算底層構(gòu)成。如下圖1所示:
用戶接入層中,終端用戶通過訪問web界面進(jìn)行自己的相關(guān)信息管理,包括以下幾個(gè)部分:
1)用戶管理。該模塊用于管理用戶信息。對(duì)于管理員,擁有對(duì)所有用戶的管理功能。
2)權(quán)限管理。管理使用權(quán)限。這些權(quán)限包括CPU數(shù)目,算法類型,作業(yè)時(shí)長(zhǎng),指令集要求,底層約束等。
3)數(shù)據(jù)管理。管理用戶自己的打包數(shù)據(jù)。包括提交離線數(shù)據(jù)集,綁定數(shù)據(jù)接收接口,數(shù)據(jù)獲取接口等方式。同時(shí),這些數(shù)據(jù)還包括用戶提交的算法描述文件并行度,
4)作業(yè)輸出格式等。對(duì)于用戶,系統(tǒng)還提供了統(tǒng)一的推薦系統(tǒng)接口來進(jìn)行數(shù)據(jù)獲取。
5)作業(yè)管理。管理用戶的歷史,當(dāng)前運(yùn)行,故障等作業(yè)。
對(duì)于轉(zhuǎn)換層,有以下部分組成:
1)數(shù)據(jù)切分模塊。該模塊負(fù)責(zé)對(duì)用戶提出的數(shù)據(jù)切分算法,對(duì)數(shù)據(jù)進(jìn)行有效,安全的切分。很容易想到,大部分的并行執(zhí)行算法都是從分割任務(wù)和數(shù)據(jù)開始。
3)資源描述模塊。該模塊是對(duì)現(xiàn)有資源的描述分配模塊,客戶執(zhí)行一個(gè)作業(yè)時(shí),必須有一個(gè)作業(yè)環(huán)境描述,這樣方便底層的資源進(jìn)行有效的分配。
4)沙盒模塊。該模塊是可執(zhí)行文件(.class)與平臺(tái)曾的交互環(huán)境,這個(gè)環(huán)境中封裝了作業(yè)處理細(xì)節(jié),最終回顯計(jì)算信息到輸出文本。
5)監(jiān)控模塊。對(duì)于整個(gè)系統(tǒng),提供系統(tǒng)監(jiān)控模塊進(jìn)行統(tǒng)一的監(jiān)控和異?;謴?fù)。
6)日志模塊。日志模塊是自適應(yīng)推薦系統(tǒng)各個(gè)操作的記錄器,記錄詳細(xì)的操作日志。
3.1 模塊間通信
模塊間通信是實(shí)現(xiàn)各個(gè)模塊之間有序組織,高效配合的辦法。通常,各個(gè)模塊之間需要通信來滿足模塊之間的交互需求。傳統(tǒng)的模塊間通信包括客戶機(jī)服務(wù)器,分布式計(jì)算,對(duì)等系統(tǒng),面向服務(wù)(SOA),微服務(wù),消息隊(duì)列等方法。在自適應(yīng)推薦系統(tǒng)中模塊間通信使用面向服務(wù)的軟件架構(gòu)用于模塊間的信息通信。在自適應(yīng)推薦系統(tǒng)中,使用SOA作為模塊間通信的方法。
3.2 訓(xùn)練集數(shù)據(jù)綁定
自適應(yīng)推薦系統(tǒng)中,需要綁定用戶提供數(shù)據(jù)的接口。系統(tǒng)使用消息隊(duì)列作為訓(xùn)練數(shù)據(jù)接收的中間件。系統(tǒng)中使用JMS標(biāo)準(zhǔn)的消息隊(duì)列客戶端作為數(shù)據(jù)接收工具。要求用戶提供的數(shù)據(jù)必須通過消息隊(duì)列發(fā)送至系統(tǒng)。以ActiveMQ為例,用戶創(chuàng)建生產(chǎn)者(Producer),創(chuàng)建主題并向主題發(fā)送數(shù)據(jù);客戶端綁定消息隊(duì)列協(xié)議,并且訂閱(Subscribe)對(duì)應(yīng)的主題(Topic),這樣用戶數(shù)據(jù)就可以被自適應(yīng)推薦系統(tǒng)接收。
測(cè)點(diǎn)分別布置在板簧、車架、駕駛室懸置、駕駛室地面(腳墊)和座椅支撐面(座墊)等位置處(見圖4).在每個(gè)工況下分別進(jìn)行兩次測(cè)試,以確保測(cè)試后獲得的信號(hào)正常有效,其試驗(yàn)場(chǎng)地如圖5所示.
3.3 客戶數(shù)據(jù)存儲(chǔ)
圖1 自適應(yīng)推薦的系統(tǒng)架構(gòu)
客戶數(shù)據(jù)存儲(chǔ)分為關(guān)系型數(shù)據(jù)存儲(chǔ)和非關(guān)系型數(shù)據(jù)存儲(chǔ)。自適應(yīng)推薦系統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)主要包括平臺(tái)接入模塊的數(shù)據(jù)模型,包括用戶數(shù)據(jù)模型,資源數(shù)據(jù)模型,數(shù)據(jù)管理模型,任務(wù)數(shù)據(jù)模型,資源數(shù)據(jù)模型,常見操作數(shù)據(jù)模型,算法數(shù)據(jù)模型,數(shù)據(jù)協(xié)議模型,數(shù)據(jù)獲取方式數(shù)據(jù)模型等。對(duì)于結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),自適應(yīng)推薦系統(tǒng)采用Mysql作為存儲(chǔ)方案。而對(duì)于結(jié)構(gòu)不定的非結(jié)構(gòu)化數(shù)據(jù),如用戶消息,日志,用戶數(shù)據(jù)等,則使用非關(guān)系型數(shù)據(jù)庫MongoDB來存儲(chǔ)。對(duì)于用戶上傳的離線數(shù)據(jù)包,則使用HDFS進(jìn)行存儲(chǔ)。
3.4 模型訓(xùn)練
自適應(yīng)推薦系統(tǒng)使用Hadoop作為基礎(chǔ)分布式計(jì)算平臺(tái),以Mahout為推薦系統(tǒng)Map-Reduce計(jì)算引擎,對(duì)推薦系統(tǒng)模型進(jìn)行并行訓(xùn)練。
自適應(yīng)推薦系統(tǒng)的實(shí)現(xiàn)可以通過以下幾個(gè)功能點(diǎn)分別進(jìn)行展示:
1)首頁。首頁主要展示系統(tǒng)的相關(guān)信息,如圖2所示。
2)登陸/注冊(cè)界面。登陸注冊(cè)界面提供用戶登錄和注冊(cè)功能,如圖3所示。
3)系統(tǒng)管理界面。系統(tǒng)管理界面是用戶成功登陸之后展現(xiàn)給用戶的后臺(tái),如圖4示。
4)任務(wù)管理界面。如圖5示。
5)添加任務(wù)。如圖6所示。
6)任務(wù)查看。如圖7所示。
7)系統(tǒng)使用
通過查看任務(wù)界面,可以看到任務(wù)的進(jìn)行狀態(tài),如果當(dāng)前狀態(tài)為已完成。則使用系統(tǒng)中自動(dòng)生成的restful調(diào)用接口,使用HttpClient進(jìn)行請(qǐng)求獲取推薦結(jié)果。
圖2 首頁
圖3 登陸/注冊(cè)界面
圖4 系統(tǒng)管理界面
圖5 任務(wù)管理界面
圖6 添加任務(wù)
本文對(duì)自適應(yīng)推薦系統(tǒng)進(jìn)行了需求分析,系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)。本文對(duì)現(xiàn)有的推薦算法進(jìn)行分類和概要描述,對(duì)系統(tǒng)進(jìn)行了詳細(xì)設(shè)計(jì)。文中對(duì)數(shù)據(jù)的存儲(chǔ),訓(xùn)練集數(shù)據(jù)綁定,模塊間通信以及模型訓(xùn)練作簡(jiǎn)要描述。但是自適應(yīng)推薦系統(tǒng)需要用戶自己選擇模型訓(xùn)練的方法和相似度計(jì)算方法,使得整個(gè)模型訓(xùn)練不具有完全的智能化。如何設(shè)計(jì)自適應(yīng)推薦算法,如何能夠通過評(píng)測(cè)集,系統(tǒng)自動(dòng)訓(xùn)練出用戶評(píng)價(jià)最好的推薦模型需要進(jìn)一步研究。
圖7 任務(wù)查看
[1] BAWDEN D, HOLTHAM C, COURTNEY N. Perspectives on information overload[J]. Aslib Proceedings, 1999, 51(8): 249-255
[2] 李善濤, 肖波. 基于社交網(wǎng)絡(luò)的信息推薦系統(tǒng)[J]. 軟件, 2013, 12(5): 41-42.
[3] Ken Goldberg, Theresa Roeder, Dhruv Gupta, Chris Perkins. Eigentaste: A Constant Time Collaborative Filtering Algorithm[J]. Information Retrieval. 2001(2): 34-36.
[4] 王春才, 邢暉, 李英韜. 推薦系統(tǒng)的推薦解釋研究[J]. 現(xiàn)代計(jì)算機(jī)(專業(yè)版). 2016(02): 41-42.
[5] 許海玲, 吳瀟, 李曉東, 閻保平. 互聯(lián)網(wǎng)推薦系統(tǒng)比較研究[J]. 軟件學(xué)報(bào). 2009(02): 351-353.
[6] 陳雅茜. 系統(tǒng)及相關(guān)技術(shù)研究[J]. 計(jì)算機(jī)工程與應(yīng)用. 2012(18): 9-12.
Design and Implementation of Adaptive Recommendation System
CHEN Ming-hui, DONG Jing
(Public Security Information Division, North China Institute of Computing Technology, Beijing 100083, China)
The Recommendation system is now essential in e-commerce system. Due to the complexities of data and computation, it is not easy to maintain and use recommended systems for general applications. In this paper, an adaptive recommendation system platform is designed and implemented. Through the recommendation system platform, the user can perform complex and slow recommendation system calculation tasks without large amount of computing resources. At the end of this paper, the main interface of the system is presented and introduced.
Recommendation system; Big data; Adaptive system; Message queue
TP311
A
10.3969/j.issn.1003-6970.2016.12.036
陳明輝(1992-),男,碩士研究生,主要研究方向:數(shù)據(jù)處理與分析;董晶,女,研究員級(jí)高級(jí)工程師,主要研究方向:信息系統(tǒng)頂層設(shè)計(jì)、信息集成。
本文著錄格式:陳明輝,董晶. 自適應(yīng)推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件,2016,37(12):169-175