基於行列式點過程的推薦多樣性提高算法

圖片



1、推薦系統目標算法

推薦系統的目標主要包含兩個方面:Exploitation 和 Exploration app

圖片

在 Exploitation 中最重要的是 Relevance ( 相關性 ) 的計算,其根本思想是根據用戶瀏覽、觀看和收藏的內容等用戶行爲數據推測該用戶可能採起的行動。常見的推薦算法大可能是基於針對該目標的優化而展開的。ide

然而用戶行爲數據在現實中極可能過少、不足以全面地體現用戶的興趣。這一現象在冷啓動等場景中很常見。此時推薦系統還有責任挖掘用戶還沒有表現出的興趣,而且避免因爲現有行爲數據過少而致使推送內容類似性太高的狀況。這就須要引入 Exploration 函數

Exploration 主要有三個方面:性能

1. 覆蓋度:被推薦給用戶的內容佔所有內容的比例應該較高,特別是新的內容可以有機會展示給用戶。 學習

2. 驚喜:推薦的內容並不與用戶以前的行爲明顯相關,但又是用戶所喜歡的。這能很大程度提高用戶體驗,但卻難以給出衡量指標。大數據

3. 多樣性在短期內不要過多地向同一用戶推薦同一類型的內容,而是混合各類類型的內容推薦給用戶。衡量這一指標主要經過三個方面,接下來將逐一介紹。優化

2、如何衡量推薦內容的多樣性?人工智能

2.一、Temporal Diversity ( 時間的多樣性 )spa

圖片

推薦結果應隨着時間的遷移發生改變,其衡量的指標是在固定的時間間隔內推薦不一樣類的內容的個數。好比一個推薦系統在一段時間內給用戶推薦了10個內容,那麼這10個內容中屬於不一樣類別的個數,便可衡量推薦系統的多樣性。

對於這個指標的提高主要有三個方式來提高這個指標:

第一個相似於 Item-based CF 的思想,預先根據全部用戶的歷史偏好數據計算內容之間的類似性,而後推薦與該用戶的喜愛相相似的內容。

第二個是針對用戶的行爲作一個時間上的衰減,這樣可以針對老用戶增大他觀看新類型結果的變化。

第三個是 Impression discount ( 印象折扣 ) ,統計全部推薦給用戶的內容中哪些是用戶沒有觀看的類型,下降該類型的曝光度,從而給其餘類型的內容增長更多的曝光機會。

2.二、Spatial Diversity ( 空間的多樣性 )

它的衡量指標是單個推薦列表中物品之間的差別程度,能夠經過計算在同一個推薦 list 中兩兩 Item 之間的類似度的平均值來進行衡量。

接下來咱們將詳細介紹該方面內容:

首先咱們爲何關注這樣一個指標呢?這是由於在推薦系統中咱們只關注準確性指標的話,那麼會致使推薦出來的內容大部分都類似。

圖片

在上面這幅圖中,每個點表明一個 Item ,橫座標表示物品之間的類似性,橫座標越近表示物品的類似性越高,縱座標表示推薦系統對 Item 的打分。

在左圖中有個用戶觀看了一個 Item 用紅點表示,那麼推薦系統會根據這個行爲推薦10內容給用戶,那麼這10個內容和這個 Item 類似度很是高。

在右圖這個例子中,一個用戶觀看了三個內容,其中 Item1 和 Item2 的類似度很是高,和 Item3 的類似度很是低,那麼推薦系統根據用戶的行爲推薦 Top10 的內容的話,會發現這10個內容都與 Item1 和 Item2 類似。這是個很常見的例子,好比一個用戶很喜歡看漫威的電影,也喜歡看一些文藝類的電影,其中用戶觀看漫威的電影比較多一些,看文藝類的電影少一些,那麼推薦系統很容易形成推薦的時候只推薦漫威類的電影。

用戶多樣性的問題也已經被普遍研究過。傳統上使用啓發式的方法,它會在多樣性和相關性之間用一個加權平均的方法來得到一個整體的優化目標,而後兩兩之間比較當前推薦的差別性,而後試圖最大化這個總的平衡了以後的優化目標,用窮舉的方法。

圖片

圖片

提高推薦系統多樣性的方式主要有兩類。第一類主要是依靠 Item 類似度模型和 Item 排序模型。如圖5左側所示。另外一類主要是直接去修改推薦算法,使得這個推薦算法推薦出來的 Item 儘量的不類似,如圖5右側所示。

、行列式過程推薦多樣性提高算法

DPP 的構造

行列式點過程 ( Determinantal Point Process , DPP ) 是一種性能較高的機率模型。DPP 將複雜的機率計算轉換成簡單的行列式計算,並經過核矩陣的行列式計算每個子集的機率。DPP 不只減小了計算量,並且提升了運行效率,在圖片分割、文本摘要和商品推薦系統中均具備較成功的應用。

DPP 經過最大後驗機率估計,找到商品集中相關性和多樣性最大的子集,從而做爲推薦給用戶的商品集。

