麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種基于物品相似度的實時推薦方法與流程

文檔序號:11519661閱讀:357來源:國知局
一種基于物品相似度的實時推薦方法與流程

本發(fā)明屬于數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種基于item-based的實時推薦方法。



背景技術(shù):

近年來,隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)逐漸成為人們選購商品、查詢商品信息數(shù)據(jù)的第一選擇。商品種類繁多,信息細(xì)化,網(wǎng)站在為用戶提供越來越多選擇的同時其結(jié)構(gòu)也變得更加復(fù)雜,面對不計其數(shù)的商品信息,用戶經(jīng)常會迷失在大量的商品信息空間中,無法順利找到自己需要的商品。

為解決這一問題,個性化推薦方法應(yīng)運而生。傳統(tǒng)推薦方法基于物品的協(xié)同過濾技術(shù),即是預(yù)先根據(jù)所有用戶的歷史偏好數(shù)據(jù)計算物品之間的相似性,然后把與用戶歷史訪問的物品相類似的topn物品推薦給用戶。其具體思想是:先預(yù)處理用戶訪問記錄,根據(jù)用戶物品偏好值計算物品相似矩陣,向用戶推薦其偏好物品的相似物品。

但采用傳統(tǒng)推薦方法的效果并不理想,不僅推薦準(zhǔn)確度不高,而且運算效率低下。究其原因,是因為傳統(tǒng)方法有如下幾個缺陷:首先由于用戶偏好值設(shè)置較為簡單,導(dǎo)致傳統(tǒng)的用戶偏好矩陣不能很好地表示用戶喜好,這就導(dǎo)致了后續(xù)計算的偏差會被持續(xù)放大。其次運算時每次都需要計算全量用戶,這就重復(fù)計算了訪問行為實際沒有變化的用戶推薦列表,導(dǎo)致消耗計算資源較多。此外,目前基于協(xié)同過濾技術(shù)基本應(yīng)用于t+1推薦,沒有拓展到實時推薦,使得推薦列表更新速度太慢,難以滿足實際需求。



技術(shù)實現(xiàn)要素:

為解決上述問題,本發(fā)明公開了一種基于物品相似度的實時推薦方法,能夠?qū)⒌顷懞臀吹卿浻脩舻挠脩魳?biāo)識進(jìn)行統(tǒng)一,并定義了更為精確的用戶偏好值函數(shù),更為重要的是根據(jù)實時獲取的用戶行為數(shù)據(jù)進(jìn)行計算,從而大大提升了推薦效率和計算精確度。

為了達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:

一種基于物品相似度的實時推薦方法,包括如下步驟:

步驟a,收集近期用戶行為數(shù)據(jù),對行為數(shù)據(jù)進(jìn)行預(yù)處理,當(dāng)用戶在登陸狀態(tài),使用userid的murmur哈希值作為用戶標(biāo)識;用戶在非登陸狀態(tài)下,使用visitor_trace的murmur哈希值作為用戶標(biāo)識,將用戶標(biāo)識轉(zhuǎn)換成統(tǒng)一的長整型數(shù)據(jù)值;

步驟b,采用偏好函數(shù)模型計算每個用戶對瀏覽商品的偏好值,生成基礎(chǔ)用戶物品偏好值矩陣,計算物品相似矩陣,

所述偏好函數(shù)模型如下:

score=i+

其中i為初始值,xj表示當(dāng)前時間與用戶訪問時間的時間差值;

步驟c,篩選出當(dāng)前訪客的最新行為數(shù)據(jù),處理成實時偏好矩陣,結(jié)合物品相似矩陣,計算用戶推薦列表,包括:

步驟c-1,篩選最新的訪客用戶的所有行為數(shù)據(jù),對數(shù)據(jù)進(jìn)行預(yù)處理,當(dāng)用戶在登陸狀態(tài),使用userid的murmur哈希值作為用戶標(biāo)識;用戶在非登陸狀態(tài)下,使用visitor_trace的murmur哈希值作為用戶標(biāo)識,將用戶標(biāo)識統(tǒng)一轉(zhuǎn)換成長整型數(shù)值;

步驟c-2,采用偏好函數(shù)模型轉(zhuǎn)換每個用戶對瀏覽商品的偏好值,將所有用戶對某個物品的偏好值作為一個向量來計算物品之間的相似度,生成實時用戶物品偏好矩陣;

