RS(1)--推薦系統的定義和應用

本文大約 3200 字,閱讀大約須要 10 分鐘算法

2020 年第一篇技術文章,以一個新的系列開始--推薦系統(Recommend System),第一篇文章會簡單介紹推薦系統的定義和應用,目錄以下:安全

  • 什麼是推薦系統
  • 你真的須要推薦系統嗎
  • 推薦系統的問題模式
  • 推薦系統存在的問題
  • 推薦系統的應用

什麼是推薦系統

來自維基百科的定義:微信

推薦系統是一種信息過濾系統,手段是預測用戶(user)對物品(item)的評分和偏好。網絡

進一步從如下三個方面來回答這個問題函數

1. 推薦系統能作什麼--推薦系統最終能夠把那些會在用戶和物品之間產生的鏈接提早找出來。工具

這裏說的鏈接,含義很是普遍,凡是可以產生關係的都是鏈接,包括用戶對物品的行爲,或者用戶的某些屬性和物品的某些屬性。學習

這裏這麼說的依據是基於這樣一個事實:萬事萬物都有相互鏈接的大趨勢。測試

2. 推薦系統須要什麼--須要已經存在的鏈接,從已有的鏈接去預測將來的鏈接。優化

3. 推薦系統怎麼作--預測用戶評分和偏好。具體說就是機器推薦和人工推薦,也就是一般說的個性化推薦和編輯推薦。網站

整體來講,推薦系統其實是在目前信息爆炸的時代,能夠幫助用戶過濾大量無效信息,獲取到感興趣的信息或者物品的算法,而且也能夠挖掘出一些長尾物品。固然,過分依賴推薦系統,實際上也可能讓你只接受到同一類的信息或者單一領域的物品,這也是推薦系統存在的一個問題,探索與利用問題。

推薦系統是如何工做的呢?這裏能夠用一個看電影的例子來解釋,好比咱們在不肯定看什麼電影的時候,一般可能會有這幾種方法來作決定:

  • 諮詢朋友。不只是問朋友,也多是發個朋友圈或者發微博,即利用社交產品來問這個問題。這種方式在推薦系統中成爲社會化推薦(social recommendation),即讓好友推薦;
  • 咱們也可能由於演員或者導演來決定看什麼電影,可能的作法就是經過搜索引擎來搜索喜歡的演員和導演有沒有在上映的電影,或者是還沒看過的電影。這種方式叫作基於內容的推薦(content-based filtering)
  • 咱們也還會打開豆瓣,查看豆瓣的電影排行榜,看看哪些高分電影是不錯的,或者經過和本身歷史興趣形似的用戶,查看他們看過的電影,而後選擇一部本身感興趣的來看。這種方式叫作基於協同過濾(collaborative filtering)的推薦,也就是根據類似用戶或者類似物品來進行推薦。

上述也只是3種推薦方式,實際上推薦系統還有其餘的推薦方法,但本質上都是須要用戶和物品之間存在鏈接,經過已有的鏈接來預測將來的鏈接。

你須要推薦系統嗎

從兩個方面考慮這個問題:

  1. 產品的目的。若是一個產品的目的是創建的鏈接越多越好,那最終須要一個推薦系統。反之,對於工具類的產品,並不須要推薦系統;
  2. 產品現有的鏈接。當產品中的物品不多,少到人工能夠應付的時候,用戶產生的鏈接確定也很少,這時候鏈接的瓶頸在於物品數量,這時候不適合搭建推薦系統;另外一種狀況就是物品很多,但用戶產生的鏈接也很少,這種狀況就是用戶留存回訪不多,須要的是找到用戶流失緣由,而不是推薦系統。

這裏有一個簡單的判斷是否須要推薦系統的公式

\frac{\triangle connection}{\triangle user \times \triangle item}

分子表示增長的鏈接數量,分母就是增長的活躍用戶數和增長的有效物品數。

這個簡單的指標是這樣的:

  • 若是增長鏈接數主要依靠活躍用戶數和物品數,那麼這個指標會很小,表示不適合推薦系統
  • 若是增長的鏈接數和新增活躍用戶數以及物品關係不大,說明鏈接數已經有自發增加的趨勢,適合加入推薦系統。

最後,是否須要推薦系統從戰術上看是須要考慮投入產出比的問題,須要組建團隊、購置計算資源、積累數據和花費時間優化等;但若是是戰略問題,那就不須要討論了。

推薦系統的問題模式

根據上文的介紹,推薦系統的目標就是預測用戶和物品的鏈接,其預測問題模式,從達成的鏈接目標角度區分,分爲兩大類:

  1. 評分預測
  2. 行爲預測

評分和行爲實際上是反映了用戶對推薦結果的兩類反饋,前者是一個顯式反饋,直接代表用戶對推薦的物品的喜愛程度,然後者更多展現的是隱式反饋,好比用戶僅僅是瀏覽閱讀了推薦的物品,或者說電商類的加入購物車,收藏物品等等。

評分預測

