Categories
程式開發

Netflix推薦系統如何推動業務增長?


本文最初發佈於towardsdatascience.com網站,經原作者授權由InfoQ中文站翻譯並分享。

Netflix正在將古老的電視行業帶入互聯網時代。 Netflix允許用戶隨時通過各種互聯網連接的設備流式傳輸龐大的電影和電視節目片庫中的數據。 公司的主要收入來自用戶的訂閱費用。 那麼,Netflix的推薦系統在其日益壯大的過程中扮演了什麼樣的角色呢?

Netflix是一家總部位於美國的媒體服務提供商。 它使用訂閱模式來提供影片流媒體服務。 它提供的內容包括電視節目、內部製作的內容以及電影等。 一開始,Netflix曾經出售過DVD,並通過郵件系統提供出租服務。 一年後他們不再銷售DVD了,但租賃服務繼續做了下去。 2010年,他們轉向了互聯網並開始提供流媒體服務。 從那時起直到今天,Netflix已成長為世界上最好、最大的流媒體服務之一。

Netflix的核心資產

Netflix的核心資產是他們的技術,特別是他們的推薦系統。 推薦系​​統的研究是信息過濾系統的一個分支。 信息過濾系統負責在數據流到達用戶之前移除無關緊要的部分。 推薦系​​統負責向用戶推薦產品或為項目分配評級。 它們多被YouTube、Spotify和Netflix等公司用來為觀眾生成播放列表。 亞馬遜使用推薦系統向用戶推薦產品。 大多數推薦系統使用用戶的使用歷史來研究用戶特性。 推薦系​​統有兩種主要的工作方法,分別是協作過濾和內容過濾。 協作過濾使用的基礎概念是,過去喜歡某些東西的人將來也會喜歡相同的體驗。 基於內容的過濾方法適合的場景是,系統了解關於商品的信息,但不了解用戶信息。 它被用作針對用戶的分類工具。 它會建模一個分類器,根據用戶對一件商品的喜好和反感的特徵進行建模。

為什麼要做大數據項目?

Netflix的商業模式只用了一年時間就從出租/出售DVD變成了全球範圍的流媒體傳輸。 與有線電視不同,互聯網電視是無處不在的。 Netflix希望觀眾能夠受益於流媒體服務提供的眾多選項。 有線電視的內容是高度地域化的。 但互聯網電視的內容目錄中有各種各樣的商品,它們來自不同流派、不同地域,可以滿足觀眾多種多樣的口味。

在Netflix出售DVD時,他們面臨的推薦問題是要預測用戶給予DVD的星數,從1星到5星。 這是他們唯一投入大量資源關注的任務,因為這是他們已經從觀看過視頻的會員那裡收到的唯一反饋。 他們不會了解任何觀看體驗和統計數據,完全無法從觀眾的觀看過程中得到反饋。 當Netflix轉變為流媒體服務提供商時,他們就獲得了會員的龐大活動數據。 這些數據包括與設備相關的詳細信息、一天中的觀看時間、每週的觀看時間以及觀看頻率。 隨著訂閱和觀看Netflix內容的人數增加,這項任務演變成為了一個大數據項目。

Netflix想要回答什麼問題?

Netflix的主要任務就是向用戶推薦下一個內容。 他們想回答的唯一問題是“如何盡可能地為用戶提供個性化的Netflix體驗?”。 儘管這只是一個問題,但它幾乎是Netflix需要應對的全部任務。 內容推薦已經深入到了整個網站的方方面面。

當你登錄Netflix時,推薦系統就開始工作了。 例如,登錄後看到的第一個頁面由10行標題組成,列出的是你接下來最有可能觀看的10個視頻。 感知是他們個性化系統的另一個重要部分。 他們讓觀眾知道Netflix會逐漸適應用戶的口味。 他們希望客戶給網站發送反饋,同時也要建立對整個系統的信任。 他們解釋了為什麼網站認為你會觀看某些內容。 他們使用“基於你對……的興趣”“根據你的喜好創建了這一行內容”等短語贏得用戶信任。 相似性是個性化的另一個要素。

Netflix從廣義上將相似性概念化,例如影片、會員、流派等之間的相似性。 他們使用諸如“立刻觀看類似的內容”“與……很相似”之類的短語。 搜索也是Netflix推薦系統的一個非常重要的層面。

數據源:

根據Netflix技術博客,Netflix推薦系統的數據源包括:

  • 一組由會員提供的數以十億計的評級數據。 每天會新增超過一百萬的評分。
  • 他們在許多方面都使用了一種流行度指標,但具體的計算方式各有不同。 例如,他們會每小時、每天或每週計算一次。 他們還通過地理位置或其他相似性指標來區分會員的類型。 這些都是計算受歡迎程度的一些不同維度。
  • 與流相關的數據,例如持續時間、播放時間、設備類型、星期幾,以及其他與上下文相關的信息。
  • 用戶每天添加到待觀看隊列中的模式和內容標題,這方面的數據每天數以百萬計。
  • 所有與內容目錄中的標題相關的元數據,例如導演、演員、體裁、評分和來自不同平台的評論。
  • 最近,他們還添加了用戶的社交數據,以便提取與用戶和他們的朋友相關的社交特性,從而提供更好的建議。
  • 與Netflix訂戶或成員的搜索動作相關的文本信息。
  • 除了內部數據源,他們還使用外部數據,例如票房信息、好評度和評論家評論。
  • 他們在預測模型中使用了人口統計、文化、語言和其他常見數據等特性。