行列式點過程刻畫的是一個離散集合 Z={1,2,3....,M} 中每個子集出現的機率。當給定空集合出現的機率時,存在一個由集合的元素構成的半正定矩陣 圖片 ,對於每個集合 Z 的子集 Y ,使得子集 Y 出現的機率 圖片 ,其中,L表示由行和列的下標屬於 Y 構成的矩陣 L 的子矩陣。能夠看看下面的例子:

圖片

因爲矩陣 L 是半正定的,所以存在矩陣 B ,使得 圖片 ,而且

圖片

這是由於行列式爲方陣中的各個列向量張成的平行多面體體積的平方。

爲了將 DPP 模型應用於推薦場景中,考慮將每一個列向量 B分解解爲 圖片 ,其中:ri 爲 item i 與 user 之間的相關性,且  圖片

圖片 爲 item i 與 item j 之間的類似度度量,且 圖片

那麼:

圖片

從矩陣 L 的構造可知,商品與用戶之間相關性越大,且商品之間多樣性越豐富,則矩陣 L 的行列式越大。所以,咱們能夠創建以下最優化問題:

圖片

可是,直接求解該優化問題是 NP 難的,陳拉明團隊則利用貪婪算法,提出了一種能加速行列式點過程推理過程的方法。

首先,DPP 取 Log 後的函數是知足次模函數的:

圖片

次模函數是一個集合函數,隨着輸入集合中元素的增長,增長單個元素到輸入集合致使的函數增量的差別減少。即,對於任意

圖片

直觀解釋爲,小集合和大集合增長一樣一個元素,小集合帶來的收益大於大集合的收益。

所以,能夠將上述優化問題轉化爲貪婪的形式:

圖片

即,每次選擇收益最大的 item ,直到知足條件爲止。

DPP 模型求解

求解該優化問題時,每次迭代的計算複雜度來源於行列式的計算,而求行列式的計算複雜度與該行列式長度的三次方成正比,即 圖片  ,這一結果顯然不適用於實際線上實時性較高的場景。下面,敘述論文中所作的改進:

首先對子矩陣 圖片 作Cholesky分解,使得:

 圖片

其中,V  是一個下三角矩陣。對於任意 圖片 ,對子集 Y 添加一個元素 i 以後的子矩陣作 Cholesky 分解,使得:

圖片

其中,有如下等式成立

圖片

兩邊取行列式後再取 log ,可得:

圖片

應用 Cholesky 分解後,每次迭代只須要計算 圖片 便可。而爲了獲得 圖片 ,先須要求解線性方程組:

圖片

求解獲得 圖片

 


  後,再帶入  圖片    獲得  圖片  。此過程的計算複雜度來源於求解線性方程組,雖然求解線性方程組的計算複雜度也是三次方,可是係數矩陣 V  是下三角矩陣,所以,每次迭代的計算複雜度可降到二次方。

即便計算複雜度降到了二次方,可是相比於目前主流的算法,可能依然沒有優點。所以,做者又考慮每次迭代也用增量的方式更新 圖片 和 圖片 ,從而避免了求解線性方程組帶來的計算複雜度。具體過程以下:

圖片

將帶入上式中,推導可得:

圖片

所以,每次迭代的計算複雜度進一步下降至一次方。

4、實驗結果

圖片

咱們假設給用戶推薦1000個內容,假設物品的數據是從2000到6000,咱們能夠看到咱們的加速效果能夠達到100倍量級,而且沒有任何性能損失。

圖片

另一個是咱們固定總的item數到6000,來變化 N 從500到2000,加速效果也是在百這個量級,性能損失也是沒有的。

圖片

這個是咱們另外的一個實驗,在倆個數據集上跑咱們的模型,而且對比MRR、ILAD、ILMD三個指標。

圖片

上圖爲各算法在運行時間上的對比。

圖片

橫座標表明相關性,縱座標表明多樣性,在這個數據上咱們的算法優於其餘三個算法,而 Cover 的性能是表現最好的。

圖片

而在這個數據集上 Cover 算法性能又很是差,而咱們的算法在這個數據集上表現仍是不錯的。

5、總結

基於行列式點過程的推薦多樣性提高算法使用貪婪算法推理最優的行列式點過程,並利用 Cholesky 加速行列式點過程的推理。該算法在推薦領域具備較好的應用,在豐富推薦多樣性和相關性的同時,大大提高了計算速度。

圖片

嘉賓介紹

陳拉明,2016年加入 Hulu 推薦算法研究團隊,現任高級研究員職位。

——END——


關於 DataFun:

DataFun 定位於最實用的數據智能平臺,主要形式爲線下的深度沙龍、線上的內容整理。但願將工業界專家在各自場景下的實踐經驗,經過 DataFun 的平臺傳播和擴散,對即將或已經開始相關嘗試的同窗有啓發和借鑑。

DataFun 的願景是:爲大數據、人工智能從業者和愛好者打造一個分享、交流、學習、成長的平臺,讓數據科學領域的知識和經驗更好的傳播和落地產生價值。

DataFun 成立至今,已經成功在全國範圍內舉辦數十場線下技術沙龍,有超過三百位的業內專家參與分享,彙集了數萬大數據、算法相關領域從業者。

圖片

相關文章
相關標籤/搜索