簡介
為了讓用戶從大量信息中找到自己感興趣的信息,推薦系統已逐漸成為電子商務中一個必不可少的工具,並且得到研究者的關注。協同過濾推薦系統是目前為止成功、且運用最多的推薦技術,與傳統的直接分析內容進行推薦不同,基於用戶的協同過濾推薦系統通過分析用戶興趣,在用戶群中找到與指定用戶的相似用戶,綜合戶對該項目的喜好程度。
為找這些相似用戶對同一項目的評價,預測出該用到目標用戶的最近鄰居進行推薦,必須度量用戶之間的相似性,然後選擇相似性最高的若干用戶,作為目標用戶的最近鄰居。目標用戶的最近鄰居查詢是否準確,直接關係到整個推薦系統的推薦質量,而要想準確查詢目標用戶,需要準確計算不同用戶之間的相似性,所以如何準確計算用戶之間相似性就成為提高推薦準確率的關鍵。計算用戶之間相似性的方法主要包括餘弦相似性,修正的餘弦相似性以及相關相似性等。
相似性度量
相似性度量,即綜合評定兩個事物之間相近程度的一種度量。兩個事物越接近,它們的相似性度量也就越大,而兩個事物越疏遠,它們的相似性度量也就越小。相似性度量的給法種類繁多,一般根據實際問題進行選用。常用的相似性度是有:相關係數(衡量變數之間接近程度),相似係數(衡量樣品之間接近程度),若樣品給出的是定性數據,這時衡量樣品之間接近程度,可用樣本的匹配係數、一致度等。
用數量化方法對事物進行分類,就必須用數量化方法描述事物間的相似程度。一個事物常常需要用多個變數來刻畫,如對一群用p個變數描述的樣本點進行分類,則每個樣本點可看做是p維空間的一個點,很自然的想到用距離來度量樣本點間的相似程度。
相似性度量方法
協同過濾推薦技術中一個必不可少的步驟是計算目標用戶與其他用戶之間的相似性,從而生成最近鄰居集合,進而產生推薦,傳統的相似性計算方法有以下3種。
餘弦相似性
用向量和分別表示用戶i 和用戶j 的評分向量,而它們的相似性就是通過計算向量之間夾角的餘弦來進行度量,則用戶x 和用戶y 之間的相似性為
修正餘弦相似性
考慮到用戶之間評分尺度的不同,公式中利用用戶的平均評分作出了一定的修正,即用戶i 和用戶j 之間的相似性。
相關相似性
用戶之間的相似性通過計算兩個用戶評分向量之間的線性關係來進行衡量,則用戶i 和用戶j 之間的相似性
餘弦相似性度量方法把用戶評分看作一個向量,用向量的餘弦夾角來度量用戶間的相似性,然而沒有包含用戶評分的統計特徵;修正的餘弦相似性方法在餘弦相似性的基礎上,減去了用戶對項目的平均評分,該方法更多地體現了用戶間的相關性而非相似性;相關相似性方法依據雙方共同評分的項目進行用戶相似評價,能夠更好地體現用戶的相似程度,但相關相似性在計算用戶之間相似性上還存在著一些問題。
相關相似性缺點
下面通過具體事例說明相關相似性存在的問題:
(1)未考慮用戶評分項的數量對相似度的影響。
表1中,行與列的交叉點表示用戶(1 ~5)對項目(1~3)的一些評分值。直觀來看,User1和User5用3個共同的評分項,並且給出的評分趨勢相同,User1與User4隻有2個相同評分項,雖然他們的趨勢也相似,但由於User4對Item2的評分未知,可能是User4對Item2未發生行為,或者對Item2很討厭,所以更希望User1和Users更相似,但結果是 Userl與User4有著更高的結果。可以看出相關相似性只會對共同評價過的記錄進行計算。
同樣的場景在現實生活中也經常發生,例如用戶A和用戶B各觀看了200部電影,用戶C只看了2部電影,而用戶A和B共同觀看的200部電影完全相同,雖然不一定給出相同或完全相近的評分,但只要他們之間的趨勢相似也應該比另一位用戶C只觀看了2部相同電影的相似度高。但事實並非如此,如果對這兩部電影,兩個用戶給出的相似度相同或很相近,通過相關相關性計算出的相似度會明顯大於觀看了相同的200部電影的用戶之間的相似度;
(2)只有一個共同評分項則無法計算相關性。由公式可以看出,若兩用戶之間只有一個共同的評分記錄或無共同評分記錄,那么將導致分母為0,從這一點也可以看出,相關相似性不適用於冷啟動問題。但是,這一特性也有它的好處,當無法計算相關相似性可以認為這兩個用戶之間沒有任何相關性,即他們之間的相似性為零。
相似性計算方法
常態分配函式
常態分配是一個在數學、物理及工程等領域都非常重要的機率分布函式。
通過式可以看出,當 時f(x)達到最大值,而當 的值越大, 的值越小。
修正函式
將在常態分配函式的基礎上,設用戶x 的評分項目個數為m,用戶y的評分項目個數為n,max(m,n)表示用戶,和用戶y評分項目集合中評分項目個數較大的項目數,令常態分配函式中 ,經過變換得到函式
易知,當m=n時, 取得最大值為1,當 越大,的值越小隨著不斷增加,
逐漸從1趨近於0,且 。
改進後的相似性計算方法
正是由於相關相似性沒有考慮用戶評分記錄項的數量對相似度的影響,而導致了兩用戶A和C觀看了相同2部電影的相似度會明顯大於觀看了相同200部電影的用戶A和B之間的相似度。故可以在相關相似性的基礎上添加一個修正函式來修正兩用戶之間由評分項目數量差距帶來的負面影響,即
在前面例子的基礎上,由於用戶A和用戶B有過的評分電影完全相同,則用戶A和用戶B之間的修正函式為: ;而用戶A和用戶C有過的評分電影只有兩部,且二者觀看電影數量差距較大,則用戶A和用戶C之間的修正函式為f(198) =0.376。
假設有5個用戶User5~User5,且他們的評分項目數為200,100,70,30和10,則他們之間的懲罰函式值如表2所示。
表2中行與列的交叉點為兩用戶的修正函式數值,易知:當兩用戶的評分項目數差距越大時,修正函式對其相關相似性的修正力度也就越大,這正好符合文中的預期。