任 悅 閆仁武
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212000)
隨著現(xiàn)代科技與網(wǎng)絡(luò)的飛速發(fā)展,計(jì)算機(jī)技術(shù)及其相關(guān)知識(shí)已經(jīng)廣泛應(yīng)用到各行各業(yè)中??萍嫉陌l(fā)展敲開了新世紀(jì)的大門,更多的購買方式漸漸被人們挖掘出來,例如亞馬遜、淘票票、天貓以及京東等,推薦系統(tǒng)的推薦效果對(duì)電商的發(fā)展有著巨大的影響。為了讓人們?cè)陔娚唐脚_(tái)上更有效地購買商品,大數(shù)據(jù)時(shí)代下的基于用戶的推薦算法[1]發(fā)揮了至關(guān)重要的作用。
數(shù)據(jù)挖掘[2]是通過采集大量的數(shù)據(jù),分析數(shù)據(jù)并進(jìn)行對(duì)比,并將隱含在其中且又潛在有用的知識(shí)挖掘出來的過程。通過數(shù)據(jù)挖掘,我們可以減少對(duì)比較隱蔽性的知識(shí)的忽略,從而提高一些搜索的精準(zhǔn)性。個(gè)性化推薦系統(tǒng)是推薦系統(tǒng)最為重要的研究方向,它可以通過對(duì)用戶的需求及愛好等的分析,利用推薦算法[3]從海量數(shù)據(jù)中挖掘出用戶感興趣的項(xiàng)目,并將結(jié)果推薦給用戶。推薦算法成為了個(gè)性化推薦系統(tǒng)中最為重要的部分,其一些屬性會(huì)在推薦系統(tǒng)的性能方面有著直接或者間接的影響。
當(dāng)今社會(huì)擁有著龐大的信息體,我們需要在有效的時(shí)間內(nèi),將信息進(jìn)行篩選、過濾,提取出對(duì)用戶需求有益的數(shù)據(jù)進(jìn)行反饋。本文通過對(duì)協(xié)同過濾算法[4](Collaborative filtering algorithm)的介紹與研究,著重于對(duì)基于用戶推薦算法(UserBased)的研究與改進(jìn),對(duì)原有的UserBased推薦算法進(jìn)行提升,有效改善個(gè)性化推薦以及冷啟動(dòng)方面的問題。
傳統(tǒng)的協(xié)同過濾主要任務(wù)是找到與目標(biāo)對(duì)象相似的相鄰用戶,然后將相鄰用戶所喜歡的項(xiàng)目推薦給該用戶。該過程不關(guān)注商品的具體內(nèi)容,可以實(shí)現(xiàn)跨類別推薦,提高用戶的驚喜度和用戶滿意度,能應(yīng)用于復(fù)雜的非結(jié)構(gòu)化的推薦系統(tǒng)中[5]。主要過程是構(gòu)建用戶項(xiàng)目評(píng)價(jià)數(shù)據(jù)模型;鄰居相似性計(jì)算與最近鄰形成;預(yù)測(cè)評(píng)分與產(chǎn)生推薦,即算法的輸入、算法處理和算法的輸出。
協(xié)同過濾推薦技術(shù)是推薦系統(tǒng)中最為常見的方法,類型主要有兩種:基于用戶的協(xié)同過濾和基于項(xiàng)目的協(xié)同過濾[6]?;谟脩舻乃惴ㄊ菍⒑湍繕?biāo)用戶有相同興趣愛好的用戶所心儀的物品且目標(biāo)用戶沒有購買的物品推薦給目標(biāo)用戶?;陧?xiàng)目的算法則是通過目標(biāo)項(xiàng)目的相似項(xiàng)目集合預(yù)測(cè)用戶對(duì)相似物品的喜歡程度?;谟脩舻膮f(xié)同過濾推薦算法的步驟有建立用戶評(píng)分表,尋找相似用戶,推薦物品,其所存在的問題如下。
1)冷啟動(dòng)問題
當(dāng)一個(gè)項(xiàng)目第一次出現(xiàn)的時(shí)候,肯定沒有用戶對(duì)它做過詳細(xì)評(píng)價(jià),因此無法對(duì)該項(xiàng)目進(jìn)行評(píng)分預(yù)測(cè)和推薦。同時(shí),因?yàn)樾挛锲烦霈F(xiàn)時(shí),用戶評(píng)價(jià)少,所以準(zhǔn)確性也較差[7]。
2)稀疏性問題
在龐大的數(shù)據(jù)量并且數(shù)據(jù)稀疏的狀態(tài)下,首先最近鄰用戶集的存在比較難發(fā)現(xiàn),其次計(jì)算相似性所損耗的費(fèi)用也會(huì)很大。同時(shí),信息常常會(huì)丟失,導(dǎo)致推薦效果降低[8]。
3)可擴(kuò)展性問題
隨著推薦系統(tǒng)用戶和項(xiàng)目數(shù)量的不斷增長,協(xié)同過濾推薦算法的計(jì)算量也會(huì)隨之增長,導(dǎo)致系統(tǒng)的性能逐步下降,從而影響用戶體驗(yàn)[9]。
數(shù)據(jù)預(yù)處理技術(shù)[10]是對(duì)數(shù)據(jù)信息進(jìn)行提前處理,以此來提升數(shù)據(jù)挖掘的精準(zhǔn)度,比如,在進(jìn)行關(guān)鍵詞檢索時(shí),數(shù)據(jù)預(yù)處理能夠?qū)?shù)據(jù)庫內(nèi)的信息資源進(jìn)行相關(guān)的排序處理,來提升檢索精度和效率等。該技術(shù)一般經(jīng)過數(shù)據(jù)審核、數(shù)據(jù)篩選、數(shù)據(jù)排序等,達(dá)到數(shù)據(jù)信息處理效率加強(qiáng)的效果。
預(yù)處理技術(shù)的工作原理一般包括對(duì)數(shù)據(jù)進(jìn)行清理、集成、變換、歸約等方面的技術(shù)處理,來提升后期數(shù)據(jù)檢索的精準(zhǔn)性。
1)數(shù)據(jù)清理通過填充缺失值,識(shí)別離群點(diǎn),糾正數(shù)據(jù)中的不一致等技術(shù)進(jìn)行[11]。
2)數(shù)據(jù)集成需要考慮許多問題,如冗余,常用的冗余分析法有皮爾遜積距系數(shù)、卡方檢驗(yàn)、數(shù)值屬性的協(xié)方差等[12]。
3)數(shù)據(jù)轉(zhuǎn)換將數(shù)據(jù)轉(zhuǎn)換為適合學(xué)習(xí)的形式,包括數(shù)據(jù)光滑、聚集、泛化、規(guī)范化等[13]。
4)數(shù)據(jù)歸約技術(shù)是用來得到數(shù)據(jù)集的歸約表示,在接近原始數(shù)據(jù)完整性的同時(shí)將數(shù)據(jù)集規(guī)模從維度到數(shù)量大大減?。?4]。
基于用戶的協(xié)同過濾算法(UserBased)是最早出現(xiàn)的協(xié)同過濾算法的基本形式,其工作流程分兩步[15]。第一步是求出用戶之間的相似度,第二步是根據(jù)用戶之間的相似度找出與待推薦的用戶最為相似的幾個(gè)用戶并根據(jù)他們的興趣愛好向待推薦用戶推薦其可能會(huì)感興趣的商品。用戶u和v之間的相似度的計(jì)算主要可以通過Jaccard 公式如式(1)和余弦相似度公式如式(2)得到。
其中,N(k)為用戶k 感興趣的商品集,·為普通乘法。計(jì)算用戶u 對(duì)商品i的興趣度加權(quán)打分公式如式(3):
S(u,k)包含了和用戶u興趣最接近的k個(gè)用戶集合,I(i)表示對(duì)商品i 有過打分行為的用戶集合,Wuv表示計(jì)算出的用戶u和用戶v的興趣相似度,rvi表示用戶v 對(duì)商品i 打的分?jǐn)?shù)。得到了用戶u 對(duì)所有商品的感興趣程度分?jǐn)?shù)后,將分?jǐn)?shù)最高的幾個(gè)商品作為用戶u 最有可能感興趣的商品推薦給用戶u。
本文采用余弦相似度算法對(duì)兩兩用戶進(jìn)行相似度的計(jì)算。首先要建立商品-用戶倒排序如圖1,圖1中a、b、c、d 為用戶,I1、I2、I3、I4、I5為商品,左邊部分表示用戶喜歡的商品,例如用戶a 喜歡的商品是I1、I2、I4,右邊部分表示喜愛每個(gè)物品的用戶,例如喜愛商品I1的用戶有a 和b;然后建立用戶相似度矩陣W,如表1,表1 中行和列代表用戶,內(nèi)部表示兩兩用戶共同喜歡的商品數(shù)量;最后計(jì)算用戶相似度。
圖1 物品-用戶圖
表1 用戶相似矩陣W
遍歷用戶相似度矩陣中所有的兩兩用戶,根據(jù)共同喜歡的商品數(shù)量,計(jì)算相似度,用到的公式為式(2)。比如a 和b 這兩個(gè)用戶,根據(jù)式(2)計(jì)算如下。
基于相似矩陣的基本運(yùn)算:
基于物品-用戶圖的解釋:
為了改善冷啟動(dòng)問題的實(shí)時(shí)性和提高個(gè)性化推薦,對(duì)相似度的計(jì)算公式修改為如式(4):
其中,i 表示用戶u 和v 都有過正反饋的商品集合,I(i)表示對(duì)商品i有過正反饋的用戶數(shù)。該公式降低了用戶u和v共同喜歡的物品中熱門物品對(duì)他們相似度的影響。簡言之,如果不同用戶對(duì)冷門項(xiàng)目采取過同樣的行為,則更能說明他們興趣的相似度是比較高的。
偽代碼是一種非正式的,類似于英語結(jié)構(gòu)的,介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)(包括數(shù)學(xué)符號(hào))來描述算法。本文UserBased 改進(jìn)算法的偽代碼如下。
本文涉及的實(shí)驗(yàn)所在環(huán)境是一臺(tái)配置為Intel(R)Core(TM)i5-8250U 處 理 器2.6GHz CP 和1.8GHz 的筆記本。本文實(shí)驗(yàn)選取的數(shù)據(jù)是使用Movielens 電影評(píng)分?jǐn)?shù)據(jù)集合,利用其中1482 個(gè)用戶對(duì)943 個(gè)物品的評(píng)分記錄,每個(gè)用戶至少評(píng)價(jià)過20 部電影,評(píng)分的取值位于整數(shù)1~5 之間,通過數(shù)值的高低來判斷用戶對(duì)該電影的偏愛程度。
本文的實(shí)驗(yàn)結(jié)果評(píng)估方式主要是兩方面,一個(gè)是精準(zhǔn)度Precision,一個(gè)是召回率Recall。
精準(zhǔn)度Precision 描述的最終推薦列表中有多少比例是發(fā)生過的用戶-物品評(píng)分記錄,如式(5):
召回率Recall反映了有多少比例的用戶-物品評(píng)分記錄包含在最終的推薦列表中,如式(6):
對(duì)于這兩方面的評(píng)估標(biāo)準(zhǔn),其中,對(duì)用戶u 推薦的物品集合定為R(u),用戶u喜歡的物品集合為T(u)。
本文選取精準(zhǔn)度和召回率作為推薦算法質(zhì)量的衡量標(biāo)準(zhǔn),那么,精準(zhǔn)度和召回率的數(shù)值越高,說明推薦結(jié)果效果越好。從Movielens 電影評(píng)分?jǐn)?shù)據(jù)集合中選取五組實(shí)驗(yàn)數(shù)據(jù)分別是50、200、400、800和943。五組數(shù)據(jù)中選四組為訓(xùn)練集,另一組為測(cè)試集,數(shù)據(jù)信息如表2。
表2 五組數(shù)據(jù)信息
在五組實(shí)驗(yàn)數(shù)據(jù)下將本文提出的算法分別進(jìn)行推薦,并計(jì)算精準(zhǔn)度和召回率,最終結(jié)果如圖2、圖3所示。
圖2 精準(zhǔn)度分布圖
圖3 召回率分布圖
圖2 中,縱軸為精準(zhǔn)度值,橫軸為五組實(shí)驗(yàn)數(shù)據(jù)的組號(hào),根據(jù)折線圖,我們很明顯地會(huì)發(fā)現(xiàn),本文提出對(duì)余弦公式的優(yōu)化是可取的,精準(zhǔn)度越高說明,算法的效果越好,也就是,為用戶推薦的商品越精確。
圖3 中,縱軸為召回率,橫軸同樣為五組實(shí)驗(yàn)數(shù)據(jù)的組號(hào),根據(jù)折線圖,很明顯發(fā)現(xiàn),召回率得到很好的提高,說明為用戶推薦的商品集合R(u)與用戶喜歡的商品集合T(u)的公共商品,在用戶喜歡的集合T(u)中覆蓋更廣。
傳統(tǒng)的協(xié)同過濾推薦算法中存在著冷啟動(dòng)和個(gè)性化推薦兩個(gè)問題,本文針對(duì)這兩個(gè)問題進(jìn)行深入的研究,并通過相關(guān)實(shí)驗(yàn)得到了改進(jìn)方案后的優(yōu)化實(shí)驗(yàn)結(jié)果。本文將UserBased 推薦算法稍作優(yōu)化,增加了推薦結(jié)果的精準(zhǔn)度,并根據(jù)數(shù)據(jù)集分組進(jìn)行相關(guān)實(shí)驗(yàn)。通過實(shí)驗(yàn)得到,本文的改進(jìn)算法可以優(yōu)化推薦算法的冷啟動(dòng)和個(gè)性化推薦問題,從而提高大數(shù)據(jù)環(huán)境下的數(shù)據(jù)處理能力,給用戶得到更好的使用體驗(yàn)。