薛 亮,徐 慧,馮尊磊,賈俊鋮
(1.蘇州城市學院 計算機工程系,江蘇 蘇州 215104; 2.蘇州大學文正學院 計算機工程系,江蘇 蘇州 215104; 3.浙江大學 計算機科學與技術學院,浙江 杭州 310027; 4.蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
隨著全球科技的飛速發展,并且在當今社會疫情的背景下,網絡購物已經成為人們日常購物的重要方式。根據中國報告大廳網絡購物行業數據統計,網絡在線的零售交易額正在以每年多于40%的速度增長,在國內電子購物發展非常迅猛的背景下,在線商品交易的用戶數量已經高達8.6億[1]。但根據商務部的相關反映,網絡購物中的一些違法犯罪行為突出,例如:侵犯消費者的合法權益、制售假冒偽劣商品等,已經成為侵權假冒的關鍵手段,為消費者推薦優質的商品也就變得非常必要。針對上述商品信息過載的問題,為了方便、便捷、有效地為用戶提供所需的商品,推薦算法逐漸成為研究熱點。通過分析用戶行為以及物品內容特征,經過一系列的數據處理,幫助用戶獲得需要的信息。推薦算法在網絡購物產品中得到了較為廣泛的應用,但是商家為了提高銷售量使得推薦的商品魚龍混雜,導致消費者難以分辨出自己想要的商品。因此,想要為用戶進行個性化推薦,就必須要對推薦算法有較為深入的研究。
目前,大眾使用的較為主流的推薦算法是協同過濾算法,但傳統的協同過濾算法常常伴有數據稀疏性以及冷啟動的問題。因此,國內外許多專家提出了眾多改進算法。Choi Y等人[2]對用戶的情感進行分類研究,發現可以通過該方式影響電子商務推薦的結果,他們認為可以通過計算機相關技術、機器學習等方法,將用戶的情感分類,再根據分類之后所得到的結果對用戶進行個性化推薦。該系統采用了Naive Bayes(樸素貝葉斯)、SVM和決策樹等方法,通過大量數據集的實驗分析可知決策樹具有更好的分類效果。楊茂保等人[3]通過分析用戶的評論從而發現用戶潛在的偏好,系統主要采用協同過濾算法分析用戶在評論中的情感因素,預測用戶之后的產品需求。
根據上述的研究內容,該文的電子商品推薦采用改進的協同過濾算法實現,通過降低活躍用戶對相似度的影響并且將電子商品本身屬性的質量通過標準差計算獲得其離散性并將該離散值融入進相似度計算的公式,對電子商品的推薦值進行加權處理從而優化推薦的預測效果。最后,在真實的數據集Movie-Lens上對算法的性能進行測試,并且利用人工數據集Mobile-Data在設計實現的電子商品推薦系統上進行推薦性能的實驗測試。
協同過濾推薦算法(collaborative filtering,CF)[4]是迄今為止較為熱門的推薦技術。協同過濾推薦算法的目標是根據用戶之前的喜好和其他志同道合的用戶的意見,為該用戶或者新用戶推薦新項目或者預測他們將對哪些項目感興趣。總的來說,該算法可以實現對某些特定項目的推薦與預測功能。傳統的協同過濾算法主要分為兩類:一是基于用戶的相似度計算進行相關推薦,二是基于物品的相似度計算進行相關推薦。基于用戶的協同過濾推薦算法(user collaborative filtering,User-CF)是通過計算用戶之間的相似度得到與目標用戶志趣相投的用戶,并根據相似度較高的用戶評分,將評分較高的項目信息推薦給目標用戶。基于物品的協同過濾推薦算法(item collaborative filtering,Item-CF)是通過計算物品之間的相似度,舉例來說:如果用戶喜歡物品a,就會向用戶推薦與物品a具有較高相似性的其他物品信息[1]。該文主要采用基于用戶的協同過濾推薦算法,該算法的主要流程如圖1所示。

圖1 傳統的User-CF算法流程
用戶評分矩陣數據模型的構建,主要是根據用戶對物品的評分表,構建出相應的評分矩陣。針對一個系統具有多個用戶與物品信息,記用戶數目為M,物品數目為N,從而根據用戶對物品的評分構建出M×N的用戶-物品的評分矩陣,R=M×N,故Rij表示用戶i對物品j的評分數據。User表示用戶用Useri表征,Item表示物品用Itemj表征。為了更加直觀地表現數據模型的構建過程,假設用戶數M=3,物品數N=4,則構建出一個R=3×4階的用戶-評分矩陣,見表1。其中數據越低表示評分越低,若數值為0表示沒有進行相關的評分。

表1 用戶評分

續表1
根據上述表格分析:假設要為User1推薦物品,就先要找到與該用戶有相同興趣的用戶,通過觀察上表發現User2和User1均對Item1具有相同的評分,然而User3對該物品的評分較低為1分,因此選取User2為最近鄰,可見User2對Item3的評分為4分并且User1未對該物品做出任何評分,故可以將Item3推薦給User1,預測User1對Item3的評分也是4分。這里將用戶對電子商品的評分作為輸入,設計出評分表。該表包含多個用戶的評分組合。設計評分矩陣如圖2所示。

圖2 物品的評分矩陣
推薦系統的設計還離不開計算模型中的相似度,在構建完數據模型得到用戶對電子商品的評分矩陣后,根據該矩陣計算數據模型內用戶之間的相似度,繼而得到相似度矩陣。常見的計算用戶之間相似度的方法主要有:余弦相似度(cos)[4]、杰卡德系數(Jaccard)[5]以及皮爾遜相關系數(Pearson)[6]等。具體的計算公式如下:
(1)基于余弦的相似度(cos):
(1)
(2)杰卡德系數(Jaccard):
(2)
(3)皮爾遜相關系數(Pearson):
Pearson(u,v)=
(3)
值得指出的是,基于上述傳統的相似度計算公式,在用戶評分矩陣極其稀疏的情況下很難通過直接計算得到真實的最近鄰集合。例如,用戶A的評分數據為(1,2,1),用戶B與用戶C的評分分別為(5,4,5)、(4,5,4)。通過觀察分析可以知道用戶B與用戶C更為相似,但是通過皮爾遜相關系數計算得到用戶A與用戶C最為相似,因此可見無法獲得真正的最近鄰。
傳統的基于用戶評分信息的協同過濾算法[7]在獲得用戶的相似度矩陣后,通過K近鄰的方法獲取與目標用戶最為相似的K個用戶集合,再通過加權評價公式進行項目推薦的預測評分。
常用的預測評分的公式如下:
(4)
該公式是推薦算法評分預測常用的公式,u,v表示兩個不同的用戶,i表示物品,Rv,i表示用戶v對物品i的評分數據,S(u,v)是用戶u與用戶v之間的相似度值。通過計算用戶對與i相似的商品給出的評分總和,以計算對用戶u商品的評分預測,其本質上是對基于皮爾遜相關系數計算后所得的相似度以及最近鄰評分的加權平均數,然后將所計算得到的加權平均數進行排序,從而進行評分預測。
綜上所述,傳統的基于用戶評分信息的協同過濾算法(user collaborative filtering,User-CF),利用一般的相似度計算公式時會受到活躍用戶大量的評分信息以及商品本身質量屬性的影響。首先,為了消除上述相關因素對相似度計算的影響,該文將活躍用戶對商品相似度的貢獻程度降低并且通過計算標準差降低電子商品本身質量對相似度的影響,將兩者計算獲得的系數與皮爾遜相關系數(Pearson)結合。其次,采取對推薦項目的推薦值進行加權處理,從而得到優化后的結果。
在推薦系統中,最為主要的工作就是計算用戶之間的相似度。因此,考慮到活躍用戶以及商品自身質量對相似度計算結果的影響,該文對相似度計算的改進工作主要如下:
(1)活躍用戶的懲罰。
活躍用戶對商品的評分行為過多,由于該類瀏覽過多的商品對商品的甄別性較差,因此,非活躍用戶的評分比活躍用戶的評分更具有價值。該文參考John S. Breese[8]論文中所提出的IUF(inverse user frequency),用于降低活躍用戶對商品評分的貢獻程度,具體的實現公式如下:
(5)
該公式對活躍用戶進行了軟性的懲罰,其中N(u)代表當前訓練的用戶數。
(2)降低電子商品本身質量的影響。
該文利用標準差的計算方式表示電子商品本身的質量因素對用戶評分數值的影響。評分的標準差的值越高,表明電子商品本身的質量因素對用戶評分的影響比重就越大,反之,則表明影響的程度越小。其離散性降低商品本身質量[9]對用戶評分的計算公式如下:
(6)

該文采用皮爾遜相關系數計算用戶之間的相似度,為提高該公式的精確度,將式(5)與式(6)融入公式(3),從而降低活躍用戶對相似度值的貢獻程度以及電子商品本身質量對其的影響,可得修正后的公式如下:
simNP(u,v)=
(7)

最近鄰的搜索(nearest neighbor search,NNS)[9-14]主要是在相似度計算的基礎上,通過獲得的相似度矩陣,找到最近鄰集合。在K近鄰實現的過程中,整個數據分為訓練數據和測試的樣本數據,在分類問題中,使用以下步驟實現K近鄰的算法:
(1)確定K的數值,該K值是特征空間中訓練模型的數量;
(2)根據之前相似度計算獲得各個用戶之間的數據點的距離;
(3)在訓練模型數據中搜索與最接近K值的各個數據點,其中這些數據點必須在訓練模型的觀察點內;
(4)計算K值與各個數據點之間的距離,從而獲得最近鄰集合。
舉例說明根據圖3的特征空間圖,可以獲得最近鄰集合:

圖3 訓練模型特征空間圖
從該特征空間圖中可以找出5的五個最近鄰,即為NNS(5)=[4,1,8,2,7]。獲得最近鄰集合為后續進行評分預測奠定了較好的基礎,在該集合內排序越靠近前面說明與目標項目的相關程度越大。
通過改進的皮爾遜相關系數的公式計算獲得用戶的相似度矩陣,利用K近鄰的方式選擇K個最為相似的用戶,對此K個用戶的相似度值進行推薦值的計算公式如下:
VSim(u,v)=SimNP(u,v)*K*Rvi
(8)
然后通過如下公式進行評分預測:
NPu,i=
(9)
其中,VSim(u,v)是用戶u與用戶v加權后的兩者相似度的值。對比公式(4),此公式引入用戶u與用戶v對已有電子商品評分的均值,優化了原先的加權評價公式。最后,使用該公式進行對用戶的預測推薦。本算法的具體流程如下:
算法:改進的協同過濾算法。
Input:User-Item即用戶與項目的評分矩陣。
Output:預測推薦的項目列表。
Steps:
(1)初始化:根據讀入的用戶、評分和項目的數據文件,通過預處理構建User-Item的評分矩陣;

(3)Foru=1 in User
(4)通過公式(5)計算對活躍用戶的懲罰系數IUF;
(5)根據公式(6)計算商品本身質量的離散系數Di;
(6)將步驟4、5計算獲得的IUF與Di運用于公式(7),從而利用改進后的皮爾遜相關系數公式計算用戶之間的相似性SimNP(u,v);
(7)End
(8)Forn=1 toNdo
(9)遍歷當前用戶的相似度利用選擇K近鄰的方法,選擇K個相似度值較高的用戶形成最近鄰集合;
(10)End
(11)Forn=1 toKdo
(12)遍歷(該過程在for循環內實現)最近鄰集合,通過公式(8)計算當前項目的推薦值;
(13)利用公式(9)進行加權評分預測;
(14)最后根據預測評分的結果進行遍歷,從而得到最終推薦的項目列表。
(15)End
MovieLens100K是電影評分數據集[15],由943個用戶對1 682部電影的100 000個電影的評分組成,評分范圍為1分至5分。數據文件中主要分為用戶編號(userId)、電影編號(itemId)、電影評分(rating)以及時間戳(timestamp),并且該文件中的數據是隨機排序的。在實驗過程中,將MovieLens數據集以7∶3的比例隨機分為訓練集與測試集。
人工數據集Mobile-Data,是利用Intel Core i5的CPU,8 GB運行內存進行爬蟲收集數據,該數據集主要收集匯總了手機信息。將該人工數據集Mobile-Data用于測試電子商品系統的推薦功能。
算法評測指標是計算準確率(Precision)、召回率(Recall)以及覆蓋率(Cov),將該算法(記為new Pearson collaborative filtering,NP-CF)與傳統的User-CF算法進行比較。算法評測的方法如下:
(1)準確率。
準確率是用于衡量推薦算法對整個數據集中訓練集最終做出來多少正確的預測。計算公式如下:
(10)
(2)召回率。
召回率是衡量從測試的數據集中為用戶推薦的信息獲得反饋的數據占用戶實際點擊感興趣的數據的比例。計算公式如下:
(11)
公式(10)與(11)中,R(u)表示推薦算法對用戶u所推薦的項目,T(u)表示用戶u在所訓練的數據集上面喜歡的項目集合。
(3)覆蓋率。
覆蓋率[16]表明預測推薦的項目對目標用戶是否有效,該值越大則說明此算法預測推薦的項目其分布就越均勻。計算公式如下:
(12)
其中,Nu表示預測評分為用戶u所推薦的所有項目的數目,n表示整個數據集中所有項目的數目。
文中算法(NP-CF)與傳統的基于用戶的協同過濾算法(User-CF)進行比較。其一,采用上述的MovieLens數據集比較兩者的準確率、召回率。其二,設計實現電子商品推薦系統,將人工數據集Mobile-Data存入數據庫作為數據來源,利用上述兩種推薦算法實驗測試推薦結果。
3.3.1 MovieLens數據集實驗
采用文中算法(NP-CF)與傳統的基于用戶信息的協同過濾算法(User-CF)在MovieLens數據集并且通過不同的最近鄰個數計算相應的準確率、召回率。這里采用隨機的方式將數據集的70%作為訓練集,遍歷訓練集的數據形成用于計算用戶相似度的倒排表,其次實現相似度的計算并且通過加權評價公式形成預測推薦的列表,最后根據預測推薦的項目計算準確率、召回率,比較二者的數據。
實驗結果見表2和表3。

表2 準確率

表3 召回率
從表2可以看出,文中算法(NP-CF)相比傳統的基于用戶信息的協同過濾算法(User-CF)準確率有了明顯的提高。準確率的比對結果如圖4所示。從圖中可以看出最近鄰個數N對兩種算法的準確率有一定的影響。當N達到30之后,NP-CF的準確率逐漸趨于平穩,在N<50時,該算法的準確率隨著最近鄰個數N的增加而提高。當N>50時,準確率開始下降,但是降低的程度較低。綜上所述,在最近鄰個數變化的情況下,文中算法(NP-CF)的準確率明顯優于傳統的基于用戶信息的協同過濾算法(User-CF)。

圖4 兩種算法準確率比較結果
根據表3對兩種算法召回率的統計,隨著最近鄰數值的增加,兩種算法的召回率都在提高。
比較兩種算法召回率的數值,可見文中算法(NP-CF)召回率提高的更顯著。
從圖5可以看出,通過文中算法(NP-CF)計算獲得的召回率,隨著最近鄰個數的增加,當最近鄰個數N>40時,召回率的數值逐漸趨于穩定在0.09左右,當最近鄰個數N>50時,召回率的數值開始降低。由此得出,文中算法(NP-CF)的召回率具備優勢。

圖5 兩種算法召回率比較結果圖
根據上述兩種評價方法的比較,最終設計實現的電子推薦系統,最近鄰的個數選擇30,根據上述的測試分析可見當最近鄰個數為N=20時,文中算法的準確率達到了28.11%,而傳統的基于用戶的協同過濾算法的準確率只有10.00%,可見預測推薦的結果更為準確。N=30的準確率數值與最近鄰個數N>30的準確率值都比較接近。
3.3.2 人工數據集
采用eclipse開發工具設計實現電子商品推薦系統,將人工數據集Mobile-Data存入數據庫作為數據源,利用文中算法(NP-CF)和傳統的基于用戶信息的協同過濾算法(User-CF),分別設計實現系統的推薦功能并且利用人工數據集Mobile-data進行推薦功能的實例測試。在系統通過多個用戶對不同的手機進行瀏覽與評分,測試系統最終對目標用戶進行推薦,觀察其結果發現能夠形成較好的推薦。測試數據包含4個測試用戶A、B、C、D,用戶喜歡商品包括4個品牌,10個型號手機產品。
采用文中算法(NP-CF)以及傳統的基于用戶信息的協同過濾算法(User-CF)經過該數據集實際測試結果見表4。其中文中算法(NP-CF)最終形成了5個推薦結果,選用傳統的基于用戶信息的協同過算法(User-CF)形成了3個推薦結果。

表4 系統測試結果
根據皮爾遜相關系數相關技術的公式,用戶A與用戶B的相似度值應該與用戶A與用戶D的相似度值相等,但是傳統的基于用戶的系統過濾算法未將用戶D感興趣的電子產品IPHONE11PRO以及HUAWEIMATE30EPRO推薦給目標用戶A,造成該推薦結果的原因是只利用皮爾遜相關系數計算獲得最近鄰,常常無法獲得準確的最近鄰集合,而文中算法(NP-CF)對皮爾遜相關系數進行了優化改進后獲得的推薦結果相較而言更加具有優勢。值得指出的是,該方法推薦結果與最終推薦次序無關,通過計算目標用戶的相似度,最終按照商品的ID順序將推薦的商品添加進入推薦列表。
傳統的基于用戶的協同過濾算法由于受活躍用戶以及商品自身質量因素的影響,得到的預測推薦效果較差。對此,該文將活躍用戶的懲罰系數與商品自身質量對用戶評分的懲罰因子融入皮爾遜相關系數的計算公式。經過MovieLens數據集測試的實驗表明,該算法(NP-CF)能夠有效地提高準確率(Precision)、召回率(Recall),并且在使用人工數據集Mobile-Data作為電子商品推薦系統測試的數據源時,該算法在仿真測試中能夠得到較好的推薦效果。