達觀數據個性化推薦系統實踐

達觀數據個性化推薦系統實踐


分享嘉賓:於敬 達觀數據 技術科學家

編輯整理:王展昭

內容來源:DataFun AI Talk《達觀數據個性化推薦系統實踐》

出品社區:DataFun

注:歡迎轉載,轉載請註明出處。

本次分享將從以下四個方面介紹個性化推薦系統的構建:

  • 智能推薦系統概述;
  • 常見推薦算法和應用場景;
  • 開發推薦系統的難點分析;
  • 達觀推薦架構實踐和效果優化。

▪ 智能推薦系統概述

達觀數據個性化推薦系統實踐


推薦系統已經成為市面上數據型產品的標準配置,如淘寶、天貓為不同用戶推薦的不同首頁的商品,網易云為不同用戶推薦不同歌曲,今日頭條依據每個用戶不同興趣推薦的相應視頻、資訊等。手機應用中的“推薦”按鈕,這種模式都是個性化推薦模式,除此之外在文章、視頻詳細頁都有一個相關推薦,或者百分之多少的用戶買了這種商品還買了其他商品等都是推薦系統中的一個場景,叫關聯推薦。第三種就是熱點推薦,比如今日頭條的“熱點”頻道等,這就是推薦系統常見的三種形式。

推薦系統對於用戶的價值而言,它與搜索有點差異,是一種沉浸式的融入體驗模式設計,對於用戶不明確自己需求時提供的一種個性化推薦。推薦系統可以依據用戶的偏好進行不斷的信息挖掘,捕捉到用戶的興趣愛好後做個性化推薦,在下拉刷新後依據你的行為實時反饋,如點擊、實時收藏等行為,個性化推薦你感興趣的東西。

達觀數據個性化推薦系統實踐


個性化推薦對於企業而言,也帶來了很大的價值。如電商巨頭亞馬遜據說有超過30%的收益來自個性化推薦引擎,而對於全球最大的視頻網站YouTube,依靠推薦算法,每年視頻點擊增幅達50%,而目前很多推薦算法都是從YouTube公開論文或算法加以應用的。LinkedIn也提供機器學習,為公司帶來數十倍的穩定增長。

達觀數據個性化推薦系統實踐


個性化推薦就是一種個性化的感知,架起用戶與內容間的橋樑,能讓用戶找到自己感興趣的東西,同時能讓物品能有更多的曝光機會。對於企業和APP來說能夠增加流量、增加用戶粘性。推薦系統產生主要是解決量大問題:

  • 信息過載,就是在一個場景中信息超過你的選擇時,很難找到自己感興趣的東西;
  • 長尾問題,很多產品,如視頻文章很多都是缺少曝光機會。


達觀數據個性化推薦系統實踐


推薦系統設計目標主要有三點:

  • 功能:功能上要全面些,包括相關推薦、個性化推薦、熱門推薦等還包括混合推薦,如一個詳情頁會出現無限下拉的過程,其實在這種相關推薦做了個性化推薦;
  • 效果:效果在不同領域有差異,如在直播領域關注送禮物、打賞收入等,而資訊行業較關注人均點擊數量、用戶停留時長等;
  • 性能:性能在不同領域也是有差異的,但是必須是快速、穩定的,不允許出現推薦位置的留白,也就是你的推薦系統可以效果不好但是不能空白,在高併發時要求性能穩定快速。其實在實際業務場景中這三者是相互影響,權衡利弊的。

▪ 常見的推薦算法和應用場景

達觀數據個性化推薦系統實踐


首先,從排行榜說起,這裡其實還有簡單的人工運營,就是人工每天篩選一部分優質信息進行展示,這種雖然千篇一律,但是排行榜很容易廣為人知,主要是滿足了很多用戶的從眾心理,這種方式技術比較簡單,運維也比較方便,只需通過簡單的SQL語句就能進行Ranking。這種方式存在的問題就是結果比較單一,缺乏個性化,但是這種方式確實帶來了不少的收益,不少用戶確實希望看到高質量和熱門的東西。

達觀數據個性化推薦系統實踐


再進一步優化時可以進行item內容分析,這裡麵包含很多信息,如文章有標題、分類、標籤、作者、發佈者等很多有用的信息,因此可以依據這些物品信息做一些基於內容的推薦。然而僅僅基於文本內容的推薦效果也會打折扣,因此還有其他一些信息的提取需要依靠自然語言處理技術來進行處理。與NLP部門結合,除了自身待推薦物品的信息之外,還會做文本聚類分析,包括本體、內容打上不同的主題,做內容方面的召回。當看到一篇文章或視頻後,基於內容的推薦可以提高相關性,這種推薦思想比較直觀。接下來更進一步基於用戶模型的推薦,主要是做用戶畫像,如果需要做更精準的個性化推薦首先需要對用戶做一個全面的用戶畫像,對用戶打各種各樣的標籤,對用戶模型做更加精細的刻畫。

