周錫玲,張莉敏,田小路,宋強
(廣東理工學院,廣東肇慶,526100)
基于協(xié)同過濾的推薦是個性化推薦系統(tǒng)中使用最廣的技術(shù)之一[1]。但協(xié)同過濾算法存在數(shù)據(jù)稀疏性問題。在某種程度上,用戶的人口統(tǒng)計屬性(年齡,收入等)揭示了用戶的喜好。國內(nèi)外很多學者將用戶的人口統(tǒng)計信息與協(xié)同過濾進行融合來改善系統(tǒng)的推薦質(zhì)量。文獻[2]提出一種挖掘用戶隱含的人口統(tǒng)計信息的方法。該方法能夠更準確的為用戶產(chǎn)生推薦。文獻[3]提出一種基于用戶人口統(tǒng)計與專家信任的協(xié)同過濾算法。實驗表明該方法改善了協(xié)同過濾算法的預測準確率。文獻[4]提出一種融合人口統(tǒng)計屬性的協(xié)同過濾算法,該方法能夠有效提高推薦精度。文獻[5]提出一種混合推薦技術(shù)的推薦模型,該方法解決了數(shù)據(jù)稀疏問題,且提高了系統(tǒng)的推薦質(zhì)量。
根據(jù)停用詞表去掉藥品描述中的停用詞將剩下的詞匯當作特征詞。采用向量空間模型(VSM)將藥品映射為多維空間向量。利用K-means算法對藥品進行聚類。根據(jù)用戶的疾病癥狀找到它所屬的聚類,從該類中篩選出符合其病情的藥品,然后查找出評價過這些藥品的所有用戶,形成用戶-藥品評分矩陣。
(1)用戶評分相似度計算
本文采用修正的余弦相似性來計算用戶之間的評分相似度。用戶a跟用戶b的評分相似度 s im _ r(a,b)計算公式如(1)所示:
其中,i表示用戶a跟用戶b的共同評分藥品,I(a)和I(b)分別表示用戶a與用戶b的評分藥品集,Ra,i和 Rb,i分別表示用戶a和用戶b對藥品i的評分,和分別表示用戶a和用戶b對所有藥品的平均評分。
(2)人口屬性相似度計算
不同年齡段的人使用同種藥品得到的療效有所不同,因此不同年齡段的人對于同種藥品給出的評分也不同。本文將年齡分為7個年齡段:18歲以下、18-24歲、25-34歲、35-44歲、45-54歲、55-65歲和65歲以上。因此,年齡屬性的向量形式表示為 ( n1,n2, … ,n7)。用戶a與用戶b的人口統(tǒng)計屬性相似度 s im _ a(a,b)計算公式如(2)所示:
(3)用戶相似度計算
本文將評分相似度跟人口屬性相似度進行加權(quán)線性融合得到用戶相似度,用戶相似度 s im(a,b)的計算公式如(3)所示:
將用戶相似度按降序排列,采用KNN算法選出排在最前面的K個用戶作為目標用戶a的相似鄰居集 ()Sa。
根據(jù) ()Sa中用戶的評分,目標用戶a在藥品 j上的預測評分計算公式如(4)所示:
其中,Ra和Rk分別表示目標用戶a和用戶k的平均評分,Rk,j表示用戶k對藥品 j的評分。選取目標用戶未評分的且預測評分排在最前的N個藥品推薦給目標用戶。
本文采用的數(shù)據(jù)集是從http://www.datatang.com/data/46261上下載。選取580個用戶對615種藥品的21000次評分。實驗中,隨機選取20%當作測試集,剩下的當作訓練集。
采用MAE來評價本文算法的有效性。其計算公式如(5)所示:
其中n為測試數(shù)據(jù)的數(shù)量,ip為算法的預測評分,ir為實際評分。顯然,MAE值越小,推薦質(zhì)量越好。
(1)α的選取
表1 α對MAE的影響
由表1中數(shù)據(jù)可知,當 的值從0.1增大到0.3時,MAE的值隨著α值的增大而減小,且當α=0.3時,MAE值最小,M AE= 0 .3940,由此可以說明在計算用戶相似度時將用戶評分相似度與人口屬性相似度進行融合,可以提高推薦系統(tǒng)的推薦質(zhì)量。當α從0.4增加到1.0時,MAE值隨著α的增大而不斷增大。由分析可知,當α=0.3時,MAE值最小,推薦質(zhì)量最好。
(2)推薦效果比較
為評價本文提出算法的有效性,將本文算法與傳統(tǒng)基于用戶的協(xié)同過濾推薦算法(User-based CF)、采用人口統(tǒng)計屬性來計算相似度的協(xié)同過濾推薦算法(DAS-based CF)進行比較。比較結(jié)果如表2所示。
表2 MAE值比較
由表2數(shù)據(jù)可知,三種算法的MAE值隨著鄰居個數(shù)的增加而趨于穩(wěn)定,但本文算法的MAE值明顯比其它兩種算法的MAE值低,說明本文在計算用戶相似度時將用戶評分相似度與用戶人口統(tǒng)計屬性相似度進行融合有效地改善了算法的推薦質(zhì)量。
傳統(tǒng)協(xié)同過濾僅根據(jù)用戶-藥品評分矩陣來計算用戶相似度,由于評分矩陣稀疏,用戶相似度計算不準確使得目標用戶的相似鄰居集合選取不準確,從而導致推薦質(zhì)量低,因此本文提出融合人口統(tǒng)計屬性的藥品推薦算法。該方法將藥品描述中的詞匯去掉停用詞后將所有詞匯作為特征詞,采用VSM將藥品映射為多維空間向量。為了降低時間復雜度,離線使用k-means算法進行藥品聚類。根據(jù)目標用戶的疾病癥狀找到其所屬的聚類,從該類中篩選出符合其病情的藥品,然后查找出對這些藥品進行過評分的所有用戶形成用戶-藥品評分矩陣。在用戶評分相似度的基礎上,引入了人口屬性相似度,將用戶評分相似度跟屬性相似度進行加權(quán)線性融合來得到用戶相似度,將用戶相似度按降序排列,采用KNN算法選出排在最前面的K個用戶作為目標用戶a的相似鄰居集。仿真結(jié)果表明,跟傳統(tǒng)協(xié)同過濾推薦算法相比,本文提出算法在推薦精度上有顯著的提高。