數據規模有多大

從2006年到2009年,Netflix舉辦了一場大型競賽,要求人們設計一種算法,將其著名的內部推薦系統“Cinematch”的效率提高10%。 誰提供了最好的改進措施就將獲得100萬美元的獎勵。 提供給參賽者的數據集包括了1億個用戶評分。

具體來說,這個數據集包括480189個用戶對17770部影片的100480507個評分。

2009年,該獎項被授予了名為BellKor’s PragmaticChaos的團隊。 自那以後,Netflix表示,該算法已擴展到了可處理網站50億評級數據的規模。 因此,據悉,Netflix推薦系統的數據集是由所有內容標題的信息組成,總數超過50億。

有哪些數據訪問權、數據隱私和數據質量問題?

如2020年的Netflix Prize所述,儘管Netflix試圖匿名化自己的數據集並充分保護用戶的隱私,但圍繞著與Netflix競爭力相關的數據仍存在許多隱私問題。 2007年,奧斯丁大學的研究人員通過匹配IMDB中的評分數據,找出了匿名Netflix數據集中的用戶信息。 2009年,與該問題相關的四個人針對Netflix提起訴訟,理由是它違反了美國的公平貿易法和《視頻隱私保護法案》。 此後,Netflix取消了2010年及以後的競賽。

面臨的技術和非技術性挑戰?

在非技術性挑戰上,根據Maddodi等人所述,2019,Netflix在早年遭受了巨大的損失,但隨著互聯網用戶的增加,Netflix改變了其企業商業模式,從2007年開始由傳統的DVD租賃轉變為在線視頻流媒體服務。 Netflix精明地預見了迪士尼和亞馬遜等競爭對手的到來,因此從一開始就對數據科學研究投入了大量資源。 這些努力中的大多數成果仍在為Netflix帶來回報,並幫助它保持著流媒體行業的領軍地位。

Netflix的團隊在構建系統時,在技術上面臨的一些挑戰包括:

  • 融合不同的模型以預測單一的輸出。
  • 優化整體的RMSE。
  • 模型的自動化參數調優也是一個挑戰。
  • 捕獲統計相關性受到的全球化影響。
  • 捕獲跨時區效應和工作日效應。
  • 檢測短期變化是由於多個人共享同一帳戶還是一個人的情緒變化引起的。

至於與推薦相關的搜索服務,在Netflix工程師發表的一篇論文中提到的挑戰有:

  • 從推薦器系統的視角來看,某個視頻是不可用的。
  • 檢測、報告和替換不可用的實體。
  • 搜索詞的長度通常很短,這使Netflix很難理解用戶正在搜索的內容。
  • 實現即時搜索,做到在用戶點擊的瞬間就提供良好的結果是一個挑戰。
  • 使用不同的索引方案和指標來優化用戶體驗。

為什麼這是一個“大數據”問題?

Netflix推薦系統如何推動業務增長? 1

大數據的五個大V

數量(Volume):截至2019年5月,Netflix擁有約13,612部影片。 僅僅美區片庫就包含5087個影片標題。 截至2016年,Netflix已完成向Amazon Web Services的遷移。 他們的數十PB數據已移至AWS,其中包含了工程數據、公司數據和其他文檔。 根據AutomatedInsights的數據,可以估算出Netflix僅視頻資料就存儲了約105TB的數據。 但是,由於推薦算法需要合併上述所有信息,因此他們的推薦算法數據集估計會非常大。 拿Netflix Prize任務來說,提供給用戶的數據約為2GB。 這些數據僅包含1億部影片的評分。 當時,Netflix承認自己擁有的評分數據為50億規模。 粗略估計,這意味著約10,000GB的存儲容量。 而今天Netflix的評分數據規模會比上述數字還要大。

速度(Velocity):到2019年底,Netflix擁有100萬訂閱用戶和1.59億觀眾。 觀眾每次在Netflix上觀看內容時,網站都會收集他們的使用情況統計信息,例如觀看歷史記錄、內容評分、其他有相似口味的用戶、與他們的服務相關的偏好、與影片相關的信息(例如演員、流派、導演、發行年份,等等)。 此外,他們還會收集有關數據生成時間、觀看內容的設備類型、觀看時長的數據。 平均每個Netflix訂戶每天觀看2個小時的視頻內容。 雖然官方並沒有公開明確過,但據信Netflix會從用戶那裡收集大量信息。 Netflix平均每天會流傳輸大約200萬小時的內容。

