任 悅 閆仁武
(江蘇科技大學計算機學院 鎮江 212000)
隨著現代科技與網絡的飛速發展,計算機技術及其相關知識已經廣泛應用到各行各業中。科技的發展敲開了新世紀的大門,更多的購買方式漸漸被人們挖掘出來,例如亞馬遜、淘票票、天貓以及京東等,推薦系統的推薦效果對電商的發展有著巨大的影響。為了讓人們在電商平臺上更有效地購買商品,大數據時代下的基于用戶的推薦算法[1]發揮了至關重要的作用。
數據挖掘[2]是通過采集大量的數據,分析數據并進行對比,并將隱含在其中且又潛在有用的知識挖掘出來的過程。通過數據挖掘,我們可以減少對比較隱蔽性的知識的忽略,從而提高一些搜索的精準性。個性化推薦系統是推薦系統最為重要的研究方向,它可以通過對用戶的需求及愛好等的分析,利用推薦算法[3]從海量數據中挖掘出用戶感興趣的項目,并將結果推薦給用戶。推薦算法成為了個性化推薦系統中最為重要的部分,其一些屬性會在推薦系統的性能方面有著直接或者間接的影響。
當今社會擁有著龐大的信息體,我們需要在有效的時間內,將信息進行篩選、過濾,提取出對用戶需求有益的數據進行反饋。本文通過對協同過濾算法[4](Collaborative filtering algorithm)的介紹與研究,著重于對基于用戶推薦算法(UserBased)的研究與改進,對原有的UserBased推薦算法進行提升,有效改善個性化推薦以及冷啟動方面的問題。
傳統的協同過濾主要任務是找到與目標對象相似的相鄰用戶,然后將相鄰用戶所喜歡的項目推薦給該用戶。該過程不關注商品的具體內容,可以實現跨類別推薦,提高用戶的驚喜度和用戶滿意度,能應用于復雜的非結構化的推薦系統中[5]。主要過程是構建用戶項目評價數據模型;鄰居相似性計算與最近鄰形成;預測評分與產生推薦,即算法的輸入、算法處理和算法的輸出。
協同過濾推薦技術是推薦系統中最為常見的方法,類型主要有兩種:基于用戶的協同過濾和基于項目的協同過濾[6]。基于用戶的算法是將和目標用戶有相同興趣愛好的用戶所心儀的物品且目標用戶沒有購買的物品推薦給目標用戶。基于項目的算法則是通過目標項目的相似項目集合預測用戶對相似物品的喜歡程度。基于用戶的協同過濾推薦算法的步驟有建立用戶評分表,尋找相似用戶,推薦物品,其所存在的問題如下。
1)冷啟動問題
當一個項目第一次出現的時候,肯定沒有用戶對它做過詳細評價,因此無法對該項目進行評分預測和推薦。同時,因為新物品出現時,用戶評價少,所以準確性也較差[7]。
2)稀疏性問題
在龐大的數據量并且數據稀疏的狀態下,首先最近鄰用戶集的存在比較難發現,其次計算相似性所損耗的費用也會很大。同時,信息常常會丟失,導致推薦效果降低[8]。
3)可擴展性問題
隨著推薦系統用戶和項目數量的不斷增長,協同過濾推薦算法的計算量也會隨之增長,導致系統的性能逐步下降,從而影響用戶體驗[9]。
數據預處理技術[10]是對數據信息進行提前處理,以此來提升數據挖掘的精準度,比如,在進行關鍵詞檢索時,數據預處理能夠對數據庫內的信息資源進行相關的排序處理,來提升檢索精度和效率等。該技術一般經過數據審核、數據篩選、數據排序等,達到數據信息處理效率加強的效果。
預處理技術的工作原理一般包括對數據進行清理、集成、變換、歸約等方面的技術處理,來提升后期數據檢索的精準性。
1)數據清理通過填充缺失值,識別離群點,糾正數據中的不一致等技術進行[11]。
2)數據集成需要考慮許多問題,如冗余,常用的冗余分析法有皮爾遜積距系數、卡方檢驗、數值屬性的協方差等[12]。
3)數據轉換將數據轉換為適合學習的形式,包括數據光滑、聚集、泛化、規范化等[13]。
4)數據歸約技術是用來得到數據集的歸約表示,在接近原始數據完整性的同時將數據集規模從維度到數量大大減小[14]。
基于用戶的協同過濾算法(UserBased)是最早出現的協同過濾算法的基本形式,其工作流程分兩步[15]。第一步是求出用戶之間的相似度,第二步是根據用戶之間的相似度找出與待推薦的用戶最為相似的幾個用戶并根據他們的興趣愛好向待推薦用戶推薦其可能會感興趣的商品。用戶u和v之間的相似度的計算主要可以通過Jaccard 公式如式(1)和余弦相似度公式如式(2)得到。