達觀數據個性化推薦系統實踐


協同過濾是推薦算法中必不可少的算法。協同過濾一種是基於用戶的,一種是基於物品的。基於用戶的協同過濾主要是基於群體智慧,如想看電影的時候,會去諮詢下朋友或者去豆瓣看看電影評價。其過程是首先找到與你興趣相似的用戶,基於相似用戶喜歡什麼再給你做推薦。基於物品的協同過濾就是基於用戶行為過濾做協同過濾,如1000個人看了A視頻或商品,同時1000個人又看了B,很明顯A和B是有關聯性的,將樣本擴大就能找到相似物品,基於這種關聯規則的挖掘就可以得到相似物品進行召回就可以做預測,基於距離的相似度計算在實際應用中有很多變形,比如基於點擊行為、購買行為等,也要考慮物品的冷熱不均等。

達觀數據個性化推薦系統實踐


在我們實驗中,一般情況下引入協同過濾比單純基於內容推薦的推薦效果會高出一倍以上。其算法本質上是基於群體智慧,用戶不斷地下拉及相關行為其實是對算法的結果進行選擇,機器算法能夠學習到這種選擇。這種方式能夠挖掘潛在的相關性,如購買了手機後還會買一個手機配件,通過用戶購買記錄可以推薦給用戶更好地選擇。實現過程就是首先要生成用戶的行為矩陣,然後生成用戶與item關係矩陣,然後計算用戶與用戶的相似度、item與item相似度,對個性化推薦結果進行預測。

達觀數據個性化推薦系統實踐


達觀數據個性化推薦系統實踐


除了基於相似度的協同過濾,還有一種效果很好的隱語義模型。這是完全基於算法來實現的,每個用戶都有自己的評分,形成用戶評分矩陣,通過矩陣分解,將最初用戶行為矩陣的空白處填補起來,並將預測的評分從高到低排序取topN,生成推薦結果。這種算法雖然推薦效果比較好,但實際應用並不是很多,主要問題是可解釋性比較差。該算法在在實際效果調優中除了單純的評分,還有很多其它因素考慮的,比如當用戶評分的時候,會存在用戶和items本身bias的影響,比如用戶有的傾向於打高分有的傾向於打低分,有的物品傾向於得高分,有的物品傾向於得低分,需要將兩者結合進行效果調優。

在此基礎上還可以做進一步的優化,如考慮到年齡、性別等特徵,做特徵的交叉組合,進一步的提升效果,而對於模型求解的過程就轉化成一個最優化問題。

▪ 開發推薦系統的難點分析

達觀數據個性化推薦系統實踐


達觀數據為眾多不同的行業提供推薦服務,包括媒體、視頻、直播、電商等,客戶行業不同,數據量巨大,同時需要兼顧性能和效果,在此也遇到一些挑戰,接下來跟大家分享下:

首先的難點就是用戶信息量比較大,實際中用戶場景變化也是比較大,如在做母嬰電商時,開始比較關注於奶粉這一塊,接著可能會買一個小推車。用戶的信息是在不斷變化的,尤其是在用戶量信息比較大的情況下,還有用戶的興趣也是隨著時間不斷變化的(如歐冠開始的時候關注歐冠的新聞,西甲開始的時候關注西甲),這就對用戶畫像提出了更高的要求。再就是用戶畫像的多樣性,如內容數據、好友關聯數據、更豐富多樣的行為數據,這就對構建用戶興趣化模型提出更高的要求。還有就是基於各種算法的召回,不同模型對用戶興趣開發的不同粒度如何去生成結果,對幾十萬的用戶畫像推薦的結果如何進行個性化的處理。

達觀數據個性化推薦系統實踐


其次就是冷啟動的問題,這是推薦系統中比較難的問題。主要就是一個新用戶到來之後如何生成推薦結果,尤其在當下對於很多公司引入新用戶的成本是非常高的,如何能讓用戶快速的停留下來並進行轉化是需要重點關注的。還有就是對於新物品來說缺乏曝光機會,質量是參差不齊的,如在發佈的眾多視頻中如何讓好的視頻能夠快速呈現出來,再自動的逐漸過濾掉和篩選,這對算法來說有很大的挑戰。因此冷啟動是推薦系統中比較核心的問題。

