三分鐘了解協(xié)同過濾算法

1 評論 22242 瀏覽 66 收藏 8 分鐘
🔗 B端产品需要更多地依赖销售团队和渠道合作来推广产品,而C端产品需要更多地利用网络营销和口碑传播来推广产品..

計算用戶/物品相似度,以相似度作為權(quán)重,對不同物品進行評分預(yù)測,從而實現(xiàn)物品。

什么是協(xié)同過濾

先舉個生活中的場景,你想聽歌卻不知道聽什么的時候,會向你身邊與你品位類似的朋友求助,從而獲得他的推薦。協(xié)同過濾(Collaborative Filtering,簡稱CF)就像與你品味相近的朋友,通過對大量結(jié)構(gòu)化數(shù)據(jù)進行計算,找出與你相似的其他用戶(user)或與你喜歡的物品(item)相似的物品,從而實現(xiàn)物品推薦。

協(xié)同過濾分為兩類:基于用戶的協(xié)同過濾(User-Based CF)和基于物品的協(xié)同過濾(Item-Based CF)。結(jié)合前文的介紹便不難理解分別的應(yīng)用場景。

計算相似度之前需要先準備一些如下表所示的數(shù)據(jù)集:

它是一種表達不同人對不同物品偏好的方式,例如音樂應(yīng)用可以用0和1表示喜歡不喜歡和喜歡。

User-Based CF

如果你和小明對于音樂的品位相似,假如小明喜歡聽Adele,那么你也有可能喜歡聽。好了,問題來了:

  • 如何衡量兩個用戶是否相似?
  • 如何根據(jù)相似用戶推薦物品?

相似度計算

相似度通過如下公式計算得到:

y = f(data, user1, user2)

其中,data就是前文提到的數(shù)據(jù)集,user1和user2表示要比較的兩個用戶或物品。書中主要介紹了兩種相似度計算函數(shù):歐幾里得距離評價、皮爾遜相關(guān)度評價。

(1)歐幾里得距離

它以經(jīng)過人們一致評價的物品為坐標軸,然后將參與評價的人繪制到圖上,并考察他們彼此間的距離遠近。輸出滿足y∈[0,1],1表示user1和user2具有相同的偏好,0表示user1和user2偏好不同。

(2)皮爾遜相關(guān)度

它是比歐幾里得距離更復(fù)雜的一種表示相似度的方法。用于判斷兩組數(shù)據(jù)與某一直線擬合程度,在數(shù)據(jù)不是很規(guī)范的時候(比如,影評者對影片的評價總是相對于平均水平偏離很大時),會傾向于給出更好的結(jié)果。皮爾遜可以簡單理解為cos(x)函數(shù),所以其輸出滿足y∈[-1,1],1表示user1和user2具有相同的偏好,0表示user1和user2偏好不同,-1表示user1和user2偏好負相關(guān)。如果難以理解可以參考:如何理解皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)?

由于本人高數(shù)上下都是勉強及格,對于這兩個函數(shù)理解的也不深,所以沒辦法深入淺出的解釋,不過只要知道每種計算方法的適應(yīng)范圍和局限性就好了。

推薦物品

第一個問題解決了,來看看如何推薦物品。如果只是把相似用戶喜歡的物品推薦給被推薦者,未免過于草率,而且又該如何選擇相似用戶呢。

(1)推薦算法

結(jié)合前文數(shù)據(jù)集進行說明:

  • 計算出所有用戶兩兩之間的相似度;
  • 指定一個被推薦者:小明;
  • 找出其他用戶評價過且被推薦者未評價的物品:春風(fēng)吹;
  • 以被推薦者與他人的相似度作為權(quán),將權(quán)與其他用戶對該物品的評分相乘;
  • 【x春風(fēng)吹】一列值之和除以相似度一列值之和,最終結(jié)果(2.875)便為預(yù)測的小明對于春風(fēng)吹的評分。

注:相似度隨便寫的,并非計算所得。

至此可以給出推薦算法公式:

y = f(data, user, sim)

其中,data就是前文提到的數(shù)據(jù)集,user為被推薦者,sim為相似度計算函數(shù),可以根據(jù)場景不同選擇不同的計算函數(shù)。從輸出總選擇評分較高的物品推薦給用戶,從而實現(xiàn)物品推薦。

Item-Based CF

基于物品的推薦思路是:根據(jù)你評價過的物品,找出與其相似的物品。

相似度計算

方法與User CF相同,只是我們需要把前文數(shù)據(jù)集進行轉(zhuǎn)置,并計算所有物品兩兩之間的相似度。

推薦物品

如同User CF,我們不能簡單的推薦與我們偏好物品類似的物品。

(1)推薦算法

  • 計算出所有物品兩兩之間的相似度;
  • 指定一個被推薦者;
  • 找出被推薦者評價過的物品;
  • 以被推薦者評價過的物品與其他物品的相似度作為權(quán),將權(quán)與被推薦者對該物品的評分相乘;
  • 【xXX】一列值之和除以相似度一列值之和,最終結(jié)果便為預(yù)測的被推薦者對于其未評價過物品的評分。

注:相似度隨便寫的,并非計算所得;并且根據(jù)說明需要增加了一些音樂。

至此可以給出推薦算法公式:

y = f(data, itemMatch, user)

其中,data就是前文提到的數(shù)據(jù)集,user為被推薦者,itemMatch為所有物品兩兩之間相似度的數(shù)據(jù)集,計算itemMatch時,可以根據(jù)場景不同選擇不同的計算函數(shù)。從輸出總選擇評分較高的物品推薦給用戶,從而實現(xiàn)基于物品的物品推薦。

如何選擇?

1. 基于物品進行過濾的方式要過于基于用戶的方式,不過它需要維護物品相似度表的額外開銷,這也是它快的原因;

2. 對于稀疏數(shù)據(jù)集,Item-Based CF效果優(yōu)于User-Based CF;

3. 對于密集數(shù)據(jù)集,兩者效果幾乎相同;

4. 最重要的是,結(jié)合應(yīng)用場景選擇合適的方法。

一句話心得

我對于協(xié)同過濾的理解是:

計算用戶/物品相似度,以相似度作為權(quán)重,對不同物品進行評分預(yù)測,從而實現(xiàn)物品。

 

本文由 @會編程的狗 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!
专题
13439人已学习13篇文章
情绪板由能代表用户情绪的文本、元素、图片拼贴而成,能够很好地帮助我们定义设计的方向。本专题的文章分享了如何应用情绪板。
专题
11884人已学习12篇文章
针对新零售行业的发展现状,面向新零售企业的SaaS系统,可以如何进行系统架构和规划?本专题的文章分享了新零售saas架构指南。
专题
15313人已学习14篇文章
交互设计本质上就是设计产品的使用方式的过程,“如何才能做出合理的B端交互决策”是很多人都在思考的问题。本专题的文章分享了B端交互设计指南。
专题
14263人已学习13篇文章
数据仓库是所有产品的数据中心,公司体系下的所有产品产生的所有数据最终都流向数据仓库。本专题的文章分享了什么是数据仓库和如何搭建数据仓库。
专题
12157人已学习12篇文章
在商战中,运营设计是至关重要的一部分。本专题的文章分享了运营设计的那些思路和技巧。
专题
15138人已学习12篇文章
做好竞品分析,有助于了解市场行情,精确自身产品定位,发现新的市场机会,进而制订有助于产品后续迭代发展的有效策略。本专题的文章分享了TO B产品如何做竞品分析。