步驟c-3,利用步驟b得到的當(dāng)天已保存的物品相似矩陣,采用矩陣乘法,通過下式計算:

物品相似矩陣*實時用戶物品偏好矩陣

步驟c-4,基于步驟c-3得到的結(jié)果,計算各用戶在同一物品下的中間值之和,得到各用戶對各產(chǎn)品的預(yù)測值,過濾掉用戶已瀏覽和已下單商品后,按偏好值大小排序,取排在前面的若干商品為推薦列表。

作為改進(jìn),為了避免推薦熱門產(chǎn)品,步驟c-4中,加入相似度作為懲罰因子,預(yù)測值通過下式計算得到:

預(yù)測值=σ中間值/σ相似度。

作為優(yōu)選,所述步驟c基于mapreduce開發(fā)。

作為優(yōu)選,所述步驟c篩選5分鐘內(nèi)訪客用戶的所有行為數(shù)據(jù)。

作為優(yōu)選,所述步驟c基于sparkstreaming開發(fā)。

作為優(yōu)選,時間窗口設(shè)置為5s,每隔5s檢測數(shù)據(jù)流更新情況,一旦更新,則收集更新的數(shù)據(jù)運算后進(jìn)行推薦。

作為優(yōu)選,所述物品相似矩陣通過調(diào)用mahout-itembased接口得到。

作為優(yōu)選,所述物品相似矩陣采用稀疏矩陣來保存。

作為優(yōu)選,當(dāng)用戶在用戶物品偏好值矩陣中只對一個物品打分時,則不計算該用戶的推薦列表。

與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點和有益效果:

1.融合useid和visitor_trace兩個字段,并將用戶標(biāo)識散射成唯一長整型數(shù)據(jù)值,實現(xiàn)兩個字段合并統(tǒng)一,整合登陸和未登陸用戶的訪問數(shù)據(jù),保證登陸用戶和非登陸用戶的標(biāo)識一致。

2.提出了合理的偏好值計算邏輯,加入時間因素,同時兼顧點擊次數(shù)兩個權(quán)重因子,合理地把用戶對產(chǎn)品行為操作轉(zhuǎn)換成數(shù)值化的喜好值,最大程度上逼近用戶的真實喜好,使得用戶偏好值的計算更為精確。

3.實時篩選出當(dāng)前訪客的歷史及當(dāng)前行為數(shù)據(jù),預(yù)處理成偏好矩陣,結(jié)合通過近期全量數(shù)據(jù)計算并保存得到的物品相似矩陣,計算用戶推薦列表。大大提高了推薦方法的效率,可以將推薦時間縮小到秒級內(nèi)完成。

附圖說明

圖1為本發(fā)明方法流程圖。

圖2為基于sparkstreaming開發(fā)的實時推薦方法流程圖。

具體實施方式

以下將結(jié)合具體實施例對本發(fā)明提供的技術(shù)方案進(jìn)行詳細(xì)說明,應(yīng)理解下述具體實施方式僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。

在傳統(tǒng)技術(shù)中,用userid來區(qū)分不同用戶,非登陸用戶不可識別,這樣會漏掉大量非登陸用戶的訪問行為數(shù)據(jù),造成基礎(chǔ)數(shù)據(jù)的缺失,導(dǎo)致后續(xù)運算的可靠性下降。本發(fā)明首先解決了這一問題,本發(fā)明結(jié)合userid和visitor_trace綜合生成每位網(wǎng)站訪客的唯一標(biāo)識,當(dāng)用戶在登陸狀態(tài),優(yōu)先使用userid的murmur哈希值作為用戶標(biāo)識;用戶在非登陸狀態(tài)下,則使用visitor_trace(硬件編碼)的murmur哈希值作為用戶標(biāo)識,具體是采用murmur哈希函數(shù)把相應(yīng)的字符串(userid、visitor_trace)轉(zhuǎn)換成long值。本發(fā)明中凡是涉及到用戶標(biāo)識的地方均做此處理。這樣能夠解決未登陸用戶不可識別的問題,且完整保留了所有訪問行為數(shù)據(jù),在計算物品相似度和推薦列表過程中增加了可靠性。

