search
數據個性化推薦系統應用場景及架構實現

數據個性化推薦系統應用場景及架構實現

在當今DT時代,每天都在產生著海量的數據,移動互聯網的興起更是讓我們體驗到獲取信息是如此的簡單和方便。

同時,更多的選擇也帶來更多的困擾,面對層出不窮的信息和服務帶來的困擾,使得個性推薦迅速崛起,並且大放異彩,在金融、電商、視頻、資訊、直播、招聘、旅遊等各個領域都能看到推薦系統的存在。 達觀數據憑藉多年在推薦系統方面的技術積累和優質的大數據服務,已經有數百家公司接入達觀推薦系統,覆蓋多個行業,實現企業經營業績的大幅提升。本次分享結合達觀數據個性化推薦引擎在各個行業的從業經驗,圍繞以下內容展開:

  • 個性化推薦應用場景和價值

  • 用戶畫像和個性化推薦演算法

  • 推薦系統優化方法

  • 「達觀杯」數據競賽

◆ ◆ ◆

個性化推薦應用場景和價值

個性化推薦產生的初衷是為了解決信息過載和物品長尾的問題。信息過載是在信息時代信息過於豐富的一種現象,也就是人所接受的信息超過了個人所能接受、處理或有效利用的範圍,導致的一種無所適從的問題。

同時,如此多樣豐富的信息中,大部分是屬於冷門而沒有曝光的機會。對於處於移動互聯網的今天,這些問題尤其突出。

對用戶而言,每天面對海量的資訊、商品、視頻、音樂等各種服務時,如何快速找到自己感興趣的內容確實是件耗費時間和精力的事情,尤其是在沒有明確意圖的情況下。

而對於企業而言,手握海量資源,而只有一小部分曝光在用戶面前,大部分都石沉大海,資源浪費的同時,還留不住用戶。在當前各種產品同質化的今天,如何討好並留住用戶,挖掘數據中存在的價值,對企業也是一種極大的挑戰。

越來越多的事實證明,個性化推薦系統是解決上述問題的有效工具。

美國最大的視頻網站YouTube曾做過實驗比較個性化推薦和熱門視頻的點擊率,結果顯示個性化推薦的點擊率是後者的兩倍。

美國著名視頻網站Netflix曾舉辦過全球的推薦系統比賽,懸賞100萬美元,希望參賽選手能將其推薦演算法的預測準確度提升至少10%。

號稱「推薦系統之王」的電子商務網站亞馬遜曾宣稱,亞馬遜有35%的銷售來自於推薦系統。其最大優勢就在於個性化推薦系統,該系統讓每個用戶都能有一個屬於自己的在線商店,並且在商店中能招到自己最感興趣的商品。

日常生活當中,當我們打開各種各樣的app和網頁,首先進入視野的很多都是個性化推薦。對於企業而言,推薦系統可以幫助讓更多的資源得到曝光,也改善了用戶體驗、增加了用戶的停留市場和粘性,最終也會提高轉化。

最後總結下,推薦系統的核心價值主要包括:

  • 描述物品的特點,並與用戶的個性化偏好進行匹配,幫用戶便捷的篩選出感興趣的內容;

  • 進行有效的信息過濾以解決用戶的過載問題,面對陌生領域時提供參考意見

  • 根據用戶反饋迅速捕捉用戶的興趣,以及興趣的變化,需求不明確時,作用戶的「貼心助手」

  • 選擇合適的場景、時機、表現方式進行推薦,滿足用戶的好奇心

◆ ◆ ◆

用戶畫像和個性化推薦演算法

在開始這個話題之前,先來聊聊目前普遍存在的兩種個性化推薦結果生成方法。一是依靠人工編輯進行推薦,這種方式不僅需要大量的人力成本,費時費力,最終推薦出來的結果是千篇一律,並沒有考慮到用戶個性化的差異,也沒有考慮用戶反饋。

二是通過一定邏輯生成的熱門榜單。這種方式極易導致馬太效應,一些熱門物品會會一直霸佔榜單,也容易造成刷單,畢竟佔據著更好的流量入口,需要引入反作弊機制才能保證推薦結果的公平公正。

高質量的個性化推薦系統其實包括三大部分:

  • 基於海量用戶行為數據,挖掘多種多樣的高質量推薦候選集。

  • 對用戶實時興趣進行精準定位,秒級更新結果滿足個性化需求。

  • 基於高性能分散式計算框架,快速迭代演算法生成多維度用戶畫像進行千人千面的推薦。

個性化推薦精準性的非常至關重要的影響因素是用戶畫像的生成。

用戶畫像通過對海量的用戶行為數據進行深入的分析和挖掘,從多個維度來描述用戶的基礎屬性、標籤及興趣點等,清晰並且準確地勾勒出用戶的輪廓概貌。

這些數據幫助應用方更好了解用戶行為路徑,明確用戶流失情況和原因,為應用方的產品功能優化決策提供可靠參考依據。

下圖是一個小說類客戶的用戶畫像生成流程。

