Netflix 推薦系統(Part Six)-To Be Continued

做推薦的Bella醬發表於2019-02-25

To Be Continued也就是繼續播放模式,在國外比較常見。這篇文章的原文來自To Be Continued。這不是完全和完整的翻譯稿,而是我個人認為的重要部分。如果發現有任何侵權行為。請聯絡我。

Background

我們改進Netflix推薦系統的目標是建立個性化體驗,讓使用者更容易找到優質內容。我們的推薦系統的最終目標是瞭解會員的exact perfect節目,並在他們開啟Netflix時開始播放。雖然我們仍有很長的路要走,但在某些方面我們可以大大縮小差距。

當會員開啟Netflix網站或應用程式時,她可能正在尋找她以前從未觀看過的新電影或電視節目,或者,她可能想要繼續觀看部分觀看的電影或電視節目。如果我們能夠合理地預測一個成員何時更有可能處於繼續模式並且哪個節目更有可能被繼續觀看,那麼將這些節目放在主頁上的顯著位置是有意義的。

大多數推薦工作都側重於discovery,但在本文中,我們將重點放在to be continued模式上,並解釋我們如何使用機器學習來改善兩種模式的成員體驗。特別是,我們專注於一個名為“To be Continued”(CW)的行,該行出現在大多數平臺上的Netflix成員主頁的主頁上。此行用作查詢使用者最近(部分)觀看並可能想要恢復的節目的簡單方法。可以想象,該行的使用者流量是很大的。

Continue Watching

以前,某些平臺上的Netflix應用程式顯示了最近觀看的節目(這裡我們使用術語“廣泛顯示”包括Netflix上的所有形式的視訊內容,包括電影和電視劇),按照上次播放每個節目的新近度排序。 行放在頁面上的方式取決於某些依賴於裝置型別的規則。 例如,網站僅在頁面的左上角顯示單個延續節目。 雖然這些是合理的baseline,但我們開始統一跨平臺的CW行的使用者體驗,並從兩個方面對其進行改進:

  • 通過在使用者更有可能恢復節目(續行模式)時將其放置在更高位置來改進頁面上行的位置,並在成員更有可能尋找要觀看的新節目時降低(發現模式)
  • 使用它們在當前會話中恢復的可能性,改進最近觀看的節目的排序
    Netflix 推薦系統(Part Six)-To Be Continued

直觀地,有許多活動模式可能表明user可能處於繼續模式。 例如,如果user有以下情況,則可能會恢復觀看:

  • 正處於狂歡的中間; 即,最近花了很多時間看電視節目,但還沒有看完這個節目
  • 最近部分觀看了一部電影
  • 經常在當前時間或當前裝置上觀看同一部節目

另一方面,如果有以下行為,user更有可能進入discovery模式:

  • 剛看完電影或電視節目的所有劇集
  • 最近沒有看過任何東西
  • 正在開始新服務

這些假設,以及使用者在continue模式中花費的時間,促使我們構建新的機器學習模型以利用這些模式以產生更有效的CW行。

Building a Recommendation Model for Continue Watching

要為CW行構建推薦模型,我們首先需要計算一組feature,這些feature可以幫助模型預測某人何時恢復觀看。 這些可能包括有關user的feature,CW行中的節目,user過去與這些節目的互動以及一些上下文資訊。 然後,我們使用這些feature作為輸入來構建機器學習模型。 通過變數選擇,模型訓練和交叉驗證的迭代過程,我們可以優化和選擇最相關的一組特徵。

在為feature進行頭腦風暴時,我們考慮了構建CW模型的許多想法,包括:

  • user-level features:
    • 有關使用者訂閱的資料,例如使用者訂閱的長度,註冊國家和語言首選項
    • 該使用者最近的活躍程度
    • 使用者過去的評分和流派偏好
  • user和program的互動資訊:
    • 該節目新增到目錄中或者由使用者觀看的最近時點
    • 使用者觀看了多少電影/節目
    • 節目的後設資料,例如劇集的型別,型別和數量; 例如,兒童節目可能會被重新觀看
    • 可供使用者觀看的剩餘節目
    • 該節目的受歡迎程度,和使用者的相關性
    • 使用者一般多久看一次這個節目
  • Contextual features:
    • 當前時間,星期幾
    • 位置
    • 裝置

Two applications, two models