本發(fā)明的改進(jìn)重點在于對用戶偏好值進(jìn)行了重新定義,在偏好函數(shù)數(shù)學(xué)模型中加入時間因素和點擊次數(shù)兩個權(quán)重因子,合理地把用戶對產(chǎn)品行為操作轉(zhuǎn)換成數(shù)值化的喜好值。偏好函數(shù)模型定義如下:

首先對偏好值進(jìn)行初始化,具體的用戶行為有:瀏覽、收藏、取消收藏、下單、退單等數(shù)種,基于此,偏好值初始化如下表1所示:

表1

隨后定義時間權(quán)重模型和點擊次數(shù)權(quán)重模型:

我們認(rèn)為,距離當(dāng)前時間越近的用戶行為,越能反映用戶偏好;反之,距離當(dāng)前時間越久遠(yuǎn)的用戶行為,對用戶偏好定義越弱。

基于以上思路,定義時間權(quán)重具體計算公式為k*(x表示當(dāng)前時間與用戶訪問時間的時間差值,=2.718281828,k=1,根據(jù)不同的使用場景,k可以設(shè)置不同的值,擬合出用戶對物品的偏好值)

我們認(rèn)為,用戶對某一個商品點擊越頻繁,表示用戶對該商品的喜好度越強?;谝陨纤悸?,定義點擊次數(shù)權(quán)重,用戶每點擊一次商品,即在偏好值上累計加入該次瀏覽的偏好值。

綜合時間權(quán)重模型和點擊次數(shù)權(quán)重模型得到真實的用戶喜好值如下:

score=i+i為用戶最近一次行為在表1中對應(yīng)的初始值,xj表示當(dāng)前時間與用戶訪問時間的時間差值)

基于以上改進(jìn)基礎(chǔ),本發(fā)明提供的基于物品相似度的實時推薦方法,如圖1所示,包括以下步驟:

步驟a,收集近期(本例選值15天)用戶行為數(shù)據(jù)(包括但不限于visitor_trace、uid,產(chǎn)品id,具體操作,點擊時間,產(chǎn)品類型),對行為數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理過程主要采用現(xiàn)有技術(shù)中的常規(guī)方式,不同的是,在行為數(shù)據(jù)預(yù)處理過程中,本發(fā)明融合用戶標(biāo)識(uid、visitor_trace),散射成統(tǒng)一的長整型數(shù)據(jù)值。

步驟b,采用偏好函數(shù)模型轉(zhuǎn)換每個用戶對瀏覽商品的偏好值,生成基礎(chǔ)用戶物品偏好值矩陣,將用戶對某個物品的偏好值作為一個向量來計算物品之間的相似度,調(diào)用mahout-itembased接口(mahout-itembased接口為優(yōu)選方式,也可以采用其他方式計算物品相似度,如基于物品本質(zhì)內(nèi)容來計算相似度),計算得到物品相似矩陣,并生成t+1初始化推薦列表。基于物品相似矩陣的稀疏性,我們采用稀疏矩陣來保存物品相似矩陣,具體相似矩陣存儲格式為:(itema,itemb,similarity),以物品編號210054274的相似度數(shù)據(jù)如下表2所示:

表2

步驟c,采用基于mapreduce開發(fā)的批處理近實時推薦方法或基于sparkstreaming開發(fā)的實時推薦方法進(jìn)行產(chǎn)品推薦。

近實時推薦方法基于mapreduce開發(fā),篩選最新(如5分鐘內(nèi))訪客用戶的所有行為數(shù)據(jù),具體包括如下步驟:

步驟c-1,篩選最新的訪客用戶的所有行為數(shù)據(jù)(包括但不限于visit_trace,uid,產(chǎn)品id,具體操作,點擊時間,產(chǎn)品類型),對數(shù)據(jù)進(jìn)行預(yù)處理,將用戶標(biāo)識統(tǒng)一轉(zhuǎn)換成長整型數(shù)值;本例取得了用戶10001的行為數(shù)據(jù),他在網(wǎng)站上瀏覽了兩個物品(101,104)。

步驟c-2,采用偏好函數(shù)模型轉(zhuǎn)換每個用戶對瀏覽商品的偏好值,將所有用戶對某個物品的偏好值作為一個向量來計算物品之間的相似度,生成實時用戶物品偏好值矩陣?;诓襟Ec-1中得到的行為數(shù)據(jù),本步驟得到的實時用戶物品偏好值矩陣如下表所示:

表3

如果某用戶在實時用戶物品偏好值矩陣中只對一個物品打分,那么不計算他的推薦列表。

步驟c-3,利用步驟b得到的當(dāng)天已保存的物品相似矩陣,采用矩陣乘法,通過下式計算:

物品相似矩陣*實時用戶物品偏好矩陣

從已保存的相似矩陣中得知101,104與其他物品有相似的關(guān)系如下表所示:

表4

通過物品相似矩陣*實時用戶物品偏好矩陣計算得到用戶對這個相似物品的中間結(jié)果,即計算偏好值*對應(yīng)相似度,得到結(jié)果如下表所示:

表5

步驟c-4,基于步驟c-3得到的結(jié)果,計算各用戶在同一物品下的中間值之和,得到各用戶對各商品的預(yù)測值。

例如,用戶10001對物品102的最終預(yù)測分值計算過程是:預(yù)測值=0.805+1.722=2.527。

再過濾掉用戶已瀏覽和已下單商品后,按偏好值大小排序,取排在前面的若干商品為推薦列表,本例取前36個商品。推薦列表被輸入到hbase表中,便于分布式程序調(diào)用推薦數(shù)據(jù)。

作為改進(jìn),步驟c-4中,為了避免推薦熱門產(chǎn)品,加入相似度數(shù)據(jù)作為懲罰因子,通過下式計算得到優(yōu)化后的預(yù)測值:

預(yù)測值=σ中間值/σ相似度

例如,用戶10001對物品102的最終預(yù)測分值計算過程是:預(yù)測值=(0.805+1.722)/(0.23+0.41)=3.948。

最終推薦合并預(yù)測結(jié)果如下表所示:

表6

實時推薦方法基于sparkstreaming開發(fā),其主要步驟與近實時方式近似,不同點在于,本方法設(shè)置時間窗口為5s,每隔5s檢測數(shù)據(jù)流更新情況,一旦更新,則收集更新的數(shù)據(jù)并進(jìn)行推薦。此外,實時用戶物品偏好矩陣保存在spark-rdd數(shù)據(jù)結(jié)構(gòu)中,已保存的物品相似矩陣也被讀取到spark-rdd中,利用spark實現(xiàn)矩陣乘法操作,得到用戶-物品打分值。實時推薦方法流程圖如圖2所示。使用基于內(nèi)存的spark作為執(zhí)行引擎,具有高效和容錯的特性,應(yīng)用sparkstreaming實現(xiàn)推薦算法,能達(dá)到推薦列表實時生成的目的。

我們根據(jù)途牛網(wǎng)15天的點擊流數(shù)據(jù)對本發(fā)明方法進(jìn)行試驗,這些數(shù)據(jù)中的用戶行為數(shù)據(jù)是每天pv數(shù)為2000w左右。如果按照傳統(tǒng)方法每次都對全量數(shù)據(jù)計算推薦列表,推薦程序運行時長大約需要90分鐘。而采用本發(fā)明提供的實時推薦方法,收集最新訪客行為,最近5分鐘內(nèi)的訪客數(shù)基本在1.5w左右,抽取得到這部分訪客的用戶行為后,做標(biāo)識統(tǒng)一化和用戶偏好矩陣預(yù)處理,和已保存的物品相似矩陣做矩陣運算得到推薦列表,則推薦時間可以縮小到秒級內(nèi)完成推薦列表更新。

本發(fā)明方案所公開的技術(shù)手段不僅限于上述實施方式所公開的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 郧西县| 固始县| 武穴市| 北安市| 朝阳区| 磴口县| 绥芬河市| 东台市| 清原| 江陵县| 保定市| 阿合奇县| 左云县| 台南市| 望谟县| 五寨县| 榆中县| 松滋市| 谢通门县| 彝良县| 惠州市| 永城市| 古蔺县| 德钦县| 莱西市| 佛学| 思茅市| 日喀则市| 通城县| 天津市| 乌鲁木齐市| 米易县| 海南省| 西和县| 珲春市| 木兰县| 义马市| 罗平县| 湛江市| 贵南县| 珲春市|