準確性(Veracity):準確性指標受偏差、噪聲和數據異常影響。 以Netflix Prize挑戰來說,其數據就存在很大差異。 並非所有影片都能得到個體平等的評價。 有一部影片只有3個評分,而有一個用戶對17,000多部影片打出了評分。 根據信息的類型和數量,Netflix數據肯定會包含很多異常、偏差和噪音。

多樣性(Variety):Netflix表示自己以結構化格式收集大多數數據,例如一天中的具體時間、觀看時長、受歡迎程度、社交數據、與搜索相關的信息、與流相關的數據等。 但是,Netflix也可能使用非結構化數據。 Netflix很大方地承認了他們會根據個性化數據提供視頻縮略圖。 這意味著即使是同一視頻,對於不同的人也會呈現不同的縮略圖。 由此可見,他們可能在處理圖像和過濾器。

使用了哪些硬件/軟件資源來推進項目?

Netflix推薦系統如何推動業務增長? 2

Netflix技術棧

為了構建推薦系統並執行大規模分析任務,Netflix在硬件和軟件上都投入了大量資源。 很早以前,Netflix就提出了一種處理這一任務的架構。

它執行推薦任務時具體分為三個階段。 根據Netflix技術博客的介紹,離線計算是適用於數據的,但與用戶的實時分析無關。 執行時間比較寬鬆,並且算法是分批訓練的,並不要求在固定的時間間隔內處理一定的數據量。 但是系統需要經常訓練以整合最新信息。 模型訓練和結果批處理之類的任務都是離線執行的。 由於他們需要處理大量數據,因此通過Pig或Hive在Hadoop中運行任務有很好的效率提升。 結果必鬚髮佈出來,不僅要得到HDFS的支持,還必須得到S3和Cassandra等其他數據庫的支持。 為此,Netflix開發了內部工具Hermes。 它也是一個像Kafka這樣的發布-訂閱框架,但還提供了其他一些功能,例如“多DC支持、跟踪機制、JSON到Avro的轉換以及稱為Hermes控制台的GUI”。 他們想要一種可以透明有效地監視、警告和處理錯誤的工具。 在Netflix,近線層包含脫機計算的結果和其他中間結果。 他們使用了Cassandra、MySQL和EVCache。 重要的不是存儲的數據量,而是存儲數據的效率。 Netflix的實時事件流由內部開發的名為Manhattan的工具支持。 它非常接近Twitter的Storm,但是根據Netflix的多種內部要求,它可以滿足不同的需求。 Netflix使用帶有Chukwa日誌系統的Hadoop來管理數據流。 Netflix嚴重依賴Amazon Web Services來滿足其硬件要求。 更具體地說,他們使用易於擴展且幾乎完美容錯的EC2實例。 他們所有的基礎架構都在雲中的AWS上運行。

Netflix推薦系統如何推動業務增長? 3

Netflix的個性化和推薦系統架構

Netflix在數據科學領域投入了大量資源。 他們是一家數據驅動的公司,幾乎在每個級別上都使用數據分析進行決策。 根據Vanderbilt的資料,該公司的矽谷總部大約有800名工程師。 Netflix還聘用了一些最聰明的人才,其數據科學家的平均薪水很高。 公司擁有很多在數據工程、深度學習、機器學習、人工智能和視頻流工程方面具有專業知識的工程師。

帶來了怎樣的價值?

  • 在推薦系統的幫助下,用戶與Netflix的總體互動率有所提高。 這進一步降低了訂閱取消率,增加了流媒體平均觀看時間。
  • 訂戶的每月客戶流失率非常低,大部分是由於支付網關交易失敗所致,而不是由於客戶主動選擇取消服務。
  • 個性化和推薦系統每年為Netflix節省超過10億美元。
  • 人們今天觀看的內容中有75%是由他們的推薦系統提供的。
  • 成員滿意度隨著推薦系統的發展和進化而增加。

關於Netflix Prize任務,獲勝算法能夠提升預測收視率,並將“影片匹配度”提高10.06%。 根據Netflix技術博客,奇異值分解能夠將RMSE降低到89.14%,而受限玻爾茲曼機可以將RMSE降低到89.90%。 它們共同將RMSE降低到了88%。

項目成功了嗎?

在數據科學技術領域的投資已使Netflix成為視頻流媒體行業中的翹楚。 個性化和推薦系統每年可為該公司節省10億美元。 而且,這也是吸引新訂戶加入該平台的重要因素之一。 此外,關於Netflix競賽的獲獎算法,其許多組件如今仍在公司的推薦系統中使用。 因此,該系統可以被認為是成功的。

作者介紹:

Chaithanya Pramodh Kasula,喬治梅森大學研究生研究助理,專注機器學習、深度學習領域研究。

原文鏈接:

https://towardsdatascience.com/netflix-recommender-system-a-big-data-case-study-19cfa6d56ff5