欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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



背景技術:

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

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

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



技術實現要素:

為解決上述問題,本發(fā)明公開了一種基于物品相似度的實時推薦方法,能夠將登陸和未登錄用戶的用戶標識進行統(tǒng)一,并定義了更為精確的用戶偏好值函數,更為重要的是根據實時獲取的用戶行為數據進行計算,從而大大提升了推薦效率和計算精確度。

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

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

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

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

所述偏好函數模型如下:

score=i+

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

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

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

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

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

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

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

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

預測值=σ中間值/σ相似度。

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

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

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

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

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

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

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

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

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

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

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

附圖說明

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

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

具體實施方式

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

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

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

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

表1

隨后定義時間權重模型和點擊次數權重模型:

我們認為,距離當前時間越近的用戶行為,越能反映用戶偏好;反之,距離當前時間越久遠的用戶行為,對用戶偏好定義越弱。

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

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

綜合時間權重模型和點擊次數權重模型得到真實的用戶喜好值如下:

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

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

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

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

表2

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

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

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

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

表3

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

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

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

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

表4

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

表5

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

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

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

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

預測值=σ中間值/σ相似度

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

最終推薦合并預測結果如下表所示:

表6

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

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

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

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
余干县| 平阴县| 大田县| 大渡口区| 祁阳县| 北安市| 广安市| 西盟| 安塞县| 济宁市| 陆良县| 郓城县| 沧州市| 靖州| 嘉兴市| 临高县| 大名县| 垫江县| 寻乌县| 徐闻县| 农安县| 新闻| 武隆县| 东莞市| 富川| 和林格尔县| 读书| 廉江市| 罗平县| 大连市| 铜鼓县| 宁海县| 桐乡市| 恩施市| 泾阳县| 合阳县| 阿坝县| 诸城市| 永德县| 潜山县| 新丰县|