達觀數據個性化推薦系統實踐


然後就是推薦結果的單調性和重複性問題,比如“回聲效應”,我喜歡體育然後推薦的全部是體育方面的內容。在APP首頁呈現的是推薦系統推薦的東西,有可能不是你喜歡的東西,如果推薦系統不知道你喜歡什麼,那麼你永遠看不到你喜歡的東西。

達觀數據個性化推薦系統實踐


最後就是性能方面,首先數據量非常大,面對不同行業的不同客戶,用戶差別大,又有海量數據需要分析挖掘,並實時精準得進行個性化推薦,性能壓力可想而知。第二個就是數據量變化比較快,如短視頻每天產生的數據有幾十萬。還有一個就是服務器性能,需要幾十毫秒返回推薦結果,對於算法模型也有更高要求。另外就是對於我們服務的客戶,首先會有一個A/B 測試環節,進行很多PK達到客戶的要求,然後才會買單,這比單純的搭建一個推薦系統的要求要高很多。

▪ 達觀推薦架構實踐和效果優化

達觀數據個性化推薦系統實踐


上面是系統層次結構圖。

基礎層,對於服務多家客戶來說首先是基礎運算平臺,全部基於Hadoop和Spark。基礎存儲平臺是基於HBase、MySQL、Redis、HDFS等,傳輸平臺是DgIO,主要基於消息隊列的方式。

在組件層有各種各樣的組件和算法庫,實現多個產品服務都可以複用。對於這些組件也有相應的研發團隊進行升級和維護,如文本分類、標籤、語義理解都是由文本組處理,對於搜索引擎性能、相關性等的優化升級是由搜索組完成,組件都是共同使用共同維護。

組件層有一系列小的組件,基於組件可以做一些模型層的事情,比如推薦相關的做用戶畫像,因為對於不同行業的用戶畫像有不同的標準,我們拿到的就是用戶id和行為數據,刻畫用戶畫像主要基於向量方式。物品畫像主要解決流向,就是物品來了如何及時曝光,這時就需要依據其初始信息進行預估打分,對於已經曝光的物品會記錄一段時間的收益情況(點擊率、收藏數據等)形成物品畫像做一些過濾信息。趨勢分析主要是物品曝光後接下來是怎麼樣的,用戶關係主要是基於用戶行為分析的,主要做社交關係的推薦。物品關係主要是做算法方面的處理。

算法層主要是包括基於內容的推薦、矩陣分解、協同過濾、深度學習等。基於內容推薦如標籤召回、熱門召回、內容召回,深度學習各行業都在使用。

接下來就是一個組合層,對各種單一推薦算法的召回結果,使用機器學習的方式進行融合,以達到推薦效果的最優化。

最上面是應用層,目前提供三種推薦,同時還有推薦理由,就是可解釋性。

達觀數據個性化推薦系統實踐


目前個性化推薦引擎提供以下幾種服務:

  • 數據管理模塊:包括數據採集、預處理;
  • 語義分析:推薦系統很多與語義理解是分不開的,主要依賴於NLP基礎組件的服務,如標籤的提取、分類,還包括情感分析;
  • 推薦算法:包括基於內容的、標籤的、深度學習的,還有CLUB冷啟動推薦算法;
  • 用戶畫像:會有群體畫像、個體畫像,
  • 服務化接口和可視化配置平臺:對於大型客戶而言他們有自己的產品人員、運營人員,使推薦平臺不是一個黑盒子方式,提供一個配置讓產品、運營參與進來干預推薦結果。


達觀數據個性化推薦系統實踐


任何一個推薦系統數據是第一位的,需要拿到足夠豐富的數據。包括前期數據採集,再做效果調優時需要各種各樣的行為數據,推薦一個東西展示出來如何實現一步步的轉化需要數據採集做到非常精細準確。第二塊就是語義分析,除了直播外如視頻、文章等都有各種各樣的文本信息、標籤、內容,這都可以做很多語義方面的處理。文本處理方面主要是做NLP處理,如拿到一個文本可以做標籤的召回、提取,直播領域中的彈幕、評論與主播的內容以及客戶流失是有很大關係的,標籤和標題都是動態變化的,分詞會產生很多無用的分詞,如果做簡單的召回是不符合實際的,效果也很差。

達觀數據個性化推薦系統實踐


