国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于Spark的實時推薦系統(tǒng)及方法與流程

      文檔序號:11864797閱讀:1492來源:國知局
      本發(fā)明涉及一種實時推薦系統(tǒng)及方法,具體地涉及一種基于Spark的實時推薦系統(tǒng)及方法。
      背景技術(shù)
      ::實時推薦系統(tǒng)是指能夠?qū)崟r感知用戶興趣變化,并根據(jù)用戶興趣變化實時調(diào)整為用戶推薦的內(nèi)容。傳統(tǒng)推薦系統(tǒng)一般通過集群使用HadoopMapReduce對用戶行為數(shù)據(jù)每間隔一天進行一次離線訓(xùn)練,然后使用訓(xùn)練得到的用戶特征模型為用戶生成推薦列表。這顯然無法達到實時推薦需求,無法實時感知用戶偏好的變化,從而造成推薦準(zhǔn)確度下降。目前,現(xiàn)有的實時推薦系統(tǒng)框架主要有Netflix公司的實時推薦系統(tǒng)框架。Netflix實時推薦系統(tǒng)框架是一個能高效處理海量用戶行為數(shù)據(jù),響應(yīng)用戶交互,且推薦方法可配置的推薦系統(tǒng)架構(gòu)。推薦系統(tǒng)框架分為離線計算、接近在線計算和在線計算三個模塊。離線計算模塊以HadoopMapReduce批處理的方式對用戶歷史行為數(shù)據(jù)進行訓(xùn)練,得到用戶特征模型,對實時性要求較弱。在線計算模塊對實時性要求較高,主要用于快速響應(yīng)用戶交互。接近在線計算模塊主要用于支持推薦準(zhǔn)確度較高,但實時性要求略低于在線推薦的應(yīng)用場景。Netflix實時推薦系統(tǒng)存在的問題是:(1)在線計算模塊主要用戶相應(yīng)用戶交互,缺乏利用最新的用戶行為數(shù)據(jù)對用戶特征模型進行更新,故不能實時感知用戶興趣的變化(2)各模塊采用不同類型的系統(tǒng)分別對數(shù)據(jù)進行處理,處理結(jié)果無法在各模塊之間實現(xiàn)無縫共享;(3)同一個集群中對各系統(tǒng)所需資源的協(xié)調(diào)與分配比較困難。技術(shù)實現(xiàn)要素:針對上述存在的技術(shù)問題,本發(fā)明目的是:提供了一種基于Spark的實時推薦系統(tǒng)及方法,本發(fā)明采用計算框架Spark加速用戶特征模型的訓(xùn)練過程,并將推薦系統(tǒng)框架劃分為離線批處理模塊、接近在線推薦模塊和在線推薦模塊,各模塊之間的數(shù)據(jù)流通過SparkRDD的轉(zhuǎn)換來實現(xiàn),能有效提高推薦結(jié)果的準(zhǔn)確性和實時性。本發(fā)明的技術(shù)方案是:一種基于Spark的實時推薦系統(tǒng),其特征在于,通過Spark軟件分析棧構(gòu)建基于Spark的一棧式推薦系統(tǒng)框架,包括數(shù)據(jù)采集模塊、離線推薦模塊、在線推薦模塊和推薦模塊,各模塊之間的數(shù)據(jù)共享通過SparkRDD轉(zhuǎn)換;數(shù)據(jù)采集模塊,用于采集用戶行為數(shù)據(jù);所述離線推薦模塊,包含離線推薦算法庫,根據(jù)用戶配置參數(shù)從離線推薦算法庫中選擇相應(yīng)推薦算法對用戶行為數(shù)據(jù)進行訓(xùn)練,得到用戶特征模型;所述在線推薦模塊,接收來自Kafka的用戶行為數(shù)據(jù),并發(fā)送給在線推薦算法庫中的相應(yīng)算法進行訓(xùn)練,得到增量用戶特征模型;在線模型訓(xùn)練引擎將訓(xùn)練得到的用戶特征模型作為基礎(chǔ)模型,使用流式增量推薦算法利用最新接收到的用戶行為數(shù)據(jù)對基礎(chǔ)模型進行增量更新,得到最新用戶特征模型;所述推薦模塊,根據(jù)用戶特征模型,并結(jié)合惰性更新機制更新用戶推薦列表。優(yōu)選的,所述在線推薦模塊還包括接近在線推薦模塊,將最新接收到的用戶行為數(shù)據(jù)與在此之前接收到的所有用戶行為數(shù)據(jù)進行融合,將融合之后的用戶行為數(shù)據(jù)發(fā)送給接近在線模型訓(xùn)練引擎,選擇在線推薦算法庫中的接近在線推薦算法進行訓(xùn)練,得到精確用戶特征模型。優(yōu)選的,還包括模型融合模塊,用于將離線模型訓(xùn)練引擎、接近在線模型訓(xùn)練引擎和在線模型訓(xùn)練引擎訓(xùn)練得到的用戶特征模型進行融合,得到最終用戶特征模型。優(yōu)選的,所述離線算法庫中包含的算法至少有:基于用戶的協(xié)同過濾算法(User-CF)、基于物品的協(xié)同過濾算法(Item-CF)、考慮時間上下文因素的基于用戶的協(xié)同過濾算法(time-User-CF)、考慮時間上下文因素的基于物品的協(xié)同過濾算法(time-Item-CF)、ALS算法;在線推薦算法庫中包含的算法至少有:流式基于用戶的協(xié)同過濾算法(Streaming-User-CF)、流式基于物品的協(xié)同過濾算法(Streaming-Item-CF)。優(yōu)選的,所述惰性更新機制包括如下步驟:(1)分析用戶活躍頻率統(tǒng)計表,獲取活躍用戶集合;(2)將得到的最終用戶特征模型與活躍用戶相結(jié)合,為活躍用戶生成推薦列表;(3)將推薦列表保存在SparkRDD中,供SparkSQL進行查詢。優(yōu)選的,通過惰性更新機制獲取推薦列表包括如下步驟:(a)SparkSQL獲取與用戶對應(yīng)的推薦列表,并提取該推薦列表最后一次更新的時間戳timeStamp1;(b)從用戶訪問系統(tǒng)時間表中獲取用戶最后一次通過系統(tǒng)選擇物品的時間戳timeStamp2;(c)對比時間戳timeStamp1和timeStamp2,如果timeStamp1>timeStamp2,將SparkSQL查詢得到的推薦列表返回給該用戶;(d)否則,重新通過訓(xùn)練得到的用戶特征模型更新該用戶的推薦列表,并將更新后的推薦列表寫入推薦列表集合進行存儲,并將其返回給用戶。本發(fā)明又公開了一種基于Spark的實時推薦方法,其特征在于,包括以下步驟:S01:統(tǒng)計用戶訪問的時間和頻率,并將相關(guān)數(shù)據(jù)寫入用戶活躍頻率統(tǒng)計表和用戶訪問系統(tǒng)時間表;S02:記錄用戶對系統(tǒng)操作的所有行為,并將用戶行為日志數(shù)據(jù)實時發(fā)送給Kafka分布式集群;S03:根據(jù)用戶配置參數(shù)從離線推薦算法庫中選擇相應(yīng)推薦算法對用戶行為數(shù)據(jù)進行訓(xùn)練,得到用戶特征模型;S04:通過SparkStreaming實時接收來自Kafka的最新用戶行為數(shù)據(jù),并發(fā)送給在線推薦算法庫中的相應(yīng)算法進行增量用戶特征模型訓(xùn)練;在線模型訓(xùn)練引擎將訓(xùn)練得到的用戶特征模型作為基礎(chǔ)模型,然后使用流式增量推薦算法利用最新接收到的用戶行為數(shù)據(jù)對基礎(chǔ)模型進行增量更新,得到最新用戶特征模型;當(dāng)用戶在配置參數(shù)中選擇了接近在線推薦模塊時,接近在線推薦模塊將最新接收到的用戶行為數(shù)據(jù)與在此之前接收到的所有用戶行為數(shù)據(jù)進行融合,將融合之后的用戶行為數(shù)據(jù)發(fā)送給接近在線模型訓(xùn)練引擎,選擇在線推薦算法庫中的接近在線推薦算法進行訓(xùn)練,得到精確用戶特征模型;S06:模型整合模塊將離線模型訓(xùn)練引擎、接近在線模型訓(xùn)練引擎和在線模型訓(xùn)練引擎訓(xùn)練得到的用戶特征模型進行融合,得到最終用戶特征模型;S07:推薦模塊根據(jù)得到的最終用戶特征模型,并結(jié)合惰性更新機制更新用戶的推薦列表。優(yōu)選的,所述惰性更新機制包括如下步驟:(1)分析用戶活躍頻率統(tǒng)計表,獲取活躍用戶集合;(2)將得到的最終用戶特征模型與活躍用戶相結(jié)合,為活躍用戶生成推薦列表;(3)將推薦列表保存在SparkRDD中,供SparkSQL進行查詢。優(yōu)選的,通過惰性更新機制獲取推薦列表包括如下步驟:(a)SparkSQL獲取與用戶對應(yīng)的推薦列表,并提取該推薦列表最后一次更新的時間戳timeStamp1;(b)從用戶訪問系統(tǒng)時間表中獲取用戶最后一次通過系統(tǒng)選擇物品的時間戳timeStamp2;(c)對比時間戳timeStamp1和timeStamp2,如果timeStamp1>timeStamp2,將SparkSQL查詢得到的推薦列表返回給該用戶;(d)否則,重新通過訓(xùn)練得到的用戶特征模型更新該用戶的推薦列表,并將更新后的推薦列表寫入推薦列表集合進行存儲,并將其返回給用戶。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點是:1、基于Spark軟件分析棧設(shè)計的一棧式推薦系統(tǒng)框架利用Spark生態(tài)系統(tǒng)中的各組件進行無縫對接,各模塊之間的數(shù)據(jù)通過SparkRDD進行共享,極大降低了各模塊間數(shù)據(jù)共享開銷和系統(tǒng)研發(fā)與維護成本。離線推薦理模塊中,使用目前最高效的內(nèi)存計算框架Spark取代HadoopMapReduce進行離線用戶特征模型訓(xùn)練,經(jīng)實驗發(fā)現(xiàn),模型訓(xùn)練效率比傳統(tǒng)的HadoopMapReduce方案提高了近3倍。在線推薦模塊中,本系統(tǒng)設(shè)計并實現(xiàn)的基于增量更新的流式推薦算法比傳統(tǒng)離線算法的模型更新效率提高了60%以上,ALS算法的推薦準(zhǔn)確度提高了3.7%。此外,本系統(tǒng)設(shè)計的惰性更新策略以及將推薦結(jié)果以RDDTable的形式存儲在內(nèi)存中,并通過SparkSQL進行查詢等優(yōu)化方案極大提高了推薦系統(tǒng)的實時性。附圖說明下面結(jié)合附圖及實施例對本發(fā)明作進一步描述:圖1是基于Spark的實時推薦系統(tǒng)的結(jié)構(gòu)框架示意圖;圖2是推薦列表惰性更新策略示意圖;圖3是用戶訪問推薦列表集合獲取推薦列表流程示意圖;圖4本發(fā)明基于Spark的實時推薦系統(tǒng)框架與傳統(tǒng)推薦系統(tǒng)的模型訓(xùn)練時間對比圖;圖5本發(fā)明基于Spark的實時推薦系統(tǒng)框架與傳統(tǒng)推薦系統(tǒng)的推薦準(zhǔn)確度對比圖;圖6本發(fā)明基于Spark的實時推薦系統(tǒng)框架與傳統(tǒng)推薦系統(tǒng)的性能提升對比圖。具體實施方式以下結(jié)合具體實施例對上述方案做進一步說明。應(yīng)理解,這些實施例是用于說明本發(fā)明而不限于限制本發(fā)明的范圍。實施例中采用的實施條件可以根據(jù)具體廠家的條件做進一步調(diào)整,未注明的實施條件通常為常規(guī)實驗中的條件。實施例:如圖1所示為基于Spark的實時推薦系統(tǒng)框架示意圖,主要包括數(shù)據(jù)采集模塊、離線推薦模塊、在線推薦模塊、模型融合模塊、推薦模塊等。它借助Spark軟件分析棧(BDAS)構(gòu)建基于Spark的一棧式推薦系統(tǒng)框架。該系統(tǒng)將推薦系統(tǒng)框架劃分為離線批處理模塊、接近在線推薦模塊和在線推薦模塊,離線批處理模塊采用目前最高效的內(nèi)存計算框架Spark取代傳統(tǒng)批處理框架HadoopMapReduce,對用戶行為數(shù)據(jù)進行訓(xùn)練,接近在線推薦模塊和在線推薦模塊利用SparkStreaming實時接收來自Kafka集群的用戶行為數(shù)據(jù),并使用基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾等增量算法進行對用戶特征模型進行增量更新,各模塊之間的數(shù)據(jù)共享通過SparkRDD的轉(zhuǎn)換來實現(xiàn)。為了進一步提高用戶特征模型更新效率,本發(fā)明根據(jù)各模塊對用戶特征模型訓(xùn)練時間的實時性要求,分別實現(xiàn)了基于Spark的離線推薦算法庫和在線推薦算法庫。離線算法庫中包含的算法有:基于用戶的協(xié)同過濾算法(User-CF)、基于物品的協(xié)同過濾算法(Item-CF)、考慮時間上下文因素的基于用戶的協(xié)同過濾算法(time-User-CF)、考慮時間上下文因素的基于物品的協(xié)同過濾算法(time-Item-CF)、ALS算法等;在線推薦算法庫中包含的算法有:流式基于用戶的協(xié)同過濾算法(Streaming-User-CF)、流式基于物品的協(xié)同過濾算法(Streaming-Item-CF)等。其中,在線推薦算法庫中的流式在線推薦算法主要用于用戶特征模型的增量更新,并為用戶進行實時推薦。為了進一步提高推薦實時性,本發(fā)明引入了推薦列表的惰性更新機制和使用SparkSQL對推薦列表進行查詢。所述基于Spark的實時推薦系統(tǒng)為用戶進行推薦包括如下步驟:(a)當(dāng)實時推薦系統(tǒng)啟動時,首先從配置文件中讀取相應(yīng)配置參數(shù),并啟動WebServer為用戶提供訪問服務(wù);(b)當(dāng)用戶訪問系統(tǒng)時,WebServer統(tǒng)計用戶對系統(tǒng)訪問的時間和頻率,并將相關(guān)數(shù)據(jù)寫入用戶活躍頻率統(tǒng)計表和用戶訪問系統(tǒng)時間表,這兩張表分別用戶指導(dǎo)步驟(i)中的用戶推薦列表惰性更新;(c)WebServer記錄用戶對系統(tǒng)操作的所有行為,并將用戶行為日志數(shù)據(jù)實時發(fā)送給Kafka分布式集群;(d)Kafka集群接收到數(shù)據(jù)之后,一方面會將數(shù)據(jù)發(fā)送給HBase數(shù)據(jù)庫進行分布式存儲,用于離線模塊的用戶特征模型訓(xùn)練,另一方面會實時發(fā)送給在線推薦模塊;(e)離線批處理模塊中包含離線推薦算法庫,系統(tǒng)會根據(jù)用戶配置參數(shù)從離線推薦算法庫中選擇相應(yīng)推薦算法對存儲在HBase數(shù)據(jù)庫中的用戶行為數(shù)據(jù)進行訓(xùn)練,得到用戶特征模型;(f)在線推薦模塊通過SparkStreaming實時接收來自Kafka的最新用戶行為數(shù)據(jù),并發(fā)送給在線推薦算法庫中的相應(yīng)算法進行增量用戶特征模型訓(xùn)練。在線模型訓(xùn)練引擎會將步驟(e)訓(xùn)練得到的用戶特征模型作為基礎(chǔ)模型,然后使用流式增量推薦算法利用最新接收到的用戶行為數(shù)據(jù)對基礎(chǔ)模型進行增量更新,得到最新用戶特征模型;(g)當(dāng)用戶對推薦結(jié)果的實時性要求不高,但對推薦結(jié)果的精確度要求極高時,可以在配置參數(shù)中選擇使用在線推薦算法庫中的接近在線推薦算法(ALS-Extend算法)進行用戶特征模型訓(xùn)練。此時,在線推薦模塊會通過SparkStreaming實時接收最新的用戶特征數(shù)據(jù),并將最新接收到的用戶行為數(shù)據(jù)與在此之前接收到的所有用戶行為數(shù)據(jù)進行融合,將融合之后的用戶行為數(shù)據(jù)發(fā)送給接近在線模型訓(xùn)練引擎,選擇在線推薦算法庫中的接近在線推薦算法進行訓(xùn)練,得到精確用戶特征模型;(h)模型整合模塊會將離線模型訓(xùn)練引擎、接近在線模型訓(xùn)練引擎和在線模型訓(xùn)練引擎訓(xùn)練得到的用戶特征模型進行融合,得到最終用戶特征模型;(i)推薦模塊會利用最終得到的用戶特征模型,并結(jié)合惰性更新機制更新用戶的推薦列表。惰性更新機制請參考圖2,該機制包括如下步驟:(1)分析用戶活躍頻率統(tǒng)計表,獲取活躍用戶集合;(2)將步驟(h)得到的最終用戶特征模型與活躍用戶相結(jié)合,為活躍用戶生成推薦列表;(3)將推薦列表保存在SparkRDD中,供SparkSQL進行查詢。圖3表示用戶通過推薦列表集合獲取推薦列表流程示意圖,用戶通過惰性更新機制獲取推薦列表包括如下步驟:(a)用戶通過SparkSQL從推薦列表集合RDDtable中查詢系統(tǒng)為該用戶生成的推薦列表;(b)SparkSQL獲取與該用戶對應(yīng)的推薦列表,并提取該推薦列表最后一次更新的時間戳timeStamp1;(c)從用戶訪問系統(tǒng)時間表中獲取用戶最后一次通過系統(tǒng)選擇物品的時間戳timeStamp2;(d)對比時間戳timeStamp1和timeStamp2,如果timeStamp1>timeStamp2,表示用戶推薦列表的更新發(fā)生在用戶通過系統(tǒng)選擇物品之后,也就是說該推薦列表是最新的,那么直接將SparkSQL查詢得到的推薦列表返回給該用戶;(e)否則,表示惰性機制導(dǎo)致該用戶的推薦列表沒有及時更新,所以需要重新通過訓(xùn)練得到的用戶特征模型更新該用戶的推薦列表,并將更新后的推薦列表寫入RDDtable進行存儲,與此同時,將其返回給用戶。圖4是利用內(nèi)存計算框架Spark和HadoopMapReduce框架對MovieLens100K(1,000Users,1,700Items,100,000Ratings)數(shù)據(jù)集分別使用User-CF算法和Item-CF算法進行用戶特征模型訓(xùn)練的時間對比圖。從圖中可以看出,Spark平臺的模型訓(xùn)練效率比HadoopMapReduce平臺高3倍左右,這是因為:(1)Spark平臺采用了基于內(nèi)存的計算方式,避免將中間結(jié)果寫出到磁盤中;(2)采用基于RDD的血統(tǒng)(Lineage)容錯機制,節(jié)省容錯開銷;(3)將執(zhí)行流程生成有向無環(huán)圖,對任務(wù)采用多級調(diào)度機制。圖5是利用本發(fā)明設(shè)計的接近在線推薦算法和原始推薦算法對MovieLens100K、MovieLens1M、MovieLens10M、BookCrossing等公開數(shù)據(jù)集進行評分預(yù)測類型推薦所得到的預(yù)測誤差對比圖。從圖中可以看出,本發(fā)明設(shè)計的接近在線推薦算法ALS-Extend在每一個數(shù)據(jù)集下的預(yù)測誤差RMSE均小于原始推薦算法的預(yù)測誤差。經(jīng)對比可知,ALS-Extend推薦算法的推薦準(zhǔn)確度比ALS算法高3%。圖6是對推薦列表使用SparkSQL從緩存于內(nèi)存中的RDDTable進行查詢的方案與直接將推薦列表寫入MySQL,然后使用SQL從MySQL中進行查詢的方案性能對比圖。從圖中可以看出,SparkSQL查詢方案的數(shù)據(jù)查詢時間受數(shù)據(jù)規(guī)模變化影響較小,并且查詢時間明顯小于MySQL方案。這是因為:(1)SparkSQL方案中,推薦列表緩存在內(nèi)存中,無需訪問磁盤,而MySQL方案需要從磁盤中對數(shù)據(jù)進行查詢;(2)SparkSQL利用分布式集群優(yōu)勢,將查詢?nèi)蝿?wù)分發(fā)到各機器上進行并行執(zhí)行,而MySQL方案直接使用單節(jié)點進行查詢,所以對數(shù)據(jù)規(guī)模的變化比SparkSQL方案敏感。綜上所述,基于Spark的實時推薦系統(tǒng)框架對推薦系統(tǒng)的實時性具有明顯的性能提升。上述實例只為說明本發(fā)明的技術(shù)構(gòu)思及特點,其目的在于讓熟悉此項技術(shù)的人是能夠了解本發(fā)明的內(nèi)容并據(jù)以實施,并不能以此限制本發(fā)明的保護范圍。凡根據(jù)本發(fā)明精神實質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1