如上所述,我們有兩個與continue mode 相關的任務:對CW行中的節目進行排名,並將CW行恰當地放在使用者主頁上。

Show ranking

我們需要訓練一個模型來做行內視訊排序。這個模型優化一個ranking loss function。我們隨機選取了一些continue mode下的使用者會話作為訓練資料,模型為每個會話預測使用者觀看某一個視訊的可能。在訓練過程中,我們特別重視第一個位置的視訊。

我們對模型進行了離線評估。Baseline是之前的系統,其中的節目只是根據每個節目上次播放的最近時間進行排序。該資料在我們的新模型中也被用作特徵。比較模型與新近度排名,我們觀察到各種離線指標的顯著提升。下圖顯示了兩種方案隨時間的精度@ 1。可以看出,效能提升遠大於日常變化。該模型在A / B測試中的表現也明顯優於基於新近度的排名,並且更好地符合我們對成員行為的期望。

Netflix 推薦系統(Part Six)-To Be Continued

Row placement

為了將CW行適當地放置在成員的主頁上,我們想要估計成員處於continue模式而不是discovery模式的可能性。有了這種可能性,我們可以採取不同的方法來進行row replacement。一種簡單的方法是將row replacement轉換為二元決策問題,其中我們只考慮CW行的兩個候選位置:一個位置在頁面上高,另一個位置在下面。通過應用閾值,我們可以決定放置CW行的這兩個位置中的哪一個,可以調整該閾值以優化一些準確度指標。另一種方法是獲取可能性,然後可能基於頁面上該位置的內容將其對映到不同的位置。在任何情況下,獲得continue possibility的良好估計對於確定行位置至關重要。在下文中,我們將討論兩種潛在方法。

Reusing the show-ranking model

最簡單的方法是重用之前的模型。 更具體地說,我們可以校準各個節目的分數,以便估計每個節目將在給定會話中恢復的概率P(play(s)= 1)。 我們可以在CW行中的所有節目上使用這些個體概率來獲得連續的總體概率; 即,將恢復來自CW行的至少一個節目的概率。 例如,在不同play互相獨立的簡單假設下,我們可以寫出CW行中至少有一個節目將被播放的概率:

Netflix 推薦系統(Part Six)-To Be Continued

Dedicated row model

在這種方法中,我們訓練binary classifier以將持續會話區分為正標籤和使用者第一次播放節目(發現會話)作為負標籤的會話。 此模型的潛在feature可能包括user-level和contextual features,以及user interactions。

比較這兩種方法,第一種方法更簡單,因為只要概率得到很好的校準,它只需要一個模型。 然而,第二種方法可能提供更準確的continue估計,因為我們可以專門為它訓練分類器。

Tuning the placement

在我們的實驗中,我們使用分類指標評估了對continuation likelihood的估計,並實現了良好的離線度量。然而,仍然存在的挑戰是找到該估計似然的最佳用途,即平衡continuation和discovery。在這種情況下,改變位置會在我們的預測中產生兩種型別的錯誤之間的權衡:誤報(我們錯誤地預測user想要從CW行恢復一個節目)和假陰性(我們錯誤地預測到該user想要發現新內容)。這兩類錯誤對會員有不同的影響。特別是,假陰性使得user更難以繼續節目。雖然有經驗的user可以通過向下滾動頁面或使用搜尋功能來查詢節目,但額外代價可能使新使用者更難以使用。另一方面,誤報導致浪費推薦空間。由於兩種型別的錯誤對會員體驗的影響很難線上下準確測量,我們做了A / B Test。

Serving the Row

使用者希望CW行能夠響應並在觀看節目後動態變化。此外,模型中的某些功能依賴於時間和裝置,無法提前預先計算。因此,我們需要實時計算CW行,以確保在會話開始時收到主頁請求時它是新鮮的。為了保持新鮮感,我們還需要在某些使用者互動後在會話中更新它,並立即將該更新推送到客戶端以更新其主頁。在我們的規模上即時計算行是具有挑戰性的,需要仔細的工程設計。例如,對於具有較長觀看歷史的使用者來說,某些功能的計算成本較高,但我們需要為所有成員提供合理的響應時間,因為continuation是一種非常常見的情況。我們與多個工程團隊合作,建立了一個動態且可擴充套件的方式,為行提供服務以應對這些挑戰。

相關文章