本文主要是對項亮的推薦系統(tǒng)實踐部分章節(jié)進行了一些總結捡鱼,先從什么是推薦系統(tǒng)開始講起拐叉,然后介紹了評測推薦系統(tǒng)的指標和方法们何,最后介紹了常見的推薦系統(tǒng)算法萄焦。
什么是推薦系統(tǒng)
隨著信息技術和互聯(lián)網的快速發(fā)展,人們逐漸從信息匱乏的時代走入了信息過載的時代冤竹。每天都有海量的信息被生產出來楷扬,用戶如何從中找到自己感興趣的內容變得越來越困難,內容生產者也在想方設法讓自己生成的內容從海量信息中脫穎而出贴见。為了解決信息過載的問題烘苹,歷史上出現(xiàn)過的代表方案有分類目錄和搜索引擎,這兩者都要求用戶明確知道自己需要的內容關鍵詞片部。而推薦系統(tǒng)不需要用戶提供明確的需求镣衡,而是通過分析用戶的歷史行為給用戶的興趣建模,從而主動給用戶推薦能夠滿足它們興趣的內容档悠。推薦系統(tǒng)通過發(fā)掘用戶的行為廊鸥,找到用戶的個性化需求,從而將長尾商品準確地推薦給需要它的用戶辖所,幫助用戶發(fā)現(xiàn)那些他們感興趣但很難發(fā)現(xiàn)的商品惰说。
推薦系統(tǒng)的應用
在互聯(lián)網的各類網站中都可以看到推薦系統(tǒng)的應用,盡管不同網站使用的技術不同缘回,但總的來說幾乎所有的推薦系統(tǒng)應用都是由前臺的展示頁面吆视、后臺的日志系統(tǒng)以及推薦算法系統(tǒng)構成典挑。
- 電子商務:淘寶、京東啦吧、亞馬遜
- 電影/視頻:Netflix您觉、YouTube、愛奇藝
- 音樂:Pandora授滓、網易云音樂琳水、豆瓣FM
- 社交網絡:Facebook、Twitter般堆、LinkedIn在孝、新浪微博
- 個性化閱讀:Digg、Flipboard淮摔、今日頭條
- 基于位置的服務:Foursquare
- 個性化廣告:Facebook Audience Network
推薦系統(tǒng)實驗方法
在推薦系統(tǒng)中私沮,主要有三種評測推薦效果的實驗方法:離線實驗、用戶調查噩咪、在線實驗顾彰。
推薦系統(tǒng)評測指標
- 用戶滿意度:用戶的主觀感受极阅,主要通過用戶調查的方式獲得胃碾,也可以間接從用戶行為統(tǒng)計中得到。
- 預測準確度:度量一個推薦系統(tǒng)或推薦算法預測用戶行為的能力筋搏。評分預測的預測準確度一般通過計算測試集和訓練集的均方根誤差(RMSE)和平均絕對誤差(MAE)得到仆百。TopN推薦的預測準確度一般通過計算測試集和訓練集的準確率(precison)和召回率(recall)得到。
令rui是用戶u對物品i的實際評分奔脐,r^ui是推薦算法給出的預測評分俄周,T是測試集,那么:
RMSE = sqrt(Σu,i∈T(rui-r^ui)2 / |T|)
MAE = Σu,i∈T|rui-r^ui| / |T|
令R(u)是用戶u在訓練集上的推薦結果髓迎,T(u)是用戶u在測試集上的行為結果峦朗,U是用戶集合,那么:
Precision = Σu∈U|R(u) ∩ T(u)| / Σu∈U|R(u)|
Recall = Σu∈U|R(u) ∩ T(u)| / Σu∈U|T(u)|
- 覆蓋率:描述一個推薦系統(tǒng)對物品長尾的發(fā)掘能力排龄。
假設用戶集合為U波势,物品集合為I,推薦系統(tǒng)給每個用戶推薦一個長度為N的物品列表R(u)橄维,那么:
Coverage = |∪u∈UR(u)| / |I|
- 多樣性:為了滿足用戶廣泛的興趣尺铣,推薦列表需要能夠覆蓋用戶不同的興趣領域。
- 新穎性:是指給用戶推薦那些他們以前沒聽說過的商品争舞。
- 驚喜度(serendipity):如果推薦結果和用戶的歷史興趣不相似凛忿,但卻讓用戶覺得滿意,那么就可以說推薦結果的驚喜度很高竞川。
- 信任度:提高信任度的方法是給出合理的推薦解釋店溢。
- 實時性:推薦系統(tǒng)需要實時地更新推薦列表來滿足用戶新的行為變化叁熔,并且需要能夠將新加入系統(tǒng)的物品推薦給用戶。
- 健壯性(robust):衡量一個推薦系統(tǒng)抗擊作弊的能力逞怨。
在眾多指標中者疤,作者認為:對于可以離線優(yōu)化的指標,應該在給定覆蓋率叠赦、多樣性驹马、新穎性等限制條件下,盡量優(yōu)化預測準確度除秀。
常見推薦系統(tǒng)算法
推薦系統(tǒng)是聯(lián)系用戶和物品的媒介糯累,而推薦聯(lián)系用戶和物品的方式主要有3種,如下圖所示册踩。
第一種方法泳姐,首先找到用戶喜歡的物品,然后找到與這些物品相似的物品推薦給用戶暂吉∨置耄基于這種方法可以給出如下的推薦解釋:購買了該商品的用戶也經常購買這些商品。這種方法通常被稱為基于物品的協(xié)同過濾算法(item-based collaborative filtering)慕的。
第二種方法阎肝,首先找到和用戶有相似興趣的其他用戶,然后推薦這些其他用戶喜歡的物品肮街。這種方法通常被稱為基于用戶的協(xié)同過濾算法(user-based collaborative filtering)风题。
第三種方法,首先找到用戶感興趣的物品特征嫉父,然后推薦包含這些特征的物品沛硅。這種方法核心思想是通過隱含特征聯(lián)系用戶興趣和物品,通常被稱為隱語義模型算法(latent factor model)绕辖。
協(xié)同過濾算法
個性化推薦系統(tǒng)的一個重要算法是基于用戶行為分析摇肌,學術界一般將這種類型的算法稱為協(xié)同過濾算法(collaborative filtering)。
顧名思義仪际,協(xié)同過濾就是指用戶可以齊心協(xié)力围小,通過不斷地和網站互動,使自己的推薦列表能夠不斷過濾掉自己不感興趣的物品弟头,從而越來越滿足自己的需求吩抓。
基于物品的協(xié)同過濾算法
基于物品的協(xié)同過濾算法(以下簡稱ItemCF),是目前業(yè)界應用最多的算法赴恨,最早由電子商務公司亞馬遜提出疹娶。ItemCF算法給用戶推薦那些和他們之前喜歡的物品相似的物品,它的主要步驟分為兩步伦连。
(1) 計算物品之間的相似度
(2) 根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表
第一步計算相似度可用余弦相似度公式
令N(i)是喜歡物品i的用戶集合雨饺,那么物品i和物品j的相似度可定義為:
wij = |N(i) ∩ N(j)| / sqrt(|N(i)||N(j)|)
第二步計算用戶對物品的興趣钳垮,如下公式的含義是:和用戶歷史上感興趣的物品越相似的物品,越有可能在用戶的推薦列表中獲得比較高的排名额港。
令puj為用戶u對物品j的興趣饺窿,wji是物品j和物品i的相似度,rui是用戶u對物品i的興趣(對于隱反饋數(shù)據(jù)集移斩,如果用戶u對物品i有過行為肚医,可簡單令rui=1),S(j,K)是和物品j最相似的K個物品的集合向瓷,那么:
puj = Σi∈N(u)∩S(j,K) wjirui
最后選取該用戶興趣值最高的N的物品作為推薦列表肠套。
基于用戶的協(xié)同過濾算法
基于用戶的協(xié)同過濾算法(以下簡稱UserCF),是推薦系統(tǒng)中最古老的算法猖任。UserCF算法先找到和他有相似興趣的其他用戶你稚,然后把那些用戶喜歡的、而他沒有聽說過的物品推薦給他朱躺,它的主要步驟分為兩步刁赖。
(1) 找到和目標用戶興趣相似的用戶集合
(2) 找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶
第一步計算用戶的興趣相似度可用余弦相似度公式
令N(u)是用戶u曾經有過正反饋的物品集合长搀,那么用戶u和用戶v的相似度可定義為:
wuv = |N(u) ∩ N(v)| / sqrt(|N(u)||N(v)|)
第二步計算用戶對物品的興趣
令pui為用戶u對物品i的興趣宇弛,wuv是用戶u和用戶v的相似度,rvi是用戶v對物品i的興趣(對于隱反饋數(shù)據(jù)集盈滴,如果用戶v對物品i有過行為涯肩,可簡單令rvi=1)轿钠,S(u,K)是和用戶u興趣最相似的K個用戶的集合巢钓,那么:
pui = Σv∈N(i)∩S(u,K) wuvrvi
最后選取該用戶興趣值最高的N的物品作為推薦列表。
隱語義模型
隱語義模型算法(以下簡稱LFM)疗垛,是最近幾年推薦系統(tǒng)領域最為熱門的研究話題症汹。LFM算法的核心思想是通過隱含特征聯(lián)系用戶興趣和物品,它的主要步驟分為三步贷腕。
(1) 對物品進行分類
(2) 確定用戶對哪些類的物品感興趣以及感興趣的程度
(3) 對于給定的類背镇,確定物品在這個類的權重,并且選擇性地推薦給用戶
關于如何給物品分類泽裳,一個簡單方案是由編輯來手動分類瞒斩,但這樣存在很強的主觀性和較大的工作量。為了解決這個困難涮总,研究人員提出可以從用戶數(shù)據(jù)出發(fā)胸囱,基于隱含語義分析技術(latent variable analysis)自動找到哪些類,然后進行個性化推薦瀑梗。隱含語義分析技術有很多著名的模型和方法烹笔,比如pLSA裳扯、LDA、隱含類別模型谤职、隱含主題模型饰豺、矩陣分解等。
LFM通過如下公式計算用戶u對物品i的興趣:
Preferenceui = Σk∈[1,K] pu,kqi,k
其中pu,k度量了用戶u的興趣和第k個隱類的關系允蜈,而qi,k度量了第k個隱類和物品i的關系冤吨。這兩個參數(shù)的計算需要一點最優(yōu)化理論或者機器學習的知識,這里不多作介紹饶套。
三種算法的優(yōu)缺點比較
- LFM是一種基于機器學習的算法锅很,有較好的理論基礎。ItemCF/UserCF是基于鄰域的方法凤跑,更多的是一種基于統(tǒng)計的方法爆安,沒有學習過程。
- 假設有M個用戶和N個物品仔引,選取F個隱類扔仓。UserCF需要存儲用戶的相似度矩陣,存儲空間是O(M*M)咖耘。ItemCF需要存儲物品的相似度矩陣翘簇,存儲空間是O(N*N)。LFM需要的存儲空間是O(F*(M+N))儿倒。如果用戶數(shù)很多版保,UserCF將會占據(jù)很大的內存。如果物品數(shù)很多夫否,ItemCF將會占據(jù)很大的內存彻犁。LFM存儲空間最少,這在M和N很大時可以很好地節(jié)省離線計算的內存凰慈。
- 假設有M個用戶和N個物品和K條用戶對物品的行為記錄汞幢。那么,UserCF計算用戶表的時間復雜度是O(N*(K/N)2)微谓,而ItemCF計算物品表的時間復雜度是O(M*(K/M)2)森篷。而對于LFM,如果用F個隱類豺型,迭代S次仲智,那么它的時間復雜度是O(K*F*S)。在一般情況下姻氨,LFM的時間復雜度要稍微高于UserCF和ItemCF钓辆,主要是因為該算法需要多次迭代。
- ItemCF算法支持很好的推薦解釋,它可以利用用戶的歷史行為解釋推薦結果岩馍,但LFM無法提供這樣的解釋碉咆。
總結
在互聯(lián)網應用中可以看到大量推薦系統(tǒng)的應用,它主要解決了信息過載的問題蛀恩,通過算法主動幫助用戶找到自己感興趣的內容疫铜。常見的推薦系統(tǒng)算法有三種,分別代表三種聯(lián)系用戶和物品的方式双谆,它們是:基于物品的協(xié)同過濾算法(ItemCF)壳咕,基于用戶的協(xié)同過濾算法(ItemCF),隱語義模型算法(LFM)顽馋。三種方法各有優(yōu)劣谓厘,需要根據(jù)實際場景選擇合適的算法,通過不斷優(yōu)化指標找到最優(yōu)算法寸谜。