iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
AI & Data

那些在科技公司和 app 背後的資料科學系列 第 3

[Day 3] Facebook 如何排序推薦內容(下)- Feed Aggregator

  • 分享至 

  • xImage
  •  

回憶昨天的介紹,推薦系統分為兩個階段:candidate generation 和 candidate selection,以下按照這兩個步驟依序介紹。

Candidate generation

  • 目的:搜集所有候選貼文
  • 方法:
    • 涵蓋自從用戶上次登入後,所有朋友、社團、追蹤的粉絲專頁的貼文,並且也包含前次登入沒有讀到、但分數夠高到值得被留存到這次的貼文。
    • 另外,如果用戶在上次登入時有看過某篇貼文,且這篇貼文在他的朋友中引起熱烈迴響,也有可能讓用戶再次讀到。

Candidate selection

基本概念是利用每則貼文的特徵 x(it),計算出預測行為的分數 Y(ijt),再加權平均得到貼文的最終分數 V(ijt)。最後,利用 V(ijt) 將所有貼文排序。

  • x(it):貼文本身的特徵。例如:貼文型態(文章、影片或照片)、embedding、讀者通常會有的反應、什麼樣的觀看者會和這則貼文互動。
  • Y(ijt):將所有特徵行為簡化成一個數值:Y(ijt) = f(x(it1); x(it2); ... ; x(itC)),其中 C 是指不同的行為特徵。
  • V(ijt):每則貼文的最終分數,計算方式是 Y(ijt) 的線性加權,以此分數排序貼文。

在多台機器平行運算的方式,確保能夠及時得到所有貼文的分數。

階段

Pass 0
選擇和用戶最相關的五百則貼文。

Pass 1
每則貼文獨立地計算,再依照此分數排序。
主要的客製化發生在這個步驟,將所有 Y(ijt) 利用線性組合結合成 V(ijt)。
V(ijt) = w(ijt1)Y(ijt1) + w(ijt2)Y(ijt2) + ... + w(ijtk)Y(ijtk)。

有些人比較喜歡按讚而非留言,那他的留言權重(w)就會降低,以確保比較不重要的預測值的影響力較小。

Pass 2
確保用戶不會連續看到多則相同型態的貼文(例如一直看到影片,都沒有其他內容出現)。


這樣說明可能還是有一點模糊,讓我們以 Skylar 昨天看到的貼文為例,再更具體地說明吧!

昨天 Skylar 看到的內容為:

編號 發文者類型 發文者 貼文類型 發文內容
x(it) x(it1) x(it2) x(it3) x(it4)
#1 朋友 Toby 影片 衝浪影片
#2 朋友 Wade 照片 和狗狗的合照
#3 社團 攝影社團中的網友 照片 攝影作品
#4 粉專 新聞粉絲專頁 貼文 轉貼的新聞

以上的發文者類型、發文者、貼文類型、發文內容都是貼文本身的特徵 X(it)。

而 Skylar 能夠做的反應如下:

按讚 留言 分享
Y(ijt1) Y(ijt2) Y(ijt3)

對於每一則貼文而言,都可以個別預測三個行為分數 Y(itj)。

最後,每一則貼文再依照線性權重,計算 V(ijt)。
例如 Skylar 比較喜歡幫社團的照片按讚,則貼文編號 #3 的 Y(ijt1) 權重較高。而遇到朋友時,他喜歡留言,因此 #1 Toby 和 #2 Wade 的貼文之 Y(ijt2) 權重會較高。

根據這樣複雜的計算,最終四則貼文可以得到各自的 V(ijt),Facebook 再依照此分數排序貼文。


以上就是 Facebook 如何利用機器學習以產生貼文排序的做法。
是不是看得頭昏眼花了呢?

dizzy

趕快去滑滑 Facebook 壓壓驚,歡迎明天回來,讓我們一起來看 Meta 另一個令人愛不釋手的產品 Instagram 的推薦系統,又跟 Facebook 有什麼不一樣呢?


謝謝讀到最後的你,如果喜歡這系列,別忘了按下訂閱,才不會錯過最新更新,也可以按讚給我鼓勵唷!
並歡迎到我的 medium 逛逛!


Reference:


上一篇
[Day 2] Facebook 如何排序推薦內容(上)- 使用者調查
下一篇
[Day 4] Instagram 如何產出要讓用戶探索(Explore)的內容?(上)
系列文
那些在科技公司和 app 背後的資料科學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言