評分預測主要作的事情就是,提早預測用戶對物品的評分,好比對電影評分1-5分,或者是商品打多少顆星星。

一個比較樸素的實現思想:創建一個模型,基於用戶歷史評分的物品來預測分數

如何衡量預測的好壞,一般能夠用均方根偏差(RMSE)來做爲損失函數:

RMSE = \sqrt \frac {\sum^n _{t=1}(y_{p}-y_{t})^2}{n}

其中 n 是樣本的總數,y_t 是用戶對物品的打分,y_p表示模型預測的分數,所以它們的相減就是模型和用戶實際打分的偏差,而 RMSE 只關心絕對值大小。

評分問題主要用於各類點評類產品,好比豆瓣、Imdb等等,但評分推薦存在這些問題:

  1. 數據不易收集
  2. 數據質量不能保證,僞造數據門檻低
  3. 評分的分佈不穩定,總體評分在不一樣時期會差異很大,我的評分也會因時間而有不一樣標準,人和人之間的標準差很大

行爲預測

行爲預測就是利用隱式反饋數據預測隱式反饋的發生機率。行爲預測更受到重視的緣由有這幾點:

  1. 數據比顯式反饋更加稠密。評分數據整體來講是很稀疏的;
  2. 隱式反饋更表明用戶的真實想法
  3. 隱式反饋經常和模型的目標函數關聯更密切,也一般更容易在 AB 測試中和測試指標掛鉤。好比 CTR 預估關注的就是點擊這個隱式反饋。

行爲預測的方式有不少,常見的是這兩種方式:

  • 直接預測行爲自己發生的機率,也叫作點擊率預估(CTR預估),但實際應用中也能夠是收藏、購買行爲的預估;
  • 預測物品的相對排序

推薦系統存在的問題

推薦系統發展到如今,依然仍是有些問題一直沒有很好的通用解決方案,而且不容易被重視。

1. 冷啓動問題

推薦系統其實是數據貪婪型應用,也就是對數據的需求絕無足夠的那一天。

冷啓動問題能夠分爲:

  • 新用戶或者不活躍用戶;
  • 新物品或者展現次數較少的物品(長尾物品)
  • 系統自己沒有用戶和用戶行爲,只有物品數據

一般的解決辦法是:想辦法引入數據,從已有數據中主動學習(一種半監督學習),好比用戶的註冊信息,物品的描述信息等等。

2.探索與利用問題

這個問題也叫 EE(Explore & Exploit) 問題:

  • 探索:也就是挖掘用戶身上未知的興趣愛好,推薦和用戶興趣不相關或者不類似的物品,包括長尾物品;
  • 利用:利用已知的用戶的興趣愛好,推薦類似的物品

一般最好的作法是推薦大部分用戶感興趣的物品,小部分是新的其餘領域的物品,好比已知用戶是數碼產品愛好者,那麼大部分推薦的就是電腦、鍵盤等數碼產品,而後推薦少許的其餘類的物品,好比運動健身產品或者衣服等;

但這裏須要考慮的就是這個比例的問題,不一樣的用戶的推薦比例也不同,可能有的用戶就是喜歡探索新奇的物品,但有的用戶只喜歡感興趣的物品。

3.安全問題

推薦系統也是存在安全問題,可能會被攻擊,被攻擊的影響有如下幾個:

  • 給出不靠譜的推薦結果,影響用戶體驗並最終影響品牌形象;
  • 收集了不靠譜的髒數據,這個影響會一直持續留存在產品中,很難徹底消除;
  • 損失了產品的商業利益,這是直接的經濟損失;

推薦系統的應用

推薦系統的應用特別普遍,包括電子商務、電影和視頻、音樂、社交網絡、閱讀、基於位置的服務、個性化郵件和廣告等等。

  1. 電子商務:國內的淘寶、京東等都有個性化推薦系統,經過用戶瀏覽、點擊、購買、收藏、加入購物車的行爲,給用戶推薦類似的商品;
  2. 電影和視頻:好比豆瓣、愛奇藝等視頻網站,豆瓣會有根據用戶的評分來獲取用戶的興趣,而後推薦的方式能夠是看過這部電影的用戶也喜歡看的電影(基於用戶的協同過濾推薦)或者是其餘類似的電影(基於物品的協同過濾)
  3. 音樂:最有表明性的就是網易雲音樂,其推薦算法確實是比其餘國內的音樂產品要作得更加出色;
  4. 社交網絡:微博,會有多個維度的推薦,熱門話題,同城,或者分領域,娛樂、科技、體育等;
  5. 閱讀:主要就是各種的新聞門戶網站,其中作得最好的就是今日頭條;

事實上,當產品的用戶和物品數據愈來愈大的時候,都須要考慮使用個性化推薦系統,給用戶個性化的體驗。


參考

  1. 《推薦系統實踐》第一章
  2. 極客時間《推薦系統三十六式》

歡迎關注個人微信公衆號--算法猿的成長,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!

相關文章
相關標籤/搜索