通過多種方式收集到用戶數據,包括用戶各種行為數據,結合書籍、用戶、作者等基礎數據,首先進行數據預處理和用戶歸一化處理,然後進行數據統計與特徵抽取,最後基於機器學習中的分類、聚類等方法進行智能挖掘分析,形成了用戶各個維度的屬性信息。

有了用戶畫像之後,接下來就交給個性化推薦演算法了,這裡主要聊下基於內容的推薦和血統過濾。

基於內容的推薦。

這個演算法適合於待推薦物品帶有豐富語義信息的場景,如標題、標籤、類別、作者等信息。但是想直播這個行業,直播內容是和主播當前的播放狀態緊密相關的,而且內容變化也較頻繁,就不適宜使用此演算法。在資訊媒體、視頻等行業效果還是客觀的。



基於內容的推薦主要過程是將推薦物品的信息特徵和待推薦對象的特徵相匹配的過程,從而得到待推薦的物品集合。匹配演算法很多是借鑒了信息檢索領域中的技術,如K最近鄰KNN和Rocchio的相關性反饋方法。主要是以含有相同標籤的其它物品、同類別的其它物品等形式出現。

這種方法能保證推薦內容的相關性,並且根據內容特徵可以解釋推薦結果。缺點是由於內容高度匹配,導致推薦結果的驚喜度較差,另外用戶的反饋數據也沒有使用。

協同過濾演算法

主要思想是基於群體智慧,利用已有大量用戶群過去行為數據來預測當前用戶最可能感興趣的東西。這種方法克服了基於內容方法的一些弊端,最重要的是可以挖掘物品之間隱含的相關性,推薦一些內容上差異較大但又是用戶感興趣的物品。





對於基於用戶的協同過濾,首先計算用戶之間的距離,得到與當前用戶距離最近的N個用戶,將這些用戶喜歡的item進行合併和評分預測,得到推薦結果。



基於物品的協同過濾則是計算物品間的距離進行評分預測得到推薦結果基於領域的方法重點關注物品之間的關係或者用戶之間的關係,基於物品的方法是根據用戶對和他感興趣的物品相似的物品評分,來對該用戶的偏好物品建立模型。



隱語義模型採用的是另外一種方法,把物品和用戶映射到相同的隱語義空間。這個空間試圖通過描述物品和用戶兩種實體在潛在因子上的特徵來解釋評分,而這些因子是根據用戶的反饋自動判斷出來的。 用隱語義模型來進行協同過濾的目標是揭示隱藏的特徵,這些特徵能解釋觀測到的評分。該模型包括:

pLSA(Probability Latent Semantic Analysis)模型

神經網路模型、LDA(Latent Dirichlet Allocation)模型

由用戶-物品評分矩陣的因子分解推導出的模型(也叫基於SVD的模型,Singular Value Decomposition)



計算用戶-用戶距離和物品-物品距離有很多方法,在實際業務中會有很多的變形,比如對熱門物品的降權,不然會引入一些雜訊數據,因為相對一些不那麼熱門的物品更能表徵用戶的偏好信息。
由於矩陣因子分解技術在線上業務的準確性和穩定性的突出表現,已經成為協同過濾演算法的首選。

首先,對於user-item關係矩陣,也叫評分矩陣,表示用戶對每個item的評分,比如1表示1分,5表示5分,分數越高就表示越喜歡。



通過用戶的操作行為數據我們就得了這樣一個矩陣,通過矩陣分解的方式就得到了兩個矩陣,分別是物品-潛在因子矩陣和潛在因子-用戶矩陣,我們的目標是預測用戶對未打分的物品的喜好程度,也就是圖中除了黃色格子之外的數據。



對於未知的評分,可以使用分解后兩個矩陣相乘,就得到圖中空白處的評分數據,進行排序和過濾,最終就可以得到用戶對物品的喜好程度,也就得到最終的推薦結果。



原始的SVD並沒有考慮到用戶和物品自身的差異(bias),進行升級,我們來看看SVD++是怎麼的形式。

相對於之前的方式這裡引入了bui,也就是用戶本身的bias和物品本身的bias。對於用戶的bias,有的用戶傾向於打高分,有的傾向於打低分。物品的bias,比如有的電影出自於大導演、大公司等傾向於得到高分,有的比較小眾容易得低分。在計算中,這些bias信息都需要包含進來。

通過對演算法的升級,就可以使用各種各樣的用戶、物品的bias信息,包括用戶和物品的profile,同時各種屬性也可以進行組合,如用戶性別、年齡信息。

最終的模型求解問題就轉化為求解最優化問題,這個最小二乘法問題可以通過隨機梯度下降演算法有效地解決。

這裡是達觀數據推薦系統的架構圖,從基礎層的數據傳輸、存儲和運算,到模型層的用戶畫像、物品畫像等的挖掘生成,然後到多種推薦演算法的計算得到部分初選的推薦候選集,最後交由融合層的機器學習模型進行重排序,生成最終的推薦結果返回給用戶。整個流程在數十家客戶上都取得了卓越的推薦效果,覆蓋資訊、視頻、直播、電商等多個行業。

