• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于IRGAN模型和Hadoop的電影推薦系統(tǒng)的設(shè)計(jì)

      2019-05-16 08:22:12趙桂升潘善亮
      關(guān)鍵詞:離線節(jié)點(diǎn)模塊

      趙桂升 潘善亮

      (寧波大學(xué)信息科學(xué)與工程學(xué)院 浙江 寧波 315211)

      0 引 言

      隨著網(wǎng)絡(luò)的迅速發(fā)展,互聯(lián)網(wǎng)上的各類資源都呈現(xiàn)出爆炸式的增長(zhǎng)趨勢(shì),而信息量的劇增也導(dǎo)致了“信息過(guò)載”問(wèn)題。針對(duì)此問(wèn)題,一個(gè)有效的解決方法就是推薦系統(tǒng)。經(jīng)過(guò)學(xué)術(shù)界和工業(yè)界多年的探索和研究,推薦算法的發(fā)展也是經(jīng)歷了從傳統(tǒng)的協(xié)同過(guò)濾算法[1-2]到如今的結(jié)合深度學(xué)習(xí)技術(shù)的推薦算法的歷程,例如目前YouTube的視頻推薦、Google Play的App推薦以及Yahoo News的新聞推薦等[3-5],都取得了不錯(cuò)的效果。

      根據(jù)中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心2018年7月發(fā)布的第42次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》[6]顯示,截止2018年6月,我國(guó)網(wǎng)民規(guī)模達(dá)8.02億,其中網(wǎng)絡(luò)視頻用戶規(guī)模達(dá)6.09億,占網(wǎng)民總體的76%。由上述報(bào)告可知,國(guó)內(nèi)各類視頻資源數(shù)量增長(zhǎng)迅速,尤其是電影資源,而且視頻用戶的數(shù)量呈現(xiàn)逐年增長(zhǎng)態(tài)勢(shì)。針對(duì)目前國(guó)內(nèi)視頻和用戶快速發(fā)展的趨勢(shì),鑒于目前一些電影推薦系統(tǒng)研究[7-9]中存在的數(shù)據(jù)利用率低、系統(tǒng)壓力大、實(shí)時(shí)性差等弊端,本文系統(tǒng)決定采用深度學(xué)習(xí)中的IRGAN模型[10]作為主要的推薦算法,設(shè)計(jì)實(shí)現(xiàn)了基于IRGAN算法模型的離線推薦模塊和基于在線用戶行為數(shù)據(jù)收集處理的在線推薦模塊。采用二者聯(lián)合推薦的方式,并針對(duì)未來(lái)可能存在的海量電影數(shù)據(jù)和用戶的產(chǎn)生,以及模型本身存在的大量計(jì)算,借助大數(shù)據(jù)處理框架Hadoop、Spark和kafka等技術(shù)進(jìn)行處理,保證系統(tǒng)的實(shí)時(shí)性、高效性和穩(wěn)定性。

      1 系統(tǒng)設(shè)計(jì)

      1.1 系統(tǒng)架構(gòu)設(shè)計(jì)

      針對(duì)上述問(wèn)題,并且為了提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性,本文系統(tǒng)采用平臺(tái)化結(jié)構(gòu)設(shè)計(jì)。通過(guò)分層設(shè)計(jì),使得系統(tǒng)整體邏輯更加清晰,降低了層與層之間的耦合度,具體的系統(tǒng)總體架構(gòu)設(shè)計(jì)如圖1所示。

      圖1 系統(tǒng)總體架構(gòu)設(shè)計(jì)圖

      由圖1可知,系統(tǒng)分為數(shù)據(jù)層、算法層、業(yè)務(wù)層、表現(xiàn)層和用戶層五個(gè)層次,最右側(cè)為各層次的主要技術(shù)選型,各層次詳細(xì)內(nèi)容具體如下:

      (1) 用戶層:針對(duì)不同的用戶,根據(jù)用戶的權(quán)限進(jìn)行不同的功能展示,主要分為游客、普通用戶和管理員,用戶可以通過(guò)瀏覽器訪問(wèn)表現(xiàn)層來(lái)進(jìn)行交互。

      (2) 表現(xiàn)層:主要是電影推薦系統(tǒng)的界面設(shè)計(jì),通過(guò)良好的布局和圖表等形式,合理地呈現(xiàn)數(shù)據(jù)資源,與用戶友好地進(jìn)行交互。

      (3) 業(yè)務(wù)層:主要是具體的模塊功能邏輯的實(shí)現(xiàn),主要包括用戶管理、電影管理、電影推薦、歷史記錄等功能。

      (4) 算法層:主要是依托大數(shù)據(jù)處理框架,采用在線推薦和離線推薦相結(jié)合的形式,最終進(jìn)行聯(lián)合推薦。對(duì)于離線推薦模塊,根據(jù)數(shù)據(jù)層提供的歷史數(shù)據(jù),采用IRGAN模型對(duì)于每一個(gè)用戶的歷史評(píng)分?jǐn)?shù)據(jù)進(jìn)行計(jì)算,并存儲(chǔ)到HDFS中去;對(duì)于在線推薦模塊,通過(guò)結(jié)合Flume和kafka得到的實(shí)時(shí)的用戶行為數(shù)據(jù),根據(jù)不同的權(quán)重分配,對(duì)于離線推薦模塊生成的推薦列表進(jìn)行重新計(jì)算,然后將結(jié)果保存到HDFS中,實(shí)現(xiàn)電影推薦功能。

      (5) 數(shù)據(jù)層:該層主要是包含了HDFS和MySQL數(shù)據(jù)庫(kù),為業(yè)務(wù)層和算法層提供相應(yīng)的數(shù)據(jù)支持。

      1.2 系統(tǒng)功能設(shè)計(jì)

      系統(tǒng)的功能模塊設(shè)計(jì)主要是通過(guò)對(duì)業(yè)務(wù)層的需求分析,將其需求劃分成不同的功能模塊,模塊間功能相互獨(dú)立,降低耦合度,便于后續(xù)功能的維護(hù)和擴(kuò)展。其具體的功能模塊結(jié)構(gòu)如圖2所示。

      圖2 系統(tǒng)功能模塊結(jié)構(gòu)圖

      1.2.1用戶管理模塊

      系統(tǒng)主要涉及游客、普通用戶和管理員三種角色,用戶管理模塊也是根據(jù)不同的角色劃分而制定的。通過(guò)對(duì)角色的分級(jí)管理,賦予不同的角色不同的操作權(quán)限。其中,管理員擁有最高權(quán)限,主要負(fù)責(zé)管理所有的用戶和電影信息,可以隨時(shí)更新電影資訊,維護(hù)用戶權(quán)限列表;普通用戶主要是系統(tǒng)的注冊(cè)用戶,可以維護(hù)自己的相關(guān)信息,收藏自己喜愛(ài)的電影,查閱相關(guān)電影資訊,為自己喜愛(ài)的電影進(jìn)行評(píng)分、點(diǎn)贊等,并且可以獲取系統(tǒng)專門(mén)為用戶推薦的電影列表;游客只能登錄查看電影資訊,查看目前的熱門(mén)電影排行榜等一系列榜單,不會(huì)專門(mén)對(duì)游客進(jìn)行推薦電影。

      1.2.2電影管理模塊

      系統(tǒng)的電影管理模塊主要使用者是管理員和普通用戶。對(duì)于管理員,可以通過(guò)電影管理模塊管理數(shù)據(jù)庫(kù)中的所有電影,隨時(shí)添加近期的最新電影,維護(hù)電影資源庫(kù)和用戶信息庫(kù);對(duì)于普通用戶,可以通過(guò)電影管理模塊收藏自己喜愛(ài)的電影,為自己喜愛(ài)的電影進(jìn)行評(píng)分操作,管理和維護(hù)自己收藏的電影庫(kù),但是不能對(duì)電影進(jìn)行數(shù)據(jù)庫(kù)層面的增刪改操作。

      1.2.3電影推薦模塊

      系統(tǒng)的電影推薦是針對(duì)普通用戶而言的,其主要是依靠系統(tǒng)架構(gòu)中的算法層進(jìn)行實(shí)現(xiàn)的。由于用戶量過(guò)大和電影資源的不斷增加,依托大數(shù)據(jù)處理框架Hadoop的相關(guān)工具,基于IRGAN的深度學(xué)習(xí)模型,對(duì)于數(shù)據(jù)庫(kù)中的用戶數(shù)據(jù)進(jìn)行離線計(jì)算操作,得出每一個(gè)用戶的推薦列表,保存在分布式數(shù)據(jù)庫(kù)HDFS中。另外,根據(jù)Flume和kafka得到實(shí)時(shí)用戶行為數(shù)據(jù),根據(jù)各項(xiàng)行為和離線數(shù)據(jù)處理得到推薦表的權(quán)重分配,重新計(jì)算權(quán)重并重新排序,將新的推薦列表保存到分布式數(shù)據(jù)庫(kù)HDFS中去,作為最終的推薦結(jié)果。

      1.2.4歷史記錄模塊

      歷史記錄模塊主要是記錄用戶在系統(tǒng)中的各項(xiàng)行為操作,相當(dāng)于事務(wù)日記的作用,主要是提供給用戶,方便查看自己的歷史操作記錄。

      2 算法層詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)

      2.1 算法層總體架構(gòu)設(shè)計(jì)

      推薦系統(tǒng)中,推薦算法層的設(shè)計(jì)是核心要點(diǎn)之一。在本系統(tǒng)中,主要依托大數(shù)據(jù)處理框架Hadoop,設(shè)計(jì)了對(duì)原有數(shù)據(jù)庫(kù)中的歷史評(píng)分?jǐn)?shù)據(jù)進(jìn)行處理的離線推薦模塊和對(duì)于用戶實(shí)時(shí)行為數(shù)據(jù)收集的在線推薦模塊相結(jié)合的架構(gòu),進(jìn)行聯(lián)合推薦,具體的算法層架構(gòu)設(shè)計(jì)如圖3所示。

      圖3 算法層總體架構(gòu)設(shè)計(jì)圖

      2.2 離線推薦模塊設(shè)計(jì)實(shí)現(xiàn)

      2.2.1IRGAN算法設(shè)計(jì)

      IRGAN是2017年Wang等提出來(lái)的,主要是將信息檢索領(lǐng)域中長(zhǎng)期存在的兩種思維流派的思想結(jié)合GAN網(wǎng)絡(luò)模型進(jìn)行了統(tǒng)一,也是首次將GAN網(wǎng)絡(luò)模型引入到了推薦系統(tǒng)領(lǐng)域的研究當(dāng)中。其算法的主要結(jié)構(gòu)如圖4所示。

      圖4 IRGAN算法模型結(jié)構(gòu)圖

      假設(shè)有一組查詢q={q1,q2,…,qn}和一組文件d={d1,d2,…,dn},其中查詢qn為用戶的查詢關(guān)鍵字或者主要特征等,文件d為與查詢qn具有相關(guān)性或者無(wú)關(guān)性的一組文件。對(duì)于任意一個(gè)查詢qn,都有一組特定數(shù)目的文件d與之相關(guān)。設(shè)條件概率ptrue(dqn,r)用來(lái)描繪文件d在查詢qn和相關(guān)性r的基礎(chǔ)上的真實(shí)相關(guān)分布,根據(jù)原始的GAN網(wǎng)絡(luò)模型的基本原理,分別建立生成檢索模型和判別檢索模型如下:

      (1) 生成檢索模型:pθ(dq,r),通過(guò)給定的查詢q,生成與查詢q具有相關(guān)性的一組文件d,實(shí)際上是想讓生成檢索模型生成的相關(guān)性文檔d的概率分布盡可能多地接近真實(shí)的相關(guān)性文檔分布ptrue(dq,r)。

      (2) 判別檢索模型:fφ(q,d) ,主要是從每個(gè)(q,d)元組中區(qū)分出哪個(gè)是具有相關(guān)性的元組,根據(jù)與查詢q的相關(guān)性,區(qū)分出相關(guān)文件和不相關(guān)文件,實(shí)際上也就是一個(gè)二進(jìn)制分類器,設(shè)匹配的(q,d)元組的標(biāo)簽為1,不匹配的(q,d)元組的標(biāo)簽為0。

      基于GAN思想,在上述兩個(gè)檢索模型之間形成一種極小極大的關(guān)系,利用生成檢索模型根據(jù)pθ(dqn,r)的分布概率來(lái)生成一組相關(guān)文檔d,然后將生成的相關(guān)文檔d交給判別檢索模型進(jìn)行判定。而判別檢索模型會(huì)試圖尋找一個(gè)界限來(lái)區(qū)分生成檢索模型生成的一組相關(guān)文檔d和相關(guān)性文檔分布ptrue(dq,r)生成的一組相關(guān)文檔d。由此可以得到公式:

      (1)

      式中:pθ(dqn,r)是生成檢索模型的相關(guān)性分布,可以通過(guò)sigmoid函數(shù)來(lái)給出:

      pθ(dq,r)=softmax(gθ(q,d))=

      (2)

      D(dqn)是判別檢索模型的區(qū)分(q,d)相關(guān)性的估計(jì)概率,可以通過(guò)sigmoid函數(shù)來(lái)給出判別檢索模型的公式:

      (3)

      兩個(gè)模型相互迭代學(xué)習(xí),分別對(duì)式(1)進(jìn)行博弈訓(xùn)練優(yōu)化。

      2.2.2離線推薦具體設(shè)計(jì)實(shí)現(xiàn)

      離線推薦模塊的設(shè)計(jì)主要是根據(jù)數(shù)據(jù)庫(kù)中存在的用戶在過(guò)去一段時(shí)間中對(duì)各類電影的評(píng)分?jǐn)?shù)據(jù),通過(guò)算法計(jì)算,得出一份推薦列表。根據(jù)之前考慮到的電影市場(chǎng)中用戶和電影資源的數(shù)量急劇擴(kuò)大,首先會(huì)對(duì)大量的數(shù)據(jù)依托Hadoop框架進(jìn)行Hadoop分布式集群的配置,這樣既可以保證數(shù)據(jù)的分塊分布式存儲(chǔ),又可以保證了數(shù)據(jù)的多重備份,防止某臺(tái)服務(wù)器的宕機(jī)導(dǎo)致數(shù)據(jù)的丟失。具體配置參照表1。

      表1 Hadoop分布式服務(wù)器配置表

      表1中有一個(gè)Master和三個(gè)Slave,其中Master除了作為主服務(wù)器外,還同時(shí)作為NameNode節(jié)點(diǎn)。用戶可以通過(guò)訪問(wèn)Master節(jié)點(diǎn),由Master節(jié)點(diǎn)自動(dòng)將對(duì)應(yīng)任務(wù)的操作發(fā)送到各個(gè)Slave節(jié)點(diǎn)中去,等Slave節(jié)點(diǎn)執(zhí)行完畢后,結(jié)果會(huì)返回到Master節(jié)點(diǎn)中,經(jīng)過(guò)Master節(jié)點(diǎn)整理后,最終返回給用戶。

      在解決了數(shù)據(jù)的分布式存儲(chǔ)后,考慮到對(duì)于深度學(xué)習(xí)算法模型的運(yùn)算工作量大、運(yùn)算效率較低等特點(diǎn),并結(jié)合了以下優(yōu)點(diǎn)后,選擇了Spark組件來(lái)對(duì)IRGAN算法模型進(jìn)行分布式計(jì)算:

      (1) Spark是基于內(nèi)存計(jì)算的大型內(nèi)存分布式計(jì)算組件,基于MapReduce的思想,所有的迭代計(jì)算放在內(nèi)存中運(yùn)行,比Hadoop的MapReduce執(zhí)行速度快上百倍。

      (2) 非常友好地支持了Java、Python等多種語(yǔ)言,對(duì)于實(shí)時(shí)計(jì)算和離線批處理等功能的可拓展性強(qiáng),容易和現(xiàn)有的Hadoop生態(tài)圈結(jié)合。

      (3) 由于IRGAN算法模型是基于Tensorflow平臺(tái)進(jìn)行編碼的,Spark提供了分布式大規(guī)模運(yùn)算的算法包PySpark。

      為了不破壞基于J2ee設(shè)計(jì)的推薦系統(tǒng)的結(jié)構(gòu),對(duì)于IRGAN算法采用了Java動(dòng)態(tài)傳參調(diào)用Python腳本的方式進(jìn)行調(diào)用,在這里,我們?cè)O(shè)定查詢q為用戶ID,查詢結(jié)果為生成的具有相關(guān)性文檔d。具體的操作流程如下:

      (1) 將HDFS中的電影表、用戶表和相關(guān)的評(píng)分表等數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的csv文件,按照數(shù)據(jù)量的80%和20%的比例分為訓(xùn)練集和測(cè)試集。

      (2) 訓(xùn)練模型,調(diào)用命令行,并使用命令行傳入相關(guān)模型進(jìn)行模型訓(xùn)練。

      (3) 在經(jīng)過(guò)代碼中設(shè)定好的迭代次數(shù)收斂后,存儲(chǔ)模型的輸出結(jié)果。

      (4) Java動(dòng)態(tài)傳參模型調(diào)用,將對(duì)應(yīng)的用戶ID傳入作為數(shù)據(jù)參數(shù),使用Java調(diào)用Python腳本,得到返回結(jié)果。

      (5) 將返回的結(jié)果保存到相關(guān)的數(shù)據(jù)庫(kù)中,并按照json格式進(jìn)行轉(zhuǎn)換輸出到前臺(tái)頁(yè)面進(jìn)行展示。

      2.3 在線推薦模塊設(shè)計(jì)實(shí)現(xiàn)

      由于單純靠深度算法計(jì)算得到的推薦表單主要是根據(jù)歷史數(shù)據(jù)進(jìn)行計(jì)算的,并不能很好地做到實(shí)時(shí)更新,例如某個(gè)用戶之前是喜愛(ài)冒險(xiǎn)類電影的,歷史數(shù)據(jù)可能也是顯示如此,所以冒險(xiǎn)類電影的推薦分?jǐn)?shù)可能要高于其他類型的電影分?jǐn)?shù),如果今天這位用戶在線去過(guò)多的關(guān)注愛(ài)情類的電影,這說(shuō)明該用戶今天的關(guān)注點(diǎn)不是冒險(xiǎn)類電影,而是愛(ài)情類電影,然而單純的根據(jù)離線推薦模塊進(jìn)行推薦的話,不會(huì)具有實(shí)時(shí)性,從而不能把握用戶的喜好,造成用戶體驗(yàn)不佳。在線推薦模塊的設(shè)計(jì)主要是對(duì)于數(shù)據(jù)庫(kù)中已存在的用戶,收集他們的實(shí)時(shí)行為數(shù)據(jù),然后根據(jù)用戶不同的行為所代表的不同的權(quán)重系數(shù)進(jìn)行計(jì)算,將這些隱式反饋加入到具體的評(píng)分系統(tǒng)當(dāng)中,反饋出當(dāng)前用戶對(duì)于該電影的喜愛(ài)程度。

      由于在線推薦模塊需要收集用戶的各種操作的信息流,比如說(shuō)用戶的瀏覽、點(diǎn)贊、評(píng)分以及評(píng)論等,這類消息的產(chǎn)生往往帶有高并發(fā)、數(shù)據(jù)量大等特點(diǎn),需要使用日志分發(fā)和日志聚合等功能去實(shí)現(xiàn),保證所有的信息都可以被保存和處理。針對(duì)有可能出現(xiàn)的上述問(wèn)題,主要采用Flume和Kafka相結(jié)合的方式來(lái)解決。Flume是分布式的高可靠、高可用的日志收集、聚合和傳輸系統(tǒng),支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,便于收集日志數(shù)據(jù);而Kafka是一種高吞吐量的分布式訂閱消息系統(tǒng),主要具有兩種角色,分別是生產(chǎn)者和消費(fèi)者,生產(chǎn)者指的是生產(chǎn)某一類型的消息的節(jié)點(diǎn),消費(fèi)者指的是消息的接收和使用節(jié)點(diǎn)。具體的在線推薦模塊利用Flume分流設(shè)計(jì)如圖5所示。

      圖5 在線推薦模塊分流設(shè)計(jì)

      首先利用Flume來(lái)收集相關(guān)的用戶行為日志信息作為代理對(duì)象Agent的數(shù)據(jù)源,然后將信息緩沖到Channel中去,分別將用戶行為信息分流到HDFS和Kafka中去,Kafka作為消息的中間件,作為緩沖的消息隊(duì)列,利用發(fā)布訂閱模式來(lái)實(shí)時(shí)記錄到對(duì)應(yīng)的topic中去,然后再提交到Spark中進(jìn)行數(shù)據(jù)計(jì)算,最后保存到數(shù)據(jù)庫(kù)中持久化。

      針對(duì)電影推薦系統(tǒng)的用戶行為數(shù)據(jù),主要收集用戶對(duì)于某部電影可能產(chǎn)生的點(diǎn)贊、評(píng)分、評(píng)論、收藏四種動(dòng)作行為。比如,用戶對(duì)電影進(jìn)行了評(píng)分,說(shuō)明用戶看過(guò)該電影并進(jìn)行打分,可能會(huì)對(duì)同種類型的電影產(chǎn)生興趣;而用戶對(duì)電影進(jìn)行收藏,說(shuō)明用戶近期可能想去看這部電影,喜愛(ài)程度較高。根據(jù)不同的用戶行為對(duì)電影的偏好重要程度,分別給予不同的權(quán)重系數(shù),具體的權(quán)重系數(shù)如表2所示。

      表2 用戶行為權(quán)重系數(shù)

      根據(jù)表2可以得到如下評(píng)分公式:

      Rij=α1rij+α2rij+α3rij+α4rij+α5rij

      (4)

      式中:Rij表示最終的用戶i對(duì)電影j的評(píng)分,αi分別表示各種用戶行為的權(quán)重系數(shù),rij分別表示用戶i對(duì)電影j是否執(zhí)行了此用戶行為,如果存在此用戶行為,設(shè)置值為1,反之為0。最后根據(jù)最終的用戶評(píng)分Rij進(jìn)行排序,得出最終的推薦列表反饋給相關(guān)用戶。

      對(duì)于收集到的用戶行為數(shù)據(jù),如果用戶i對(duì)電影j執(zhí)行了打分操作,那么具體的分?jǐn)?shù)將作為用戶i對(duì)電影j的具體評(píng)分,并作為評(píng)分?jǐn)?shù)據(jù)集,用來(lái)訓(xùn)練下一階段的IRGAN模型;如果用戶i對(duì)電影j沒(méi)有執(zhí)行打分操作,但是有其他行為操作,比如收藏、點(diǎn)贊或者評(píng)論等,可以認(rèn)為用戶i對(duì)電影j有一定的認(rèn)識(shí),只是還沒(méi)有一個(gè)具體的評(píng)分來(lái)評(píng)價(jià)電影j,對(duì)此我們將設(shè)定用戶i對(duì)電影j的評(píng)分為隱式評(píng)分?jǐn)?shù)據(jù),具體的評(píng)分值取用戶i對(duì)電影j的其他同類型電影的評(píng)分的平均值,并作為評(píng)分?jǐn)?shù)據(jù)集,用來(lái)訓(xùn)練下一階段的IRGAN模型。

      3 實(shí)驗(yàn)與分析

      3.1 數(shù)據(jù)集

      本文算法實(shí)驗(yàn)主要使用的是通用數(shù)據(jù)集MovieLens-100k。MovieLens-100k數(shù)據(jù)集是GroupLens項(xiàng)目組提供的一個(gè)公開(kāi)的電影評(píng)分?jǐn)?shù)據(jù)集,也是國(guó)內(nèi)外很多研究學(xué)者用來(lái)進(jìn)行電影評(píng)分預(yù)測(cè)算法效果的熱門(mén)數(shù)據(jù)集,在推薦算法研究領(lǐng)域中被許多研究者廣泛使用,具有很好的通用性。其中包含了943個(gè)用戶對(duì)于1 682部電影的100 000個(gè)評(píng)分,每部電影的評(píng)分范圍是1~5,評(píng)分矩陣密度是6.3%。

      3.2 評(píng)價(jià)指標(biāo)

      本文算法實(shí)驗(yàn)采用的評(píng)價(jià)指標(biāo)主要有準(zhǔn)確率(Precision)和NDCG(Normalized Discounted Cumulative Gain)[11-12]。準(zhǔn)確率可以反映出推薦算法的準(zhǔn)確性,值越高說(shuō)明推薦準(zhǔn)確性越高。對(duì)于用戶u生成的推薦的準(zhǔn)確率公式為:

      (5)

      式中:R(u)是訓(xùn)練完畢的生成檢索模型為用戶u做出的推薦結(jié)果,T(u)是用戶u在測(cè)試集上的真實(shí)結(jié)果。

      NDCG是一種衡量推薦算法產(chǎn)生的推薦結(jié)果的排序質(zhì)量的評(píng)價(jià)指標(biāo),該指標(biāo)考慮到元素之間的相關(guān)性,值越高說(shuō)明推薦結(jié)果的排序質(zhì)量越好。對(duì)于推薦結(jié)果中的第i個(gè)結(jié)果qi,其NDCG值為:

      (6)

      3.3 實(shí)驗(yàn)參數(shù)的選取

      在本文算法實(shí)驗(yàn)中,涉及到如下幾個(gè)參數(shù):學(xué)習(xí)率μ,生成檢索模型的迭代次數(shù)n,判別檢索模型的迭代次數(shù)m,單批次訓(xùn)練個(gè)數(shù)b。各參數(shù)的具體數(shù)值如表3所示。

      表3 實(shí)驗(yàn)參數(shù)選取信息

      3.4 實(shí)驗(yàn)結(jié)果

      本實(shí)驗(yàn)將在Movielens-100k的數(shù)據(jù)集上對(duì)基于用戶的協(xié)同過(guò)濾算法、BPR[13]、LambdaFM[14]和IRGAN四個(gè)算法進(jìn)行對(duì)比實(shí)驗(yàn),分別使用Precision@N、NDCG@N的評(píng)價(jià)標(biāo)準(zhǔn)來(lái)驗(yàn)證IRGAN方法的有效性。

      基于用戶的協(xié)同過(guò)濾算法主要是通過(guò)相似度計(jì)算的方式計(jì)算兩個(gè)用戶之間的相似度,找到與目標(biāo)用戶相似度最高的用戶,也就是興趣相似的用戶,然后將該用戶感興趣的項(xiàng)目推薦給目標(biāo)用戶。

      BPR模型是基于貝葉斯理論在先驗(yàn)知識(shí)下極大化后驗(yàn)概率,來(lái)實(shí)現(xiàn)從一個(gè)用戶-項(xiàng)目矩陣訓(xùn)練出來(lái)多個(gè)矩陣,且一個(gè)矩陣表示一個(gè)用戶的項(xiàng)目偏好程度來(lái)獲取用戶多個(gè)項(xiàng)目關(guān)系進(jìn)行排名的推薦模型。

      LambdaFM模型是將LambdaRank和FM算法相結(jié)合實(shí)現(xiàn)的混合推薦模型。

      具體的實(shí)驗(yàn)結(jié)果展示如表4所示。

      表4 實(shí)驗(yàn)結(jié)果展示

      由表4的實(shí)驗(yàn)數(shù)據(jù)可知,IRGAN算法在各項(xiàng)數(shù)據(jù)上相比較于基于用戶的協(xié)同過(guò)濾算法、BPR和LambdaFM都有了明顯的提升,推薦結(jié)果的排序質(zhì)量相對(duì)而言有所提高,推薦的總體質(zhì)量也有了較大的提升,驗(yàn)證了IRGAN算法的有效性。

      4 系統(tǒng)測(cè)試

      4.1 系統(tǒng)環(huán)境

      本文系統(tǒng)設(shè)置的Hadoop集群主要包含了一個(gè)Master節(jié)點(diǎn)和三個(gè)Slave節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的計(jì)算機(jī)的硬件主要配置如表5所示,并且每個(gè)節(jié)點(diǎn)都安裝好了相關(guān)的Hadoop環(huán)境。

      表5 節(jié)點(diǎn)硬件配置表

      對(duì)于系統(tǒng)測(cè)試所需要的數(shù)據(jù)集,均采用Movielens官網(wǎng)提供的通用數(shù)據(jù)集進(jìn)行測(cè)試,除了上一節(jié)實(shí)驗(yàn)中采用的Movielens-100k的數(shù)據(jù)集外,該官網(wǎng)還提供了1 MB和10 MB兩種不同數(shù)量級(jí)的數(shù)據(jù)集,其詳細(xì)情況如表6所示。

      表6 Movielens數(shù)據(jù)集詳細(xì)情況

      4.2 系統(tǒng)運(yùn)行效率測(cè)試

      基于上述系統(tǒng)環(huán)境配置條件下,對(duì)于不同數(shù)量級(jí)的數(shù)據(jù)集,分別進(jìn)行兩次實(shí)驗(yàn)對(duì)基于Hadoop環(huán)境下的推薦系統(tǒng)算法運(yùn)行效率進(jìn)行測(cè)試。首先,啟用Hadoop環(huán)境中的單個(gè)節(jié)點(diǎn),分別比較三種數(shù)據(jù)集在基于Spark進(jìn)行并行方式計(jì)算和普通串行方式計(jì)算的運(yùn)行時(shí)間。具體的實(shí)驗(yàn)結(jié)果見(jiàn)表7。

      表7 Hadoop單個(gè)節(jié)點(diǎn)中Spark并行與普通串行運(yùn)行時(shí)間對(duì)比

      從表7可以看出,在數(shù)據(jù)量最小的時(shí)候,單節(jié)點(diǎn)串行計(jì)算耗時(shí)比并行計(jì)算耗時(shí)要短,效率較高,這是因?yàn)镾park啟動(dòng)的時(shí)候,會(huì)調(diào)用一些計(jì)算機(jī)資源,耗時(shí)相對(duì)較長(zhǎng);而在數(shù)據(jù)量較大的時(shí)候,基于Spark的并行計(jì)算的耗時(shí)均小于串行計(jì)算耗時(shí),也說(shuō)明了Hadoop下啟動(dòng)Spark對(duì)于大數(shù)據(jù)計(jì)算有很好的處理效率。

      隨后進(jìn)行實(shí)驗(yàn)來(lái)比較三種數(shù)據(jù)集在基于Hadoop分布式集群和傳統(tǒng)單機(jī)條件下算法的并行運(yùn)行效率,實(shí)驗(yàn)中Hadoop分布式集群環(huán)境即為前面所述的系統(tǒng)環(huán)境設(shè)置,具體的實(shí)驗(yàn)結(jié)果如表8所示。

      表8 基于Hadoop集群和傳統(tǒng)單機(jī)環(huán)境下算法并行運(yùn)行時(shí)間對(duì)比

      從表8的實(shí)驗(yàn)結(jié)果可以看到,隨著數(shù)據(jù)量的增加,基于Hadoop分布式集群環(huán)境下的算法運(yùn)行效率要優(yōu)于傳統(tǒng)單機(jī)環(huán)境下的算法運(yùn)行效率,也很好地說(shuō)明了基于Hadoop分布式集群環(huán)境下的并行計(jì)算對(duì)于大數(shù)據(jù)處理具有良好的處理效率。

      5 系統(tǒng)對(duì)比

      現(xiàn)階段傳統(tǒng)電影推薦系統(tǒng)普遍應(yīng)用的推薦算法主要是基于用戶的協(xié)同過(guò)濾推薦算法(User-based)和基于物品的協(xié)同過(guò)濾推薦算法(Item-based)。為了驗(yàn)證本系統(tǒng)與傳統(tǒng)的電影推薦系統(tǒng)相比具有較高的推薦準(zhǔn)確性,運(yùn)用第4節(jié)用到的MovieLens-100k數(shù)據(jù)集和評(píng)價(jià)指標(biāo),分別訓(xùn)練三種推薦模型并篩選出各自的推薦TOP-3、TOP-5和TOP-10來(lái)分析。具體的實(shí)驗(yàn)結(jié)果如圖6所示。

      圖6 三種推薦算法準(zhǔn)確度對(duì)比圖

      由圖6可知,對(duì)于同一個(gè)數(shù)據(jù)集而言,基于IRGAN模型的電影推薦系統(tǒng)的準(zhǔn)確度要高于基于User-based和Item-based模型的電影推薦系統(tǒng)。

      由于MovieLens-100k數(shù)據(jù)集是固定的電影數(shù)據(jù)集,為了進(jìn)一步驗(yàn)證結(jié)合在線推薦模塊的系統(tǒng)的推薦準(zhǔn)確度,本文通過(guò)點(diǎn)擊、收藏等用戶行為數(shù)據(jù)將部分隱式的用戶評(píng)分?jǐn)?shù)據(jù)加入到數(shù)據(jù)集中,組合成新的數(shù)據(jù)集,然后用新的數(shù)據(jù)集分別訓(xùn)練User-based、Item-based和結(jié)合了在線行為數(shù)據(jù)收集模塊的IRGAN,篩選出各自的推薦TOP-3、TOP-5和TOP-10來(lái)分析。具體的實(shí)驗(yàn)結(jié)果如圖7所示。

      圖7 三種推薦算法準(zhǔn)確度對(duì)比圖

      由圖7可知,當(dāng)數(shù)據(jù)集中加入了部分隱式評(píng)分?jǐn)?shù)據(jù)后,三種推薦算法的準(zhǔn)確度都有所變化,基于User-based和Item-based模型的電影推薦系統(tǒng)準(zhǔn)確度與之前數(shù)據(jù)集相比變化不是很大,即使加入了新的評(píng)分?jǐn)?shù)據(jù),但由于新的評(píng)分?jǐn)?shù)據(jù)較少,盡管代表了當(dāng)前用戶的喜好程度,但是大部分還是被歷史數(shù)據(jù)訓(xùn)練的喜好程度掩蓋住了;而基于IRGAN結(jié)合在線推薦模塊的電影推薦系統(tǒng)推薦準(zhǔn)確度有了明顯提升,能夠?qū)?dāng)前的喜好程度實(shí)時(shí)地傳達(dá)出來(lái),具有實(shí)時(shí)推薦性。

      6 結(jié) 語(yǔ)

      本文主要介紹了基于IRGAN算法模型和Hadoop大數(shù)據(jù)平臺(tái)相結(jié)合的電影推薦系統(tǒng)。針對(duì)目前存在的電影市場(chǎng)規(guī)模擴(kuò)大、觀影用戶數(shù)量增長(zhǎng)過(guò)快以及電影資源更新頻繁等帶來(lái)的數(shù)據(jù)利用率低、系統(tǒng)壓力大、實(shí)時(shí)性差等弊端,本文主要依托Hadoop、Spark等大數(shù)據(jù)處理技術(shù),詳細(xì)設(shè)計(jì)實(shí)現(xiàn)了基于IRGAN算法模型的離線推薦模塊和基于在線用戶行為數(shù)據(jù)收集處理的在線推薦模塊。通過(guò)兩個(gè)模塊的聯(lián)合推薦,相比于傳統(tǒng)的電影推薦系統(tǒng),提高了推薦實(shí)時(shí)準(zhǔn)確性,提升了用戶體驗(yàn),并結(jié)合Hadoop等大數(shù)據(jù)技術(shù),提高了系統(tǒng)的工作效率,加強(qiáng)了系統(tǒng)的穩(wěn)定性。在隨后的算法實(shí)驗(yàn)和系統(tǒng)測(cè)試中也驗(yàn)證了本系統(tǒng)的可行性。同時(shí),本文系統(tǒng)也存在一些不足之處,基于IRGAN算法模型的離線推薦模塊的訓(xùn)練是博弈訓(xùn)練的,在更新行為數(shù)據(jù)后如何訓(xùn)練模型使之仍舊能取得較好的效果是一個(gè)問(wèn)題,另外系統(tǒng)收集用戶的行為數(shù)據(jù)時(shí),比如說(shuō)用戶評(píng)論了某部電影,系統(tǒng)并沒(méi)有區(qū)分用戶的評(píng)論是否表達(dá)了對(duì)電影的喜愛(ài),這也導(dǎo)致了部分隱式評(píng)分?jǐn)?shù)據(jù)存在一定的誤差。針對(duì)以上不足,今后的工作主要是探究如何在數(shù)據(jù)發(fā)生變化的時(shí)候使模型的訓(xùn)練仍舊能夠取得比較好的效果,對(duì)用戶行為數(shù)據(jù)的收集進(jìn)行更加詳細(xì)的分類,進(jìn)一步提升模型的訓(xùn)練準(zhǔn)確度和效率,并且優(yōu)化系統(tǒng)的整體架構(gòu)。

      猜你喜歡
      離線節(jié)點(diǎn)模塊
      CM節(jié)點(diǎn)控制在船舶上的應(yīng)用
      28通道收發(fā)處理模塊設(shè)計(jì)
      “選修3—3”模塊的復(fù)習(xí)備考
      Analysis of the characteristics of electronic equipment usage distance for common users
      異步電機(jī)離線參數(shù)辨識(shí)方法
      呼吸閥離線檢驗(yàn)工藝與評(píng)定探討
      基于AutoCAD的門(mén)窗節(jié)點(diǎn)圖快速構(gòu)建
      淺談ATC離線基礎(chǔ)數(shù)據(jù)的準(zhǔn)備
      離線富集-HPLC法同時(shí)測(cè)定氨咖黃敏膠囊中5種合成色素
      中成藥(2018年2期)2018-05-09 07:20:09
      選修6 第三模塊 International Relationships
      门头沟区| 长顺县| 三穗县| 卫辉市| 泸州市| 海阳市| 扶沟县| 连山| 威信县| 赣榆县| 芦山县| 尚义县| 永州市| 油尖旺区| 诸暨市| 永平县| 武乡县| 江山市| 湘潭县| 教育| 盖州市| 垦利县| 梅州市| 祁连县| 台南县| 延庆县| 资源县| 浪卡子县| 韩城市| 富民县| 威信县| 扎兰屯市| 莱西市| 武平县| 庆云县| 东明县| 仪征市| 开鲁县| 邮箱| 贵南县| 枣强县|