
基于用戶的協(xié)同過濾推薦算法原理和實(shí)現(xiàn)
在推薦系統(tǒng)眾多方法中,基于用戶的協(xié)同過濾推薦算法是最早誕生的,原理也較為簡(jiǎn)單。該算法1992年提出并用于郵件過濾系統(tǒng),兩年后1994年被 GroupLens 用于新聞過濾。一直到2000年,該算法都是推薦系統(tǒng)領(lǐng)域最著名的算法。
本文簡(jiǎn)單介紹基于用戶的協(xié)同過濾算法思想以及原理,最后基于該算法實(shí)現(xiàn)園友的推薦,即根據(jù)你關(guān)注的人,為你推薦博客園中其他你有可能感興趣的人。
基本思想
俗話說“物以類聚、人以群分”,拿看電影這個(gè)例子來說,如果你喜歡《蝙蝠俠》、《碟中諜》、《星際穿越》、《源代碼》等電影,另外有個(gè)人也都喜歡這些電影,而且他還喜歡《鋼鐵俠》,則很有可能你也喜歡《鋼鐵俠》這部電影。
所以說,當(dāng)一個(gè)用戶 A 需要個(gè)性化推薦時(shí),可以先找到和他興趣相似的用戶群體 G,然后把 G 喜歡的、并且 A 沒有聽說過的物品推薦給 A,這就是基于用戶的系統(tǒng)過濾算法。
原理
根據(jù)上述基本原理,我們可以將基于用戶的協(xié)同過濾推薦算法拆分為兩個(gè)步驟:
1. 找到與目標(biāo)用戶興趣相似的用戶集合
2. 找到這個(gè)集合中用戶喜歡的、并且目標(biāo)用戶沒有聽說過的物品推薦給目標(biāo)用戶
1. 發(fā)現(xiàn)興趣相似的用戶
通常用 Jaccard 公式或者余弦相似度計(jì)算兩個(gè)用戶之間的相似度。設(shè) N(u) 為用戶 u 喜歡的物品集合,N(v) 為用戶 v 喜歡的物品集合,那么 u 和 v 的相似度是多少呢:
Jaccard 公式:
余弦相似度:
假設(shè)目前共有4個(gè)用戶: A、B、C、D;共有5個(gè)物品:a、b、c、d、e。用戶與物品的關(guān)系(用戶喜歡物品)如下圖所示:
如何一下子計(jì)算所有用戶之間的相似度呢?為計(jì)算方便,通常首先需要建立“物品—用戶”的倒排表,如下圖所示:
然后對(duì)于每個(gè)物品,喜歡他的用戶,兩兩之間相同物品加1。例如喜歡物品 a 的用戶有 A 和 B,那么在矩陣中他們兩兩加1。如下圖所示:
計(jì)算用戶兩兩之間的相似度,上面的矩陣僅僅代表的是公式的分子部分。以余弦相似度為例,對(duì)上圖進(jìn)行進(jìn)一步計(jì)算:
到此,計(jì)算用戶相似度就大功告成,可以很直觀的找到與目標(biāo)用戶興趣較相似的用戶。
2. 推薦物品
首先需要從矩陣中找出與目標(biāo)用戶 u 最相似的 K 個(gè)用戶,用集合 S(u, K) 表示,將 S 中用戶喜歡的物品全部提取出來,并去除 u 已經(jīng)喜歡的物品。對(duì)于每個(gè)候選物品 i ,用戶 u 對(duì)它感興趣的程度用如下公式計(jì)算:
其中 rvi 表示用戶 v 對(duì) i 的喜歡程度,在本例中都是為 1,在一些需要用戶給予評(píng)分的推薦系統(tǒng)中,則要代入用戶評(píng)分。
舉個(gè)例子,假設(shè)我們要給 A 推薦物品,選取 K = 3 個(gè)相似用戶,相似用戶則是:B、C、D,那么他們喜歡過并且 A 沒有喜歡過的物品有:c、e,那么分別計(jì)算 p(A, c) 和 p(A, e):
看樣子用戶 A 對(duì) c 和 e 的喜歡程度可能是一樣的,在真實(shí)的推薦系統(tǒng)中,只要按得分排序,取前幾個(gè)物品就可以了。
園友推薦
在社交網(wǎng)絡(luò)的推薦中,“物品”其實(shí)就是“人”,“喜歡一件物品”變?yōu)椤瓣P(guān)注的人”,這一節(jié)用上面的算法實(shí)現(xiàn)給我推薦 10 個(gè)園友。
1. 計(jì)算 10 名與我興趣最相似的園友
由于只是為我一個(gè)人做用戶推薦,所以沒必要建立一個(gè)龐大的用戶兩兩之間相似度的矩陣了,與我興趣相似的園友只會(huì)在這個(gè)群體產(chǎn)生:我關(guān)注的人的粉絲。除我自己之外,目前我一共關(guān)注了23名園友,這23名園友一共有22936個(gè)唯一粉絲,我對(duì)這22936個(gè)用戶逐一計(jì)算了相似度,相似度排名前10的用戶及相似度如下:
昵稱 | 關(guān)注數(shù)量 | 共同數(shù)量 | 相似度 |
---|---|---|---|
藍(lán)楓葉1938 | 5 | 4 | 0.373001923296126 |
FBI080703 | 3 | 3 | 0.361157559257308 |
魚非魚 | 3 | 3 | 0.361157559257308 |
Lauce | 3 | 3 | 0.361157559257308 |
藍(lán)色蝸牛 | 3 | 3 | 0.361157559257308 |
shanyujin | 3 | 3 | 0.361157559257308 |
Mr.Huang | 6 | 4 | 0.340502612303499 |
對(duì)世界說你好 | 6 | 4 | 0.340502612303499 |
strucoder | 28 | 8 | 0.31524416249564 |
Mr.Vangogh | 4 | 3 | 0.312771621085612 |
這10名相似用戶一共推薦了25名園友,計(jì)算得到興趣度并排序:
排序 | 昵稱 | 興趣度 |
---|---|---|
1 | wolfy | 0.373001923296126 |
2 | Artech | 0.340502612303499 |
3 | Cat Chen | 0.340502612303499 |
4 | WXWinter(冬) | 0.340502612303499 |
5 | DanielWise | 0.340502612303499 |
6 | 一路前行 | 0.31524416249564 |
7 | Liam Wang | 0.31524416249564 |
8 | usharei | 0.31524416249564 |
9 | CoderZh | 0.31524416249564 |
10 | 博客園團(tuán)隊(duì) | 0.31524416249564 |
11 | 深藍(lán)色右手 | 0.31524416249564 |
12 | Kinglee | 0.31524416249564 |
13 | Gnie | 0.31524416249564 |
14 | riccc | 0.31524416249564 |
15 | Braincol | 0.31524416249564 |
16 | 滴答的雨 | 0.31524416249564 |
17 | Dennis Gao | 0.31524416249564 |
18 | 劉冬.NET | 0.31524416249564 |
19 | 李永京 | 0.31524416249564 |
20 | 浪端之渡鳥 | 0.31524416249564 |
21 | 李濤 | 0.31524416249564 |
22 | 阿不 | 0.31524416249564 |
23 | JK_Rush | 0.31524416249564 |
24 | xiaotie | 0.31524416249564 |
25 | Leepy | 0.312771621085612 |
只需要按需要取相似度排名前10名就可以了,不過看起來整個(gè)列表的推薦質(zhì)量都還不錯(cuò)!
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03