頭條推薦算法——協同過濾、內容推薦算法介紹與Python實現(一)

想必很多頭條玩家都想了解頭條的推薦算法是怎樣進行推薦的,剛好之前有做過推薦算法的開發測試相關工作,在此與大家分享下,目前常用的個性化推薦算法在頭條產品的應用。

今日頭條核心算法負責人楊震原曾講到:

一開始今日頭條的推薦算法,首先入手的是“個性化推薦”——解決的熱門文章推薦以及新文章冷啟動的問題(單純熱門文章的推薦會使得新文章沒有曝光機會,需要通過一些機制平衡熱與新的問題)。今日頭條開始逐步引入個性化推薦的策略。他們所採用的,是協同過濾 + 基於內容推薦,直到今天依然構成今日頭條推薦算法的基礎。

通過這段話,我們不難看出頭條的算法先後經歷了熱門(文章)推薦、協同過濾、基於內容推薦的算法發展與補充。

推薦算法原理概述

熱門(文章)推薦:比如提取文章關鍵詞、對文章的分類,並賦予一個初始熱度值,隨著用戶閱讀、收藏、分享、評論、點贊行為,這些行為促使文章熱度提升。文章一般是有較強時效性的內容,因此文章發佈之後,熱度必須隨著文章時效性變低而衰減。同時需要考慮不同類型文章的初始熱度值不同,以及不同用戶行為的熱度加值權重也不同。然後根據不同類別的文章熱度值排序推送給用戶。

協同過濾:可以簡單理解為"人以群分"的算法解釋,通過海量數據中人的行為,計算相似的人或者相似物品的相似度,然後將與你相似的人喜歡的物品或你喜歡物品的相似物品推薦給你。

頭條推薦算法——協同過濾、內容推薦算法介紹與Python實現(一)

基於用戶的協同過濾

上圖示意出基於用戶的協同過濾推薦機制的基本原理,假設Charles 喜歡文章A/B,Mark喜歡文章A/B/C,Bill喜歡文章C;從這些用戶的歷史喜好記錄中,我們可以發現Charles 和Mark的偏好是比較相似的,同時Mark還喜歡文章C,那麼我們可以推斷Charles可能也喜歡文章C,因此可以將文章C推薦給Charles。

頭條推薦算法——協同過濾、內容推薦算法介紹與Python實現(一)

基於物品的協同過濾

上圖示意出基於物品的協同過濾推薦機制的基本原理,假設Charles喜歡文章A/B,用戶Mark喜歡文章A/C,Bill喜歡文章B,從這些用戶的歷史喜好記錄中,我們可以發現喜歡文章A的人都喜歡文章B,因此文章A與文章B比較類似,那麼我們可以推斷Bill很有可能也喜歡文章A,所以系統會將文章A推薦給Bill。

內容推薦:可以簡單理解為"物以類聚"的算法解釋,通過海量數據中的物品(內容)的屬性特徵,計算物品(內容)之間的相似度,然後基於用戶喜好記錄,推薦給用戶相似的物品。同時,今日頭條通過用戶對內容的“正負反饋”進一步校驗內容推薦是否精準。正反饋通過對用戶瀏覽行為、點贊、分享、收藏、評論等方式收集。負反饋則通過用戶瀏覽行為如,瀏覽一半就退出,或者用戶點擊內容下方"不喜歡"表達對此不感興趣等方式收集。除了這種個性化推薦,頭條還通過運營幹預推薦數量較少的傳統意義上的頭條信息(補充"關心的才是頭條"推薦理念的不足),我們可以看到頭條推薦前幾條基本都是傳統意義的頭條新聞。

頭條推薦算法——協同過濾、內容推薦算法介紹與Python實現(一)

上圖示意出內容推薦機制的基本原理,首先我們需要對文章A/B/C的元數據屬性特徵(文章類型)建模;然後根據文章的元數據尋找文章間的相似度,因為,文章A與文章C都是"推薦算法、協同過濾"類型的文章,因此文章A與文章B為相似文章,那麼對於Charles,他喜歡看文章 A,系統就可以推薦文章B。

後續文章中將詳細介紹基於用戶協同過濾算法、物品協同過濾算法、內容推薦算法的python實現

,感興趣的可以關注哦。


分享到:


相關文章: