用戶協(xié)同推薦算法思想
如果你喜歡蘋果藻懒、香蕉、芒果等物品视译,另外有個人也喜歡這些物品嬉荆,而且他還喜歡西瓜,則很有可能你也喜歡西瓜這個物品酷含。
所以說鄙早,當一個用戶 A 需要個性化推薦時,可以先找到和他興趣相似的用戶群體 G椅亚,然后把 G 喜歡的限番、并且 A 沒有聽說過的物品推薦給 A,這就是基于用戶的系統(tǒng)過濾算法什往。
? 根據(jù)上述基本原理,我們可以將基于用戶的協(xié)同過濾推薦算法拆分為兩個步驟:
1. 找到與目標用戶興趣相似的用戶集合
2. 找到這個集合中用戶喜歡的慌闭、并且目標用戶沒有聽說過的物品推薦給目標用戶
1. 發(fā)現(xiàn)興趣相似的用戶
????? 通常用 Jaccard 公式或者余弦相似度計算兩個用戶之間的相似度别威。設(shè) N(u) 為用戶 u 喜歡的物品集合,N(v) 為用戶 v 喜歡的物品集合驴剔,那么 u 和 v 的相似度是多少呢:
????? Jaccard 公式:
????? 余弦相似度:
????? 假設(shè)目前共有4個用戶: A省古、B、C丧失、D豺妓;共有5個物品:a、b布讹、c琳拭、d、e描验。用戶與物品的關(guān)系(用戶喜歡物品)如下圖所示:
????? 如何一下子計算所有用戶之間的相似度呢白嘁?為計算方便,通常首先需要建立“物品—用戶”的倒排表膘流,如下圖所示:
????? 然后對于每個物品絮缅,喜歡他的用戶鲁沥,兩兩之間相同物品加1。例如喜歡物品 a 的用戶有 A 和 B耕魄,那么在矩陣中他們兩兩加1画恰。如下圖所示:
????? 計算用戶兩兩之間的相似度,上面的矩陣僅僅代表的是公式的分子部分吸奴。以余弦相似度為例允扇,對上圖進行進一步計算:
????? 到此,計算用戶相似度就大功告成奄抽,可以很直觀的找到與目標用戶興趣較相似的用戶蔼两。
2. 推薦物品
????? 首先需要從矩陣中找出與目標用戶 u 最相似的 K 個用戶,用集合 S(u, K) 表示逞度,將 S 中用戶喜歡的物品全部提取出來额划,并去除 u 已經(jīng)喜歡的物品。對于每個候選物品 i 档泽,用戶 u 對它感興趣的程度用如下公式計算:
????? 其中 rvi?表示用戶 v 對 i 的喜歡程度俊戳,在本例中都是為 1,在一些需要用戶給予評分的推薦系統(tǒng)中馆匿,則要代入用戶評分抑胎。
????? 舉個例子,假設(shè)我們要給 A 推薦物品渐北,選取 K = 3 個相似用戶阿逃,相似用戶則是:B、C赃蛛、D恃锉,那么他們喜歡過并且 A 沒有喜歡過的物品有:c、e呕臂,那么分別計算 p(A, c) 和 p(A, e):
?????? 看樣子用戶 A 對 c 和 e 的喜歡程度可能是一樣的破托,在真實的推薦系統(tǒng)中,只要按得分排序歧蒋,取前幾個物品就可以了
springboot+html商城版本源碼
springboot+vue(elementui)商城版本源碼
springboot+uniapp城版本源碼
springboot+小程序版本源碼
springboot+安卓版本源碼
springcloud和上面任意版本組合