RS(1)–10分鐘了解什麼是推薦系統
- 2020 年 2 月 12 日
- 筆記
總第 110 篇文章,本文大約 3200 字,閱讀大約需要 10 分鐘
2020 年第一篇技術文章,以一個新的系列開始–推薦系統(Recommend System),第一篇文章會簡單介紹推薦系統的定義和應用,目錄如下:
- 什麼是推薦系統
- 你真的需要推薦系統嗎
- 推薦系統的問題模式
- 推薦系統存在的問題
- 推薦系統的應用
什麼是推薦系統
來自維基百科的定義:
推薦系統是一種資訊過濾系統,手段是預測用戶(user)對物品(item)的評分和偏好。
進一步從以下三個方面來回答這個問題
1. 推薦系統能做什麼–推薦系統最終可以把那些會在用戶和物品之間產生的連接提前找出來。
這裡說的連接,含義非常廣泛,凡是能夠產生關係的都是連接,包括用戶對物品的行為,或者用戶的某些屬性和物品的某些屬性。
這裡這麼說的依據是基於這樣一個事實:萬事萬物都有相互連接的大趨勢。
2. 推薦系統需要什麼–需要已經存在的連接,從已有的連接去預測未來的連接。
3. 推薦系統怎麼做–預測用戶評分和偏好。具體說就是機器推薦和人工推薦,也就是通常說的個性化推薦和編輯推薦。
總體來說,推薦系統實際上是在目前資訊爆炸的時代,可以幫助用戶過濾大量無效資訊,獲取到感興趣的資訊或者物品的演算法,並且也可以挖掘出一些長尾物品。當然,過度依賴推薦系統,實際上也可能讓你只接受到同一類的資訊或者單一領域的物品,這也是推薦系統存在的一個問題,探索與利用問題。
推薦系統是如何工作的呢?這裡可以用一個看電影的例子來解釋,比如我們在不確定看什麼電影的時候,通常可能會有這幾種方法來做決定:
- 諮詢朋友。不僅是問朋友,也可能是發個朋友圈或者發微博,即利用社交產品來問這個問題。這種方式在推薦系統中成為社會化推薦(social recommendation),即讓好友推薦;
- 我們也可能因為演員或者導演來決定看什麼電影,可能的做法就是通過搜索引擎來搜索喜歡的演員和導演有沒有在上映的電影,或者是還沒看過的電影。這種方式叫做基於內容的推薦(content-based filtering)
- 我們也還會打開豆瓣,查看豆瓣的電影排行榜,看看哪些高分電影是不錯的,或者通過和自己歷史興趣形似的用戶,查看他們看過的電影,然後選擇一部自己感興趣的來看。這種方式叫做基於協同過濾(collaborative filtering)的推薦,也就是根據相似用戶或者相似物品來進行推薦。
上述也只是3種推薦方式,實際上推薦系統還有其他的推薦方法,但本質上都是需要用戶和物品之間存在連接,通過已有的連接來預測未來的連接。
你需要推薦系統嗎
從兩個方面考慮這個問題:
- 產品的目的。如果一個產品的目的是建立的連接越多越好,那最終需要一個推薦系統。反之,對於工具類的產品,並不需要推薦系統;
- 產品現有的連接。當產品中的物品很少,少到人工可以應付的時候,用戶產生的連接肯定也不多,這時候連接的瓶頸在於物品數量,這時候不適合搭建推薦系統;另一種情況就是物品不少,但用戶產生的連接也不多,這種情況就是用戶留存回訪很少,需要的是找到用戶流失原因,而不是推薦系統。
這裡有一個簡單的判斷是否需要推薦系統的公式:
分子表示增加的連接數量,分母就是增加的活躍用戶數和增加的有效物品數。
這個簡單的指標是這樣的:
- 如果增加連接數主要依靠活躍用戶數和物品數,那麼這個指標會很小,表示不適合推薦系統
- 如果增加的連接數和新增活躍用戶數以及物品關係不大,說明連接數已經有自發增長的趨勢,適合加入推薦系統。
最後,是否需要推薦系統從戰術上看是需要考慮投入產出比的問題,需要組建團隊、購置計算資源、積累數據和花費時間優化等;但如果是戰略問題,那就不需要討論了。
推薦系統的問題模式
根據上文的介紹,推薦系統的目標就是預測用戶和物品的連接,其預測問題模式,從達成的連接目標角度區分,分為兩大類:
- 評分預測
- 行為預測
評分和行為其實是反映了用戶對推薦結果的兩類回饋,前者是一個顯式回饋,直接表明用戶對推薦的物品的喜好程度,而後者更多展示的是隱式回饋,比如用戶僅僅是瀏覽閱讀了推薦的物品,或者說電商類的加入購物車,收藏物品等等。
評分預測
評分預測主要做的事情就是,提前預測用戶對物品的評分,比如對電影評分1-5分,或者是商品打多少顆星星。
一個比較樸素的實現思想:建立一個模型,基於用戶歷史評分的物品來預測分數。
如何衡量預測的好壞,通常可以用均方根誤差(RMSE)來作為損失函數:
其中 n 是樣本的總數, 是用戶對物品的打分,表示模型預測的分數,因此它們的相減就是模型和用戶實際打分的誤差,而 RMSE 只關心絕對值大小。
評分問題主要用於各種點評類產品,比如豆瓣、Imdb等等,但評分推薦存在這些問題:
- 數據不易收集
- 數據品質不能保證,偽造數據門檻低
- 評分的分布不穩定,整體評分在不同時期會差別很大,個人評分也會因時間而有不同標準,人和人之間的標準差很大。
行為預測
行為預測就是利用隱式回饋數據預測隱式回饋的發生概率。行為預測更受到重視的原因有這幾點:
- 數據比顯式回饋更加稠密。評分數據總體來說是很稀疏的;
- 隱式回饋更代表用戶的真實想法。
- 隱式回饋常常和模型的目標函數關聯更密切,也通常更容易在 AB 測試中和測試指標掛鉤。比如 CTR 預估關注的就是點擊這個隱式回饋。
行為預測的方式有很多,常見的是這兩種方式:
- 直接預測行為本身發生的概率,也叫做點擊率預估(CTR預估),但實際應用中也可以是收藏、購買行為的預估;
- 預測物品的相對排序。
推薦系統存在的問題
推薦系統發展到現在,依然還是有些問題一直沒有很好的通用解決方案,並且不容易被重視。
1. 冷啟動問題
推薦系統實際上是數據貪婪型應用,也就是對數據的需求絕無足夠的那一天。
冷啟動問題可以分為:
- 新用戶或者不活躍用戶;
- 新物品或者展示次數較少的物品(長尾物品)
- 系統本身沒有用戶和用戶行為,只有物品數據
通常的解決辦法是:想辦法引入數據,從已有數據中主動學習(一種半監督學習),比如用戶的註冊資訊,物品的描述資訊等等。
2.探索與利用問題
這個問題也叫 EE(Explore & Exploit) 問題:
- 探索:也就是挖掘用戶身上未知的興趣愛好,推薦和用戶興趣不相關或者不相似的物品,包括長尾物品;
- 利用:利用已知的用戶的興趣愛好,推薦相似的物品
通常最好的做法是推薦大部分用戶感興趣的物品,小部分是新的其他領域的物品,比如已知用戶是數碼產品愛好者,那麼大部分推薦的就是電腦、鍵盤等數碼產品,然後推薦少量的其他類的物品,比如運動健身產品或者衣服等;
但這裡需要考慮的就是這個比例的問題,不同的用戶的推薦比例也不一樣,可能有的用戶就是喜歡探索新奇的物品,但有的用戶只喜歡感興趣的物品。
3.安全問題
推薦系統也是存在安全問題,可能會被攻擊,被攻擊的影響有以下幾個:
- 給出不靠譜的推薦結果,影響用戶體驗並最終影響品牌形象;
- 收集了不靠譜的臟數據,這個影響會一直持續留存在產品中,很難完全消除;
- 損失了產品的商業利益,這是直接的經濟損失;
推薦系統的應用
推薦系統的應用特別廣泛,包括電子商務、電影和影片、音樂、社交網路、閱讀、基於位置的服務、個性化郵件和廣告等等。
- 電子商務:中國的淘寶、京東等都有個性化推薦系統,通過用戶瀏覽、點擊、購買、收藏、加入購物車的行為,給用戶推薦相似的商品;
- 電影和影片:比如豆瓣、愛奇藝等影片網站,豆瓣會有根據用戶的評分來獲取用戶的興趣,然後推薦的方式可以是看過這部電影的用戶也喜歡看的電影(基於用戶的協同過濾推薦)或者是其他相似的電影(基於物品的協同過濾)
- 音樂:最有代表性的就是網易雲音樂,其推薦演算法確實是比其他中國的音樂產品要做得更加出色;
- 社交網路:微博,會有多個維度的推薦,熱門話題,同城,或者分領域,娛樂、科技、體育等;
- 閱讀:主要就是各類的新聞門戶網站,其中做得最好的就是今日頭條;
事實上,當產品的用戶和物品數據越來越大的時候,都需要考慮使用個性化推薦系統,給用戶個性化的體驗。
參考
- 《推薦系統實踐》第一章
- 極客時間《推薦系統三十六式》