推薦系統(tǒng)的基本算法:基于鄰域的推薦(基于用戶的協(xié)同過濾鸭轮、基于物品的協(xié)同過濾)
http://www.reibang.com/p/01b860b4c5fb
一、基于用戶的協(xié)同過濾:當一個用戶A需要個性化推薦時橄霉,可以先找到和他有相似興趣的其他用戶窃爷,然后把那些用戶喜歡的、而A沒有聽說過的物品推薦給A。
步驟:
1按厘、找到與目標用戶u相似的用戶集合{V}医吊。
方法:計算兩個用戶的興趣相似度。
給定用戶u和用戶v逮京,令N(u)表示用戶u曾經(jīng)有過正反饋的物品集合卿堂,令N(v)為用戶v曾經(jīng)有過正反饋的物品集合,
Jaccard公式簡單地計算u和v的興趣相似度:
或者通過余弦相似度計算:
舉個例子懒棉。用戶A對物品{a,b,d}有過行為草描,用戶B對物品{a,c}有過行為,利用余弦相似度公式計算用戶A和用戶B的興趣相似度為:
如果對所有兩兩用戶都利用余弦相似度計算相似度漓藕,這種方法的的時間復雜度是O(U*U)陶珠,這在用戶數(shù)大的時候非常耗時挟裂。事實上享钞,很多用戶相互之間并沒有對同樣的物品產(chǎn)生過行為,很多的時候|N(u)∩N(v)|=0诀蓉±跏可以首先篩選出≠0的用戶對。
為此渠啤,可以首先建立物品到用戶的倒排表狐肢。對于每個物品都保存對該物品產(chǎn)生過行為的用戶列表。令稀疏矩陣C[u][v]=|N(u)∩N(v)|沥曹。那么份名,假設用戶u和v同時屬于倒排表中K個物品對應的用戶列表,就有C[u][v]=K妓美。從而僵腺,可以掃描倒排表中每個物品對應的用戶列表,將用戶列表中的兩兩用戶對應的C[u][v]加1壶栋。例子展示如下:
2辰如、利用UserCF算法計算和用戶興趣最相似的K個用戶喜歡的物品。
UserCF算法中用戶u對物品i的感興趣程度:
S(u,K)包含和用戶u興趣最接近的K個用戶贵试,N(i)是對物品i有過行為的用戶集合琉兜,wuv是用戶u和用戶v的興趣相似度,rvi代表用戶v對物品i的興趣
二毙玻、基于物品的協(xié)同過濾:這個算法是目前業(yè)界引用最多的算法豌蟋。基于物品的協(xié)同過濾算法給用戶推薦那些和他們之前喜歡的物品相似的物品桑滩。主要通過分析用戶的行為記錄計算物品之間的相似度梧疲。該算法認為,物品A和物品B具有很大的相似度是因為喜歡物品A的用戶大都也喜歡B。
步驟:
1往声、計算物品之間的相似度擂找;
2、根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表浩销。
---------------------------
定義物品的相似度可以用如下公式贯涎,其中 N(i) 是喜歡物品 i 的用戶數(shù),如下公式表示了喜歡物品 i 的用戶中有多少的比例用戶也喜歡 j :
該公式存在一個問題:如果物品 j 很熱門慢洋,那么 Wij 就會很大塘雳,接近1,為避免馬太效應普筹,可以用下面的公式:
該公式懲罰了物品 j 的權重败明,減輕了熱門物品會和很多物品相似的可能性。