◆ ◆ ◆

推薦系統的優化方法



接下來,聊聊個性化推薦的優化,當然推薦系統的優化方法有很多種,今天挑選了三個,都和當前火熱的深度學習有或多或少的關係,分別是用於性能和效果的優化。


首先說下性能上的優化。

達觀數據接入了數百家客戶,數據量的規模之大是可想而知,對於性能的要求非常高,尤其在高併發的推薦場景中。基於硬體成本和性能的綜合考慮,達觀個性化推薦引擎除了使用內存和redis作為緩存之外,也引入了LevelDB。

LevelDB是Google的兩位大神Jeff Dean和Sanjay Ghemawat發起的開源項目,簡而言之,LevelDb是能夠處理十億級別規模Key-Value型數據持久性存儲的C++ 程序庫。LevelDb是一個持久化存儲的KV系統,和Redis這種內存型的KV系統不同,LevelDb不會像Redis一樣狂吃內存,而是將大部分數據存儲到磁碟上。

LevelDB在隨機寫,順序讀/寫方面具有很高的性能,但是隨機讀的性能很一般。換句話說,LevelDB很適合應用在查詢較少,而寫很多的場景。

個性化推薦引擎需要儘可能快的響應用戶的每一次操作,以適應用戶短期興趣的變化,進而提高推薦效果的精準性。各種推薦演算法生成候選集、多演算法融合、返回結果的時候,牽涉到頻繁的讀取操作。

在高併發量的場景下,當內存或者redis不足以完全支撐線上業務時,使用LevelDB將會對性能有不錯的提升。畢竟LevelDb在寫的時候對內存要求不高,讀的時候則根據性能要求的不同需要對應的內存。

談到效果優化,業界都達成了一個共識:case-by-case查看推薦結果,也就是說需要具體問題具體分析。只有通過這種方式發現問題,才能更好地優化推薦效果。

下面分析幾個常見的優化方法:

推薦結果多樣化的優化

在實際的推薦場景中,抓住了用戶的喜好,但推薦出來滿屏的「相似」結果會帶來極差的用戶體驗。如何在保證用戶興趣的前提下又能讓推薦結果的多樣性更好呢?

物品信息中很重要的一個特徵是標籤。好的推薦系統不僅體現在精準性,還有多樣性和驚喜度方面的要求。對物品信息進行深層度的挖掘分析,進而對標籤進行拓展,也是一種實現上述要求行之有效的方法。



其實使用word2vec就可以解決這類問題。





Google 於 2013 年開源推出了一個用於獲取 word vector 的工具包word2vec,它包含了對兩種模型的訓練,如下圖。在訓練每種模型的時候又分HS和NEG兩種方法。(具體的數學原理可以參考相關論文)



在Word2Vec的訓練過程中,每個word vectors都被要求為相鄰上下文中的word的出現作預測,所以即使隨機初始化Word vectors,但是這些vectors最終仍然能通過預測行為捕獲到word之間的語義關係,從而訓練到較好的word vectors。





這是僅有一個詞的CBOW模型。Word2Vec盡量讓具有相同上下文的word的向量相似,從而獲得較好的vector representation的相似性。這種相似性有時候是線性的,臨近的結果會與相似,即Word2vec可以學習到詞與詞之間語義上的聯繫。



另外,由於Word2Vec採用了非常多的方法簡化網路結構,簡化訓練流程,導致Word2Vec可以很輕易的訓練超大的訓練集。一個優化后的單機實現版的Word2Vec演算法可以在一天時間內訓練100 bililion words。



word2vec可以把對文本內容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。基於得到的向量,也就得到了可以擴展的詞。



從圖中可以看出,基於word2vec訓練好的模型,輸入「美食」,返回了相似程度最高的十個詞及相似權重,從結果上看都是和美食相關的。基於這些相似詞召回相關推薦結果,不僅可以保證語義上的相關性,也可以大大改善推薦結果的多樣性。

item embedding

2016年Oren
Barkan以及Noam Koenigstein借鑒word2vec的思想,提出item2vec,通過淺層的神經網路結合SGNS(skip-gram with negative sampling)訓練之後,將item映射到固定維度的向量空間中,通過向量的運算來衡量item之間的相似性。 詞的上下文即為鄰近詞的序列,很容易想到,詞的序列其實等價於一系列連續操作的item序列,因此,訓練語料只需將句子改為連續操作的item序列即可,item間的共現為正樣本,並按照item的頻率分佈進行負樣本採樣。





Oren Barkan and Noam Koenigstein以SVD作為baseline,SVD的隱類以及item2vec的維度都取40,用Microsoft Xbox Music service收集的 user-artists數據集,對結果進行聚類,同一個顏色的節點表示相同類型的音樂人。 圖a 是item2vec的聚合效果,圖b 是SVD分解的聚合效果,很顯然item2vec的聚合效果更勝一籌。

熱門推薦

本文由 一點資訊 提供 原文連結

一點資訊
寫了5860316篇文章,獲得23293次喜歡
留言回覆
回覆
精彩推薦