楊歡 王新房



摘要:為解決傳統協同過濾推薦算法數據稀疏、可擴展性差等問題,采用改進預測評分矩陣的協同過濾算法。首先使用基于線性回歸分析的加權Slope One算法,在傳統Slope One算法中加入可信度,提高共同評分基數;然后采用網上標準數據集movielens作為測試數據,結合協同過濾算法進行top-N推薦。實驗結果表明,使用改進預測評分矩陣的協同過濾算法的MEA較小,在近鄰數大于25時達到0.74,表明該算法改善了傳統協同過濾算法數據稀疏、擴展性差問題,降低了推薦誤差,提高了推薦系統準確度。
關鍵詞:協同過濾;線性回歸分析;SlopeOne算法;top-N推薦
DOI:10.11907/rjdk.191026開放科學(資源服務)標識碼(OSID):
中圖分類號:TP312文獻標識碼:A 文章編號:1672-7800(2019)010-0090-04
0引言
隨著Web2.0時代的到來,海量信息涌現在互聯網上,消費者與商家都希望從大量數據中找到有用信息。推薦系統應運而生,它根據用戶歷史數據信息構建用戶興趣模型,從而向用戶推薦有用信息。近年來隨著各大網站的建立及APP的開發(fā),推薦系統被廣泛應用于電子商務、電影視頻、音樂推薦等,亞馬遜、Facebook、京東、淘寶等網站均有屬于自己的個性化推薦系統。推薦算法的應用也顯著提高了推薦系統準確性。
2005年Adomavicius等將主流推薦算法分為3個主要類別:基于內容的推薦、基于協同過濾的推薦和各種組合推薦方法,其中應用最廣的是協同過濾推薦算法。該算法又可分為基于用戶的協同過濾(UBCF)和基于項目的協同過濾(IBCF)。這兩種算法的主要特征是近鄰推薦,根據目標用戶最近鄰購買的商品預測其即將購買的商品。但是隨著時間的推移,商品和用戶數量不斷擴大,且很少用戶會對每個商品進行評價,這就導致了近鄰推薦構成的評分矩陣不是很完整,而且會越來越稀疏,最終導致推薦質量變差,可擴展性下降。
近些年也有很多研究聚焦于該問題。文獻[5]提出了基于高維稀疏數據聚類的協同過濾推薦算法,首先通過聚類處理原有高維稀疏數據,再利用稀疏差異度和集合差異度量公式,在用戶一項目評分矩陣上進行聚類,然后利用協同過濾算法推薦聚類后的矩陣,提高算法推薦精度;文獻[6]利用深度學習算法獲取神經網絡訓練商品的評分,降低數據稀疏性,提高了算法推薦質量;文獻[7]把奇異值分解融合到基于項目的協同過濾中,降低用戶項目矩陣維度,有效緩解了數據稀疏的問題;文獻[8]提出一種有關用戶社交信任關系的改進協同過濾算法,通過用戶關系社交填充評分數據,從而提高協同過濾的推薦性能。
針對傳統推薦算法中數據稀疏、擴展性差等問題,本文提出一種改進預測評分矩陣的協同過濾算法。首先在傳統基于線性回歸分析的Slope One算法基礎上提出加權Slope One算法,考慮到可信度的問題,以共同評價過項目的用戶數作為項目評分加權值,通過加權SlopeOne算法填充稀疏用戶項目評分矩陣,然后結合協同過濾進行top-N推薦。
1協同過濾算法
1.1相似度計算
相似度可衡量事物的相近程度,在本文算法中指兩個用戶對同一個項目的喜好程度(用戶相似度)或兩個項目被同一個用戶喜好的相似程度(項目相似度)。協同過濾推薦算法通常使用的相似度有3種:
(1)余弦相似性。兩個用戶間相似程度可通過余弦夾角獲得,相似度越小,夾角越大;相似度越大,夾角越小。
1.2協同過濾算法原理
2Slope One算法
2.1傳統基于線性回歸模型的Slope One算法
2.2加權Slope One算法
傳統Slope One算法僅根據式(7)求取待推薦用戶的歷史評分,以此推算出該用戶對項目j的評分,由于項目偏差沒有考慮到不參予的用戶基數,因此用戶可信度不同。對于預測評分的項目,共同評分基數越大,則可信度越高。假設m個用戶同時評價項目j和k,而n個用戶同時評價項目j和l,當m>n時,前者置信度大于后者。
在表1的項目一評分矩陣中,“一”代表用戶2對項目1的評分未知或者沒有評分,用戶3對項目3的評分為需要預測的目標用戶的評分,計算項目1與項目2的偏差為((2-1)+(4-2))/2=0.5,由該偏差計算出用戶2對項目1的評分為3+0.5=3.5,項目1與項目3的偏差為2-4=-2,則用戶2對項目1的評分為-2+5=3,由此計算出用戶2對項目1的評分為(3.5+3)/2=3.25,同理可求得用戶3對項目3的預測評分為2.19。由上可知項目1與項目2都評價的用戶數為2,因此權重為2;項目1和項目3都評價的用戶數為1,因此權重為1。
3基于最近鄰的Sloope One智能推薦算法
一般對推薦算法的要求包括:容易實現、便于維護,對新的評分要立即響應、查詢速度快,對新的用戶也要能給出有用的推薦,精度上要有競爭力。
協同過濾推薦算法在研究之初迅速成為信息推薦中一項很受歡迎的技術,特別是IBCF,被廣泛應用于各大網站。但隨著內容復雜性不斷增加及用戶人數不斷增多,協同過濾算法的一些缺點逐漸顯露出來,主要有數據稀疏性、擴展性差、精確性不高等。
傳統Slope One算法的優(yōu)點是實現簡單且易于維護、響應即時,并且用戶新增評分對推薦數據的改變較小,因為在內存中儲存的是物品間的平均差值,新增差值只需進行累加,且范圍只是用戶評分過的產品,在一定程度上算法的準確率也很高。基于以上兩種算法的優(yōu)缺點,本文提出一種新的基于最近鄰的Slope One智能推薦算法。
3.1項目一評分矩陣構成
4實驗結果與分析
基于用戶的協同過濾對測試集中458個用戶分別進行預測評分實驗,采用3種不同的相似度計算方法,最近鄰居數范圍是5~60,得到的平均MAE結果如圖1所示。從中可知,采用不同相似度量對預測精度有一定影響,其中相關相似性精度最差,余弦相似度次之,精度最高的是修正的余弦相似度,所以本次實驗采用修正的余弦相似度。
4種算法對比如圖5所示。從圖5可以看出,UBCF的MAE值會隨著近鄰數的增加而減小,但是當近鄰數增加到35后,算法的MEA值趨于平穩(wěn),不會發(fā)生巨大波動。而傳統Slope One算法的MEA值幾乎不波動,但相對于前兩種算法精度有所提高。而經由均值填充的算法在近鄰數小于10時算法的MEA值高于UBCF,雖然后期算法的MEA值明顯降低,但是相對于本文算法仍然較高。本文算法以加權Slope One算法填充UBCF評分矩陣為例,精度一直高于UBCF,雖然當近鄰數小于13時精度小于Slope One算法,但是后期算法精度明顯提高。
5結語
本文將加權Slope One推薦算法融入到傳統協同過濾算法中,用線性回歸分析填充稀疏的評分矩陣,解決了傳統算法中數據稀疏、可擴展性不強等問題。實驗結果表明,本文算法與傳統協同過濾及Slope One算法相比,推薦精度更高,與平均值填充的協同過濾算法相比,精度也有所提高,更適用于推薦算法研究。
在推薦系統中,推薦算法的研究還需不斷深入,可以加入用戶關系模型和時間戳以及地理位置等因素,提取更多隱含特征使推薦更準確。