本文最初發布於 towardsdatascience.com 網站,經原作者授權由 InfoQ 中文站翻譯並分享。
Netflix 是一家總部位於美國的媒體服務提供商。它使用訂閱模式來提供影片流媒體服務。它提供的內容包括電視節目、內部製作的內容以及電影等。一開始,Netflix 曾經出售過 DVD,並通過郵件系統提供出租服務。一年後他們不再銷售 DVD 了,但租賃服務繼續做了下去。2010 年,他們轉向了網際網路並開始提供流媒體服務。從那時起直到今天,Netflix 已成長為世界上最好、最大的流媒體服務之一。
Netflix 的核心資產是他們的技術,特別是他們的推薦系統。推薦系統的研究是信息過濾系統的一個分支。信息過濾系統負責在數據流到達用戶之前移除無關緊要的部分。推薦系統負責向用戶推薦產品或為項目分配評級。它們多被 YouTube、Spotify 和 Netflix 等公司用來為觀眾生成播放列表。亞馬遜使用推薦系統向用戶推薦產品。大多數推薦系統使用用戶的使用歷史來研究用戶特性。推薦系統有兩種主要的工作方法,分別是協作過濾和內容過濾。協作過濾使用的基礎概念是,過去喜歡某些東西的人將來也會喜歡相同的體驗。基於內容的過濾方法適合的場景是,系統了解關於商品的信息,但不了解用戶信息。它被用作針對用戶的分類工具。它會建模一個分類器,根據用戶對一件商品的喜好和反感的特徵進行建模。
Netflix 的商業模式只用了一年時間就從出租 / 出售 DVD 變成了全球範圍的流媒體傳輸。與有線電視不同,網際網路電視是無處不在的。Netflix 希望觀眾能夠受益於流媒體服務提供的眾多選項。有線電視的內容是高度地域化的。但網際網路電視的內容目錄中有各種各樣的商品,它們來自不同流派、不同地域,可以滿足觀眾多種多樣的口味。
在 Netflix 出售 DVD 時,他們面臨的推薦問題是要預測用戶給予 DVD 的星數,從 1 星到 5 星。這是他們唯一投入大量資源關注的任務,因為這是他們已經從觀看過視頻的會員那裡收到的唯一反饋。他們不會了解任何觀看體驗和統計數據,完全無法從觀眾的觀看過程中得到反饋。當 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 的團隊在構建系統時,在技術上面臨的一些挑戰包括:
檢測短期變化是由於多個人共享同一帳戶還是一個人的情緒變化引起的。至於與推薦相關的搜索服務,在 Netflix 工程師發表的一篇論文中提到的挑戰有:
搜索詞的長度通常很短,這使 Netflix 很難理解用戶正在搜索的內容。實現即時搜索,做到在用戶點擊的瞬間就提供良好的結果是一個挑戰。數量(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 在硬體和軟體上都投入了大量資源。很早以前,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 在數據科學領域投入了大量資源。他們是一家數據驅動的公司,幾乎在每個級別上都使用數據分析進行決策。根據 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
你也「在看」嗎?👇