李 斌,許朝陽,王尚鵬
(1. 福建師范大學(xué)協(xié)和學(xué)院,福建 福州 350117;2. 莆田學(xué)院機(jī)電與信息工程學(xué)院,福建 莆田 351100;3. 福建師范大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,福建 福州 350117)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,用戶越來越多,對(duì)推薦的要求也越來越高。推薦算法通常會(huì)根據(jù)用戶間存在相似屬性作為參考值去選擇用戶。例如,在電商平臺(tái)上,根據(jù)瀏覽、收藏以及購買等幾個(gè)簡單的步驟就可以挑選出用戶感興趣的商品。電子商務(wù)平臺(tái)會(huì)將使用者和產(chǎn)品的互動(dòng)記錄下來,其中含有大量的用戶感興趣的內(nèi)容,但卻不能很好地反映出使用者的喜好,所以很難從消費(fèi)者的興趣中抽取出相關(guān)的信息[1-2],從而影響了消費(fèi)者對(duì)產(chǎn)品的使用。
針對(duì)上述問題,一些專家對(duì)此做了研究,例如劉歡等人[3]提出基于評(píng)分可信度的大數(shù)據(jù)線性回歸推薦算法,優(yōu)先將用戶的興趣漂移度以及活躍度等信息全部考慮到用戶評(píng)分可信度的計(jì)算方法中,引入線性回歸推薦算法,通過優(yōu)化的線性回歸推薦算法對(duì)用戶評(píng)分展開預(yù)測(cè),最終完成大數(shù)據(jù)推薦。陳嘉穎等人[4]提出一種融合語義分析特征提取的推薦算法,通過知識(shí)圖譜將實(shí)體識(shí)別和連接技術(shù)有效結(jié)合,提取項(xiàng)目特征,分析各個(gè)項(xiàng)目特征之間的關(guān)系,組建子知識(shí)庫以及協(xié)同學(xué)習(xí)框架,通過損失函數(shù)優(yōu)化全部特征向量,最終通過用戶—項(xiàng)目表征結(jié)果完成推薦。陸航等人[5]將通過TF-IDF相關(guān)理論計(jì)算權(quán)重取值,引入指數(shù)衰減函數(shù)分析用戶興趣變化規(guī)律,對(duì)用戶興趣相似性和評(píng)分差異性兩者加權(quán)融合處理,得到精準(zhǔn)的用戶最近鄰,進(jìn)而完成預(yù)測(cè)項(xiàng)目評(píng)分以及推薦。
在以上幾種算法的基礎(chǔ)上,提出一種基于多訪問并行特征提取的大數(shù)據(jù)推薦算法。通過提取用戶訪問特征,構(gòu)建訓(xùn)練集,將BiasSVD算法和聚類算法有效結(jié)合,實(shí)現(xiàn)大數(shù)據(jù)推薦。實(shí)驗(yàn)結(jié)果表明,所提算法能夠有效提升覆蓋率和加速比,獲取滿意的大數(shù)據(jù)推薦結(jié)果。
用戶日常訪問的網(wǎng)頁以及使用的應(yīng)用類別全面反映了用戶的興趣傾向。目前,互聯(lián)網(wǎng)上存在一些網(wǎng)址導(dǎo)航類以及網(wǎng)站收錄類的站點(diǎn),對(duì)常用網(wǎng)站展開收錄和分類操作,詳細(xì)的操作步驟如下所示:
1)對(duì)各個(gè)網(wǎng)站點(diǎn)爬蟲處理,得到各個(gè)站點(diǎn)不同類目下全部被收錄網(wǎng)站的域名,采用統(tǒng)一的形式存儲(chǔ)。
2)匯總各個(gè)站點(diǎn)獲取的爬取結(jié)果。
3)對(duì)各個(gè)站點(diǎn)的分類信息匯總和分析,同時(shí)參考國內(nèi)各個(gè)主流網(wǎng)絡(luò)的導(dǎo)航標(biāo)簽,確定使用網(wǎng)站的類目體系以及標(biāo)簽關(guān)鍵字。
4)將相同類別的標(biāo)簽劃分到同一個(gè)表述詞上面,同時(shí)為相同類別的標(biāo)簽分配一樣的類別ID。
將經(jīng)過爬蟲分析以及調(diào)整后的網(wǎng)站分類信息檢索表放置在分布式緩存系統(tǒng)中存儲(chǔ)。將用戶在不同類別網(wǎng)站上形成的記錄數(shù)據(jù)作為基礎(chǔ),組建用戶興趣特征向量。設(shè)定用戶集合為E={e1,e2,e3,…,ei},網(wǎng)站類目集合為W={w1,w2,w3,…,wj}。通過式(1)給出用戶ek的網(wǎng)站訪問行為興趣向量sek:
sek={sk1,sk2,sk3,…,skj}
(1)
式中,skj代表用戶ek在類別為wj的網(wǎng)站形成的訪問記錄。通過式(2)給出全部用戶形成的網(wǎng)站興趣矩陣C:
(2)
其中,用戶em和en之間的網(wǎng)站興趣向量距離可以采用式(3)所示的歐幾里得距離d(em,en)表示:
(3)
電商用戶的每一次訪問記錄均可以表示為一個(gè)4元組,如式(4)所示:
record={user,item,behavior,time}
(4)
式中,user代表用戶;time代表時(shí)間;behavior代表網(wǎng)站類型;item代表商品類型。
訪問記錄是各個(gè)電商平臺(tái)在不干擾用戶正常購物的狀態(tài)下所采集到的數(shù)據(jù),通過訪問記錄可以更加真實(shí)反映用戶的購物模式。利用商品之間的關(guān)聯(lián)性學(xué)習(xí),獲取商品向量。其具體步驟如下所示:
1)獲取交互商品序列集:
根據(jù)用戶的訪問時(shí)間按序排列,并按照需求將其分組,將記錄中的商品提取出來,構(gòu)建交互商品序列集。將序列中的相鄰元素去重處理,促使相鄰的兩個(gè)元素屬于不同的具體商品,最終獲取交互商品序列集seq-set,如式(5)所示:
seq-set={(item1,1,item1,2,…,itemn-1),…,
(itemm,1,itemm,2,…,itemm,n-m)}
(5)
2)訓(xùn)練集的構(gòu)建:
將窗口長度設(shè)為n,在用戶交互商品序列上滑動(dòng),將中間位置的商品p作為輸出,構(gòu)建訓(xùn)練樣本(m,n)。
3)采用item2vec算法學(xué)習(xí)商品的隱向量,同時(shí)構(gòu)建全新的二維矩陣,其中每一行代表一個(gè)商品向量,并對(duì)其初始化處理,以此為依據(jù)搭建輸入層,采用神經(jīng)網(wǎng)絡(luò)對(duì)全部參數(shù)初始化處理,通過交叉熵?fù)p失計(jì)算獲取網(wǎng)絡(luò)損失,更新網(wǎng)絡(luò)參數(shù)。
4)粗粒度用戶興趣點(diǎn)提取:
在向量空間中對(duì)商品向量聚類處理,獲得多個(gè)聚類簇,將其作為聚類中心并計(jì)算平均值,以此構(gòu)建粗粒度用戶興趣點(diǎn)集合。
交互商品序列具有上下文相關(guān)性,以下通過序列特征提取方法獲取用戶訪問特征。通過網(wǎng)絡(luò)神經(jīng)元關(guān)注各個(gè)輸入的特定內(nèi)容,采用神經(jīng)網(wǎng)絡(luò)提取非線性特征,引入分類樹有效解決手寫數(shù)字識(shí)別問題[6-7]。序列特征提取網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 序列特征提取網(wǎng)絡(luò)結(jié)構(gòu)圖
其中,LSTM層對(duì)于各步輸入都具有對(duì)應(yīng)的輸出,選取最后一步輸入到對(duì)應(yīng)的輸出,并與全連接層1連接。其中,網(wǎng)絡(luò)的全連接層主要用于特征提取,將全連接層2的輸出作為序列特征添加到興趣商品預(yù)測(cè)模型的特征集合中。序列特征提取訓(xùn)練集的詳細(xì)操作步驟如下所示[8-9]:
1)獲取交互商品序列集:
即用戶訪問記錄通過時(shí)間序列分組處理,獲取用戶訪問記錄序列集合rec-seq-set,如式(6)所示:
rec-seq-set={(r11,r12,r13,…),
(r21,r22,r23,…),…,(rn1,rn2,rn3,…)}
(6)
2)訓(xùn)練集的構(gòu)建:
對(duì)步驟1)中的用戶訪問記錄序列集合展開遍歷,將記錄中購買的商品設(shè)為樣本輸出,提取交互商品添加到序列u中,直至u相鄰去重長度達(dá)到設(shè)定值,輸出用戶訪問特征。
矩陣分解方法有很多不同的類型,奇異值分解是目前使用比較廣泛的一種方法[10-11]。奇異值分解(SVD)主要是將p×q階的原始評(píng)分矩陣S分解處理,形成三個(gè)大小相同的低秩矩陣,將三者相乘即可輸出最終的分解結(jié)果,如式(7)所示:
Sp×q=U×N×I(h)
(7)
式中,U代表酉矩陣;N代表對(duì)角矩陣;I(h)代表原始矩陣的奇異值。
結(jié)合相關(guān)先驗(yàn)知識(shí),優(yōu)先需要對(duì)評(píng)分矩陣降維處理,同時(shí)選取矩陣中取值比較大的n個(gè)奇異值構(gòu)建對(duì)角矩陣。大部分矩陣分解方法都是利用梯度下降法求解,所以梯度下降法實(shí)現(xiàn)比較容易,但是收斂速度比較快。采用梯度下降法求解偏差矩陣分解,詳細(xì)的操作步驟如下所示:
1)計(jì)算總體平均值;
2)將全部偏置項(xiàng)的取值均設(shè)定為0;
3)將原始評(píng)分矩陣和經(jīng)過降維處理之后的低秩矩陣初始化處理;
4)通過隨機(jī)梯度下降法的迭代獲取經(jīng)過優(yōu)化處理的矩陣以及向量;
5)計(jì)算預(yù)測(cè)評(píng)分。
為了獲取更加精準(zhǔn)的計(jì)算結(jié)果,需要在傳統(tǒng)模型的基礎(chǔ)上引入偏置項(xiàng),降低預(yù)測(cè)結(jié)果和真實(shí)結(jié)果兩者之間的誤差。雖然誤差得到降低,但是仍然存在。通過真實(shí)和預(yù)測(cè)評(píng)分兩者的差值,并對(duì)其調(diào)整誤差,進(jìn)而目標(biāo)用戶能夠獲取最近鄰。
通過改進(jìn)的Pearson相關(guān)系數(shù)獲取用戶和聚類中心的相似度,詳細(xì)的計(jì)算式如下:
I(u,v)
(8)
隨機(jī)選取m個(gè)聚類中心,通過式(8)計(jì)算用戶和聚類中心的相似度,同時(shí)將用戶劃分為m個(gè)簇。將全部相似度計(jì)算結(jié)果排序,根據(jù)排序結(jié)果得到和目標(biāo)用戶相似度最高的簇。在目標(biāo)用戶所在的簇中,將全部相似度計(jì)算結(jié)果排序處理,選取前n個(gè)相似度最高的用戶構(gòu)建目標(biāo)用戶最近鄰集合,如式(9)所示:
(9)
通過式(10)計(jì)算最近鄰集合中各個(gè)用戶對(duì)項(xiàng)目真實(shí)評(píng)分和預(yù)測(cè)評(píng)分兩者之間的平均差值,通過平均差值完成預(yù)測(cè)評(píng)分調(diào)整,得到目標(biāo)用戶的最終評(píng)分:
(10)
式中,rvi代表目標(biāo)用戶的最終評(píng)分;svi代表用戶真實(shí)評(píng)分;pvi代表預(yù)測(cè)評(píng)分。
通過式(11)獲取目標(biāo)用戶對(duì)商品的最終預(yù)測(cè)評(píng)分dui:
(11)
式中,β代表基準(zhǔn)分;bu[u]代表規(guī)范化因子;ci[i]代表用戶偏好向量;Puk代表偏移量絕對(duì)值;Qik代表用戶評(píng)分矩陣。
通過上述分析,將BiasSVD算法和聚類算法兩者有效結(jié)合,最終實(shí)現(xiàn)大數(shù)據(jù)推薦[12-13],詳細(xì)的操作步驟如下所示:
1)收集全部用戶的偏好信息以及評(píng)分記錄,將其整理形成一個(gè)規(guī)格為m×n的評(píng)分矩陣Gm×n,如式(12)所示:
(12)
2)計(jì)算全部評(píng)分記錄的平均值,同時(shí)將用戶和項(xiàng)目的偏好向量初始化處理,將其取值設(shè)定為0;同時(shí)對(duì)用戶特征矩陣和項(xiàng)目特征矩陣初始化處理。
3)通過梯度下降法[14-15]獲取最優(yōu)用戶和項(xiàng)目好向量,同時(shí)得到最優(yōu)用戶和項(xiàng)目特征矩陣。
4)通過式(8)獲取相似度,當(dāng)全部用戶完成分類操作后,即可形成多個(gè)簇,利用簇完成目標(biāo)用戶最近鄰的選擇。
5)通過式(11)計(jì)算獲取目標(biāo)用戶用戶對(duì)項(xiàng)目的最終預(yù)測(cè)評(píng)分,最終完成大數(shù)據(jù)推薦。
為了驗(yàn)證基于多訪問并行特征提取的大數(shù)據(jù)推薦算法的有效性,選取來自A大學(xué)研究組的實(shí)驗(yàn)數(shù)據(jù)集作為測(cè)試樣本,同時(shí)采用5臺(tái)虛擬機(jī)搭建實(shí)驗(yàn)平臺(tái),采用基于評(píng)分可信度的大數(shù)據(jù)線性回歸推薦算法、一種融合語義分析特征提取的推薦算法做對(duì)比。分析用戶網(wǎng)站訪問和原始網(wǎng)站訪問兩者之間的關(guān)系如圖2所示:
圖2 用戶網(wǎng)站訪問和原始訪問之間的關(guān)系
通過分析圖2中的實(shí)驗(yàn)數(shù)據(jù)可知,網(wǎng)站的原始訪問頻率變化概率和用戶通過關(guān)注查找展開的網(wǎng)站訪問頻率兩者走勢(shì)基本一致,由此可見,通過用戶關(guān)注度對(duì)用戶的行為展開分析是切實(shí)可行的,且獲取的數(shù)據(jù)是有效的。
在上述分析的基礎(chǔ)上,為了進(jìn)一步驗(yàn)證所提方法的性能,選取覆蓋率和加速比作為測(cè)試指標(biāo),其中兩者對(duì)應(yīng)的計(jì)算式如下:
1)覆蓋率coverage主要是用來衡量模型挖掘物品的能力,取值越大越好,具體的的計(jì)算式如式(13)所示:
(13)
式中,R(u)代表為用戶推薦一個(gè)長度為N的商品列表;U代表全部商品;P代表商品評(píng)分集合。
2)加速比speedup(p)主要用來衡量算法的可拓展性,詳細(xì)的計(jì)算式如下:
(14)
式中,T1代表網(wǎng)絡(luò)中隨機(jī)一個(gè)節(jié)點(diǎn)的運(yùn)行時(shí)長;Tp代表p個(gè)節(jié)點(diǎn)的運(yùn)行總時(shí)長。
分別采用所提算法、基于評(píng)分可信度的大數(shù)據(jù)線性回歸推薦算法(參考文獻(xiàn)[3]算法)、一種融合語義分析特征提取的推薦算法(參考文獻(xiàn)[4]算法)做對(duì)比,驗(yàn)證不同推薦算法的覆蓋率如圖3所示。
圖3 不同推薦算法的覆蓋率對(duì)比
分析圖3中的實(shí)驗(yàn)數(shù)據(jù)可知,覆蓋率會(huì)隨著推薦列表長度的變化而變化,在推薦列表長度為12時(shí),所提算法的覆蓋率在75%~98%之間。但是和另外兩種推薦算法相比,所提算法的覆蓋率明顯更高一些。因此,說明所提算法具有比較強(qiáng)的挖掘能力,可以更好完成大數(shù)據(jù)推薦。
通過表1分析三種不同算法的加速比變化情況。
表1 不同推薦算法的加速比實(shí)驗(yàn)結(jié)果對(duì)比
經(jīng)過對(duì)比和分析表1中的實(shí)驗(yàn)數(shù)據(jù)可知,在三種大數(shù)據(jù)推薦算法中,在節(jié)點(diǎn)個(gè)數(shù)為35個(gè)時(shí),所提算法的加速比取值為2.7,另外兩種推薦算法的取值分別為2.1和2.0,均低于所提算法。由此可以說明所提算法具有比較好的可拓展性。
針對(duì)傳統(tǒng)大數(shù)據(jù)推薦算法存在的加速比以及覆蓋率取值較低等問題,提出一種基于多訪問并行特征提取的大數(shù)據(jù)推薦算法。經(jīng)過實(shí)驗(yàn)對(duì)比分析可知,所提算法可以具有良好的推薦能力和可拓展性,確保大數(shù)據(jù)推薦結(jié)果的準(zhǔn)確性。為了進(jìn)一步提升大數(shù)據(jù)分析能力以及處理效率,后續(xù)將擴(kuò)大研究范圍,對(duì)數(shù)據(jù)存儲(chǔ)方式展開優(yōu)化,全面提升數(shù)據(jù)的處理速度。