用戶畫像主要是用於推薦服務的,主要是基於行為數據、屬性等進行深入的分析挖掘,得到用戶不同維度的多種信息,比如使用機器學習模型進行預測(高價值用戶、價格敏感型等),同時畫像信息可以做沉睡用戶分析、流失用戶分析等,同時企業也可以做流失預警、沉睡喚醒等服務。

達觀數據個性化推薦系統實踐


冷啟動問題,我們的解決方案首先是基於物品畫像,主要基於物品屬性來做預測,通過機器學習來進行初始打分,接著就是CLUB構建探索再利用機制,將用戶劃分為不同群體,當新物品來到實時提供曝光機會,會有一個收益指標來評估變化,收益預期是否達到要求,通過自動調優的方式來決定是否增大或者減少曝光。還有會通過用戶來選擇一些感興趣的標籤來解決冷啟動,以及基於本身用戶屬性信息(性別、地域、年齡)來作為冷啟動的依據,通過反饋不斷學習提高精準度。

達觀數據個性化推薦系統實踐


在優化過程中相似度計算的時候,置信度是需要考慮的,優化方法是對同類型用戶計算相似度在進行聚類,還可以進行用戶分類,如專家用戶,專家喜好會影響大家的喜好。還有Item-based CF是對物品與物品之間先做一次聚類,先區分相似物品再對相似物品使用協同過濾,這種效果有很大提升。

達觀數據個性化推薦系統實踐


Embedding處理主要是做內容多樣性,不同內容可能會帶來單一結果,可以用標籤擴展的機制,如喜歡C羅的用戶當C羅新聞過少時,可以推薦尤文圖斯相關新聞或者歐冠或者梅西相關的新聞。還有就是類別擴展,當用戶喜歡體育類的文章,嘗試推薦科技類或者軍事類的文章,這樣就可以解決多樣性問題。再一個是item embedding,我們用word2vec,將用行為的歷史數據做一個隊列,形成標籤擴展得到相似的item,這主要通過深度學習實現實現相似item的召回。第三種就是特徵工程,人工特徵組合有很多侷限,通過特徵組合形成特徵向量放入機器學習模型,能夠很好地實現模型泛化。

達觀數據個性化推薦系統實踐


模型處理分為離線、近線、在線,算法方面分為召回、粗排、精排。涉及的算法有重量級的算法(機器學習、協同過濾等),利用大數據集群,響應時間在小時級,數據結果在千級。輕量級算法主要針對於粗排,基於機器學習做ctr預估,主要是在內存裡面計算,有時會和mysql進行交互,運算時間在秒級。接下來就是精排,主要是基於業務規則,運算時間在毫秒級,很多時基於內存或者redis,得到的結果在十條量級。

達觀數據個性化推薦系統實踐


在排序模型方面很多基於LR模型,現在很多都是基於深度學習來做,不同模型都有不同的應用場景,並不是單一使用一種場景。LR模型利用人工特徵工程,相對於深度學習的優點是可以感知的,是可以debug的。LR模型對於特徵處理是線性的,利用Xgboost+LR或者GBDT+LR由線性向非線性轉化,能夠做到多特徵組合,對推薦效果也有不同程度的提升,目前還有利用Wide&Deep,可以從特徵工程中解放出來,在特徵選取方面不需要做很多工作,但是在調參方面工作量比較大。

達觀數據個性化推薦系統實踐


達觀數據推薦系統平臺提供的是推薦技術服務,通過數據上報接口的方式拿到客戶數據,然後通過推薦接口服務提供給客戶推薦結果,完完全全將客戶解放出來。

▪ 結束語

最後心得體會就是做推薦優化時要依據用戶行為出發,避免過多的客戶干預。避免本末倒置;搭建一個推薦系統不難,難在如何持之以恆的提升效果;沒有壞的方法,只有壞的用法,需要依據合適的場景應用模型。

作者介紹:


達觀數據個性化推薦系統實踐


於敬,達觀數據聯合創始人,中國計算機學會(CCF)會員,第23屆ACM CIKM Competition競賽國際冠軍,達觀數據個性化推薦組總負責人,工作包括推薦系統的架構設計和開發、推薦效果優化等。同濟大學計算機應用技術專業碩士,承擔公司重大緊急項目的架構設計和個性化推薦研發管理工作。曾先後在盛大創新院、盛大文學和騰訊文學數據中心從事用戶行為建模、個性化推薦、大數據處理、數據挖掘和機器學習相關工作,對智能推薦、機器學習、大數據技術和分佈式系統有較深入的理解和多年實踐經驗。



分享到:


相關文章: