吳錦昆,單劍鋒
(南京郵電大學(xué) 電子與光學(xué)工程學(xué)院、微電子學(xué)院,江蘇 南京 210023)
在大數(shù)據(jù)時(shí)代,每個(gè)個(gè)體在日常生活上網(wǎng)產(chǎn)生的一些行為,都會(huì)生成大量的數(shù)據(jù)。這些數(shù)據(jù)對(duì)于互聯(lián)網(wǎng)平臺(tái)來說是描述用戶的重要信息來源,再利用這些數(shù)據(jù)結(jié)合利用協(xié)同過濾算法,能夠促進(jìn)互聯(lián)網(wǎng)平臺(tái)的高效運(yùn)行。當(dāng)人們處在面對(duì)大量的信息與平臺(tái)推送各種各樣的短信時(shí),要從海量的信息中獲取有用的信息是困難的,面對(duì)海量的信息更是一個(gè)令人頭疼至極的問題。所以大數(shù)據(jù)被運(yùn)用的場合越開越普遍,抖音、拼多多、淘寶等這些互聯(lián)網(wǎng)平臺(tái)都會(huì)根據(jù)用戶的歷史行為以及對(duì)產(chǎn)品的偏好,來對(duì)用戶進(jìn)行個(gè)性化、精準(zhǔn)化推薦,給用戶帶來更加良好的體驗(yàn)。
不論是基于用戶還是基于物品的協(xié)同過濾算法,數(shù)據(jù)總是存在稀疏性的問題。文獻(xiàn)[1]中利用隨機(jī)性對(duì)原有的用戶-商品評(píng)分矩陣進(jìn)行填充再進(jìn)行矩陣變換,文獻(xiàn)[2]提出挖掘用戶的相關(guān)信息,文獻(xiàn)[3]提出利用BP神經(jīng)網(wǎng)絡(luò)來預(yù)測(cè)用戶的評(píng)分,從而改進(jìn)數(shù)據(jù)集稀疏性的問題。文獻(xiàn)[4]中考慮用戶的偏好以及物品的內(nèi)在屬性從而改進(jìn)相似度計(jì)算,改進(jìn)了協(xié)同過濾算法相似計(jì)算。文獻(xiàn)[5]提出了一種融合型余弦相似度計(jì)算方法,其中包含了相似度修正參數(shù)和基于用戶屬性的特征向量,解決了用戶之間不同評(píng)價(jià)體系和用戶的不同屬性的問題。文獻(xiàn)[6]提出了一種全新的相似度計(jì)算方法,利用兩個(gè)用戶對(duì)相同物品的評(píng)價(jià)的比值作為相似度計(jì)算的依據(jù),使提出的協(xié)同具有更高的精確度和較低的平均絕對(duì)誤差。文獻(xiàn)[7]利用項(xiàng)目的標(biāo)簽及評(píng)級(jí)信息,引入了時(shí)間加權(quán)因子來解決數(shù)據(jù)的稀疏性的問題。文獻(xiàn)[8]根據(jù)不同用戶的評(píng)分范圍,將用戶分為正常、嚴(yán)格、寬裕和中間四種,提出了基于標(biāo)準(zhǔn)差比例的改進(jìn)和統(tǒng)一的基線改進(jìn)模型,以便消減經(jīng)典基線估計(jì)模型的局限性。文獻(xiàn)[9]根據(jù)Translation-based模型在稀疏的數(shù)據(jù)集上的良好表現(xiàn),將這種模型與遞歸神經(jīng)網(wǎng)絡(luò)模型進(jìn)行融合,提出了Recurrent Translation-based Network模型。文獻(xiàn)[10]采取隨機(jī)梯度下降法優(yōu)化了矩陣分解,結(jié)合譜聚類方法填充方法,有效降低了數(shù)據(jù)的稀疏性對(duì)于準(zhǔn)確性的影響。文獻(xiàn)[11]采用主成分分析法,對(duì)用戶-項(xiàng)目評(píng)分矩陣進(jìn)行降維,再對(duì)K-means算法進(jìn)行改進(jìn),提高了聚類的速度,有效提高了準(zhǔn)確率和召回率。
現(xiàn)今,協(xié)同過濾算法大致分為三類:一類是基于用戶的協(xié)同過濾算法,一類是基于物品的協(xié)同過濾算法,還有一類是基于模型的協(xié)同過濾算法。
協(xié)同過濾算法被廣泛應(yīng)用于人們?nèi)粘I畹姆椒矫婷?。例如音樂、電影、網(wǎng)購等。為了使用戶能夠更加迅速地瀏覽與自己偏好相關(guān)的音樂、視頻、商品,各個(gè)平臺(tái)都在尋找更加適合平臺(tái)的推薦算法,給用戶帶來極致的體驗(yàn)。
協(xié)同過濾算法,主要功能是找出與某一用戶相似的用戶,將相似用戶的所評(píng)級(jí)或消費(fèi)的商品推薦給這個(gè)用戶;或者根據(jù)用戶歷史消費(fèi)過的商品,推薦給用戶相似的商品[12]。分別是基于用戶的協(xié)同過濾算法和基于物品的協(xié)同過濾算法。
在傳統(tǒng)的協(xié)同推薦算法中,計(jì)算相似度的方法主要有兩種:皮爾遜相似度、余弦相似度。該文主要針對(duì)協(xié)同過濾算法中的皮爾遜相似度計(jì)算進(jìn)行改進(jìn)。皮爾遜相似度計(jì)算公式如下:
(1)
余弦相似度類似于求兩個(gè)向量形成夾角的余弦值,根據(jù)用戶對(duì)電影的評(píng)分形成空間向量[13],計(jì)算空間向量形成夾角的余弦值,確定不同用戶之間的相似度。
余弦相似度計(jì)算公式如下:
(2)
(3)
式中,I,U分別表示u1,u2評(píng)價(jià)過的項(xiàng)目的交集,對(duì)i1,i2評(píng)價(jià)過用戶的交集。相較于皮爾遜相似度,余弦相似度中沒有考慮到用戶評(píng)價(jià)的平均分,忽略了用戶自身帶有的評(píng)價(jià)體系。
準(zhǔn)確度的評(píng)價(jià)指標(biāo),是衡量協(xié)同過濾算法準(zhǔn)確度的一個(gè)重要方面。選取合適的評(píng)價(jià)指標(biāo)能夠很好地衡量算法改進(jìn)前后的效果。文獻(xiàn)[14]中,詳細(xì)闡述了推薦系統(tǒng)中的各種評(píng)價(jià)指標(biāo),從預(yù)測(cè)評(píng)分的準(zhǔn)確度上有平均絕對(duì)誤差、均方根誤差,根據(jù)最終的平均絕對(duì)誤差值的大小,從而確定算法的優(yōu)劣,得到的平均絕對(duì)值較小的協(xié)同過濾算法推薦的準(zhǔn)確度較高。從分類的準(zhǔn)確度上有準(zhǔn)確率、召回率,還有一些其他評(píng)價(jià)指標(biāo),深入分析與比較各個(gè)指標(biāo)之間的差異。該文采用平均絕對(duì)誤差(MAE)來衡量改進(jìn)相似度計(jì)算后的推薦算法的性能。
1.2.1 平均絕對(duì)誤差
平均絕對(duì)誤差是最經(jīng)典的計(jì)算真實(shí)評(píng)分與預(yù)測(cè)評(píng)分的差異。表達(dá)式如下:
(4)
1.2.2 均方根絕對(duì)誤差
均方根絕對(duì)誤差,是將絕對(duì)誤差求平方之后,再求平方根。表達(dá)式如下:
(5)
sim(u1,u2)=
(6)
(7)
皮爾遜相似度改進(jìn)前與改進(jìn)后的相似度計(jì)算結(jié)果比較:
在表1中,存在4個(gè)用戶,分別對(duì)四個(gè)物品都進(jìn)行了評(píng)分,依據(jù)式(1)可以計(jì)算出用戶之間的皮爾遜相似度,計(jì)算結(jié)果如式(8)~式(11)所示。
(8)
(9)
(10)
(11)
用戶u1,u2,用戶u1,u3以及用戶u1,u4的相似度都為1,可以判斷出用戶u1,u2,u3,u4之間具有相同的相似度,但是從用戶u1,u2,u3,u4對(duì)電影的評(píng)分的不同可以看出他們之間的相似度應(yīng)該有一定的差異,可以從表中的數(shù)據(jù)判斷出用戶u1,u2之間的相似度應(yīng)該高于用戶u1,u3之間的相似度,用戶u1,u4之間的相似度應(yīng)該高于用戶u1,u2和用戶u1,u3之間的相似度,而不是四者之間具有相同的相似度。
為了解決上述計(jì)算結(jié)果中用戶之間存在差異不明顯的問題,引進(jìn)用戶差異因子來區(qū)分用戶,改進(jìn)后的皮爾遜相似度計(jì)算過程如式(12)~式(15)所示。
(12)
(13)
(14)
(15)
用戶u1,u2之間的相似度為0.5,用戶u1,u3之間的相似度為0.4,用戶u1,u4之間的相似度大約為0.67,用戶u2,u3之間的相似度為0.8,可以看出改進(jìn)后的相似度計(jì)算方式得出用戶u1,u2,u3,u4之間具有不同的相似度。經(jīng)過改進(jìn)后的皮爾遜相似度得到的計(jì)算結(jié)果表明,引入用戶差異因子改進(jìn)的皮爾遜相似度計(jì)算方式,更加能夠體現(xiàn)出不同用戶之間的差異,能夠?qū)χ跋嗨菩暂^高的用戶進(jìn)行更加精細(xì)的區(qū)分。
表1 不同用戶對(duì)已購商品的評(píng)分
仿真過程建立在Spyder平臺(tái)上基于Python3.8版本進(jìn)行,主要建模仿真步驟如下:
(1)導(dǎo)入相關(guān)實(shí)驗(yàn)相關(guān)的Movielens 1m相關(guān)數(shù)據(jù)集。每一次都將數(shù)據(jù)集按照7∶3的比例劃分為訓(xùn)練集和測(cè)試集,經(jīng)過三次得到不同的測(cè)試集與訓(xùn)練集,部分?jǐn)?shù)據(jù)集如表2 所示。
(2)構(gòu)建用戶-項(xiàng)目評(píng)分矩陣,分別采用皮爾遜相似度與改進(jìn)后的皮爾遜相似度計(jì)算公式,來計(jì)算用戶之間的相似度。
(3)根據(jù)計(jì)算得到的相似度,選擇鄰居個(gè)數(shù),預(yù)測(cè)用戶對(duì)測(cè)試項(xiàng)目的評(píng)分。
(4)根據(jù)預(yù)測(cè)得到的評(píng)分計(jì)算MAE值。
表2 Movielen 1m部分?jǐn)?shù)據(jù)集
在表2中UesrID代表用戶編號(hào),MovieID代表電影編號(hào),部分電影編號(hào)對(duì)應(yīng)的電影如表3所示,ratings代表對(duì)應(yīng)的用戶給對(duì)應(yīng)電影的評(píng)分,timestamp代表時(shí)間戳,即用戶對(duì)電影評(píng)分的時(shí)間。
表3 部分電影編號(hào)與對(duì)應(yīng)電影
續(xù)表3
該文采用的數(shù)據(jù)集來自Movielens數(shù)據(jù)集中的ml-1m數(shù)據(jù)集。目前主要的協(xié)同過濾算法基本上都采用Movielens類數(shù)據(jù)集。在ml-1m數(shù)據(jù)集中包含了3 952部電影,6 040個(gè)用戶,評(píng)分在1~5之間。將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集,訓(xùn)練集用來計(jì)算用戶之間的相似度,測(cè)試集用來根據(jù)訓(xùn)練集計(jì)算出的相似度進(jìn)行預(yù)測(cè)評(píng)分[13]。
對(duì)于最近鄰數(shù)分別選取k=25、50、75、100,根據(jù)劃分不同的訓(xùn)練集與測(cè)試集分別進(jìn)行3次仿真實(shí)驗(yàn),對(duì)同一次劃分的訓(xùn)練集和測(cè)試集,先用改進(jìn)前的協(xié)同過濾算法進(jìn)行仿真,然后用改進(jìn)后的協(xié)同過濾算法對(duì)劃分好的數(shù)據(jù)集進(jìn)行仿真,仿真后得到MAE值,然后再對(duì)三次得到的MAE值求平均值,以消除仿真得到的MAE值存在一定的偶然性誤差。經(jīng)過仿真實(shí)驗(yàn)得到不同的最近鄰數(shù)的結(jié)果分別如表4、表5所示。
表4 算法改進(jìn)前MAE值
表5 算法改進(jìn)后MAE值
根據(jù)表4、表5中的第四行中的平均值,得到的MAE平均誤差曲線如圖1所示。
從圖1中可以看出,改進(jìn)后協(xié)同過濾算法的平均MAE值基本上都低于改進(jìn)前的平均MAE值,在近鄰k值選取較小的值時(shí),MAE值下降比較明顯,特別是在最近鄰數(shù)k選取50時(shí),MAE值有較大的下降。在近鄰k取較大值,由于選取的近鄰k值較大,會(huì)降低協(xié)同過濾算法相似度計(jì)算的作用,導(dǎo)致MAE值并沒有明顯的下降。改進(jìn)后的算法在最近鄰數(shù)k選取較大時(shí),效果不夠明顯,也是未來算法改進(jìn)的一個(gè)方向。
圖1 改進(jìn)前后MAE值曲線
因?yàn)閭鹘y(tǒng)的協(xié)同過濾推薦算法在皮爾遜相似度計(jì)算中只考慮用戶之間的線性關(guān)系和用戶的平均分,沒有考慮到每個(gè)用戶更加深層次的評(píng)價(jià)體系,用戶本身的評(píng)價(jià)體系會(huì)對(duì)用戶對(duì)商品的評(píng)分產(chǎn)生一定的影響,所以在利用皮爾遜相似度計(jì)算用戶之間的相似度時(shí)會(huì)出現(xiàn)一定的誤差。
該文考慮到用戶的評(píng)分最大值可能一定程度上構(gòu)成了用戶評(píng)價(jià)體系的一部分,提出了一種改進(jìn)型相似度的協(xié)同過濾算法,即引入了用戶差異因子,改進(jìn)了原有的相似度計(jì)算方式,在相似度計(jì)算中,能夠起到一定的區(qū)分用戶的作用,因此能夠得到較為準(zhǔn)確的相似度,從而提升推薦的準(zhǔn)確度。
根據(jù)在Spyder平臺(tái)基于python3.8仿真后得到的數(shù)據(jù)表明,引入用戶差異因子后的改進(jìn)型皮爾遜相似度計(jì)算方式能夠降低平均絕對(duì)誤差(MAE),可以說該改進(jìn)型協(xié)同過濾算法在準(zhǔn)確度方面的性能有一定的提升。但是當(dāng)鄰居個(gè)數(shù)(k)選取較大時(shí),MAE值沒有較大的改善,未來值得進(jìn)一步探討。
盡管經(jīng)過改進(jìn)后的協(xié)同過濾算法改善了傳統(tǒng)的協(xié)同過濾推薦算法忽略每個(gè)用戶擁有各自的評(píng)分差異,但是依然存在一些問題。首先,該算法增加了一定的計(jì)算量,提升了計(jì)算的復(fù)雜度;其次,沒有解決協(xié)同過濾算法存在的冷啟動(dòng)問題;最后,將數(shù)據(jù)集劃分為測(cè)試集與訓(xùn)練集并沒有解決ml-1m數(shù)據(jù)集中存在稀疏性的問題。因此,改進(jìn)的協(xié)同過濾算法仍然需要進(jìn)一步的完善。