其中,N(k)為用戶k 感興趣的商品集,·為普通乘法。計算用戶u 對商品i的興趣度加權打分公式如式(3):

S(u,k)包含了和用戶u興趣最接近的k個用戶集合,I(i)表示對商品i 有過打分行為的用戶集合,Wuv表示計算出的用戶u和用戶v的興趣相似度,rvi表示用戶v 對商品i 打的分數。得到了用戶u 對所有商品的感興趣程度分數后,將分數最高的幾個商品作為用戶u 最有可能感興趣的商品推薦給用戶u。
本文采用余弦相似度算法對兩兩用戶進行相似度的計算。首先要建立商品-用戶倒排序如圖1,圖1中a、b、c、d 為用戶,I1、I2、I3、I4、I5為商品,左邊部分表示用戶喜歡的商品,例如用戶a 喜歡的商品是I1、I2、I4,右邊部分表示喜愛每個物品的用戶,例如喜愛商品I1的用戶有a 和b;然后建立用戶相似度矩陣W,如表1,表1 中行和列代表用戶,內部表示兩兩用戶共同喜歡的商品數量;最后計算用戶相似度。

圖1 物品-用戶圖

表1 用戶相似矩陣W
遍歷用戶相似度矩陣中所有的兩兩用戶,根據共同喜歡的商品數量,計算相似度,用到的公式為式(2)。比如a 和b 這兩個用戶,根據式(2)計算如下。
基于相似矩陣的基本運算:

基于物品-用戶圖的解釋:

為了改善冷啟動問題的實時性和提高個性化推薦,對相似度的計算公式修改為如式(4):

其中,i 表示用戶u 和v 都有過正反饋的商品集合,I(i)表示對商品i有過正反饋的用戶數。該公式降低了用戶u和v共同喜歡的物品中熱門物品對他們相似度的影響。簡言之,如果不同用戶對冷門項目采取過同樣的行為,則更能說明他們興趣的相似度是比較高的。
偽代碼是一種非正式的,類似于英語結構的,介于自然語言和計算機語言之間的文字和符號(包括數學符號)來描述算法。本文UserBased 改進算法的偽代碼如下。

本文涉及的實驗所在環境是一臺配置為Intel(R)Core(TM)i5-8250U 處 理 器2.6GHz CP 和1.8GHz 的筆記本。本文實驗選取的數據是使用Movielens 電影評分數據集合,利用其中1482 個用戶對943 個物品的評分記錄,每個用戶至少評價過20 部電影,評分的取值位于整數1~5 之間,通過數值的高低來判斷用戶對該電影的偏愛程度。
本文的實驗結果評估方式主要是兩方面,一個是精準度Precision,一個是召回率Recall。
精準度Precision 描述的最終推薦列表中有多少比例是發生過的用戶-物品評分記錄,如式(5):

召回率Recall反映了有多少比例的用戶-物品評分記錄包含在最終的推薦列表中,如式(6):

對于這兩方面的評估標準,其中,對用戶u 推薦的物品集合定為R(u),用戶u喜歡的物品集合為T(u)。
本文選取精準度和召回率作為推薦算法質量的衡量標準,那么,精準度和召回率的數值越高,說明推薦結果效果越好。從Movielens 電影評分數據集合中選取五組實驗數據分別是50、200、400、800和943。五組數據中選四組為訓練集,另一組為測試集,數據信息如表2。

表2 五組數據信息
在五組實驗數據下將本文提出的算法分別進行推薦,并計算精準度和召回率,最終結果如圖2、圖3所示。

圖2 精準度分布圖

圖3 召回率分布圖
圖2 中,縱軸為精準度值,橫軸為五組實驗數據的組號,根據折線圖,我們很明顯地會發現,本文提出對余弦公式的優化是可取的,精準度越高說明,算法的效果越好,也就是,為用戶推薦的商品越精確。
圖3 中,縱軸為召回率,橫軸同樣為五組實驗數據的組號,根據折線圖,很明顯發現,召回率得到很好的提高,說明為用戶推薦的商品集合R(u)與用戶喜歡的商品集合T(u)的公共商品,在用戶喜歡的集合T(u)中覆蓋更廣。
傳統的協同過濾推薦算法中存在著冷啟動和個性化推薦兩個問題,本文針對這兩個問題進行深入的研究,并通過相關實驗得到了改進方案后的優化實驗結果。本文將UserBased 推薦算法稍作優化,增加了推薦結果的精準度,并根據數據集分組進行相關實驗。通過實驗得到,本文的改進算法可以優化推薦算法的冷啟動和個性化推薦問題,從而提高大數據環境下的數據處理能力,給用戶得到更好的使用體驗。