導航:首頁 > 凈水問答 > 協同過濾數據集

協同過濾數據集

發布時間:2022-12-14 10:42:30

⑴ python有實現協同過濾的庫嗎

本文主要抄內容為基於用戶偏好的相似性進行物品推薦,使用的數據集為 GroupLens Research 採集的一組從 20 世紀 90 年代末到 21 世紀初由 MovieLens 用戶提供的電影評分數據。數據中包含了約 6000 名用戶對約 4000 部電影的 100萬條評分,五分制。數據包可以從網上下載到,裡麵包含了三個數據表——users、movies、ratings。因為本文的主題是基於用戶偏好的,所以只使用 ratings 這一個文件。另兩個文件里分別包含用戶和電影的元信息。

⑵ hi,你好,涉及到協同過濾演算法,想請教你moivelens數據集的使用。

我這向抄正在做User-Based CF,用的也是MovieLens的數據集襲。
數據集包含了三個部分:1M 100K 10M100K
一開始用的是1M的數據,具體三個文件存儲了哪些內容readme文件下面都有。
現在用的是100K的數據,他已經把用於訓練和用於測試的數據分割好了,直接用就行了。

⑶ 矩陣分解在協同過濾推薦演算法中的應用

矩陣分解在協同過濾推薦演算法中的應用
推薦系統是當下越來越熱的一個研究問題,無論在學術界還是在工業界都有很多優秀的人才參與其中。近幾年舉辦的推薦系統比賽更是一次又一次地把推薦系統的研究推向了高潮,比如幾年前的Neflix百萬大獎賽,KDD CUP 2011的音樂推薦比賽,去年的網路電影推薦競賽,還有最近的阿里巴巴大數據競賽。這些比賽對推薦系統的發展都起到了很大的推動作用,使我們有機會接觸到真實的工業界數據。我們利用這些數據可以更好地學習掌握推薦系統,這些數據網上很多,大家可以到網上下載。
推薦系統在工業領域中取得了巨大的成功,尤其是在電子商務中。很多電子商務網站利用推薦系統來提高銷售收入,推薦系統為Amazon網站每年帶來30%的銷售收入。推薦系統在不同網站上應用的方式不同,這個不是本文的重點,如果感興趣可以閱讀《推薦系統實踐》(人民郵電出版社,項亮)第一章內容。下面進入主題。
為了方便介紹,假設推薦系統中有用戶集合有6個用戶,即U={u1,u2,u3,u4,u5,u6},項目(物品)集合有7個項目,即V={v1,v2,v3,v4,v5,v6,v7},用戶對項目的評分結合為R,用戶對項目的評分范圍是[0, 5]。R具體表示如下:

推薦系統的目標就是預測出符號「?」對應位置的分值。推薦系統基於這樣一個假設:用戶對項目的打分越高,表明用戶越喜歡。因此,預測出用戶對未評分項目的評分後,根據分值大小排序,把分值高的項目推薦給用戶。怎麼預測這些評分呢,方法大體上可以分為基於內容的推薦、協同過濾推薦和混合推薦三類,協同過濾演算法進一步劃分又可分為基於基於內存的推薦(memory-based)和基於模型的推薦(model-based),本文介紹的矩陣分解演算法屬於基於模型的推薦。
矩陣分解演算法的數學理論基礎是矩陣的行列變換。在《線性代數》中,我們知道矩陣A進行行變換相當於A左乘一個矩陣,矩陣A進行列變換等價於矩陣A右乘一個矩陣,因此矩陣A可以表示為A=PEQ=PQ(E是標准陣)。
矩陣分解目標就是把用戶-項目評分矩陣R分解成用戶因子矩陣和項目因子矩陣乘的形式,即R=UV,這里R是n×m, n =6, m =7,U是n×k,V是k×m。直觀地表示如下:

高維的用戶-項目評分矩陣分解成為兩個低維的用戶因子矩陣和項目因子矩陣,因此矩陣分解和PCA不同,不是為了降維。用戶i對項目j的評分r_ij =innerproct(u_i, v_j),更一般的情況是r_ij =f(U_i, V_j),這里為了介紹方便就是用u_i和v_j內積的形式。下面介紹評估低維矩陣乘積擬合評分矩陣的方法。
首先假設,用戶對項目的真實評分和預測評分之間的差服從高斯分布,基於這一假設,可推導出目標函數如下:

最後得到矩陣分解的目標函數如下:

從最終得到得目標函數可以直觀地理解,預測的分值就是盡量逼近真實的已知評分值。有了目標函數之後,下面就開始談優化方法了,通常的優化方法分為兩種:交叉最小二乘法(alternative least squares)和隨機梯度下降法(stochastic gradient descent)。
首先介紹交叉最小二乘法,之所以交叉最小二乘法能夠應用到這個目標函數主要是因為L對U和V都是凸函數。首先分別對用戶因子向量和項目因子向量求偏導,令偏導等於0求駐點,具體解法如下:

上面就是用戶因子向量和項目因子向量的更新公式,迭代更新公式即可找到可接受的局部最優解。迭代終止的條件下面會講到。
接下來講解隨機梯度下降法,這個方法應用的最多。大致思想是讓變數沿著目標函數負梯度的方向移動,直到移動到極小值點。直觀的表示如下:

其實負梯度的負方向,當函數是凸函數時是函數值減小的方向走;當函數是凹函數時是往函數值增大的方向移動。而矩陣分解的目標函數L是凸函數,因此,通過梯度下降法我們能夠得到目標函數L的極小值(理想情況是最小值)。
言歸正傳,通過上面的講解,我們可以獲取梯度下降演算法的因子矩陣更新公式,具體如下:

(3)和(4)中的γ指的是步長,也即是學習速率,它是一個超參數,需要調參確定。對於梯度見(1)和(2)。
下面說下迭代終止的條件。迭代終止的條件有很多種,就目前我了解的主要有
1) 設置一個閾值,當L函數值小於閾值時就停止迭代,不常用
2) 設置一個閾值,當前後兩次函數值變化絕對值小於閾值時,停止迭代
3) 設置固定迭代次數
另外還有一個問題,當用戶-項目評分矩陣R非常稀疏時,就會出現過擬合(overfitting)的問題,過擬合問題的解決方法就是正則化(regularization)。正則化其實就是在目標函數中加上用戶因子向量和項目因子向量的二范數,當然也可以加上一范數。至於加上一范數還是二范數要看具體情況,一范數會使很多因子為0,從而減小模型大小,而二范數則不會它只能使因子接近於0,而不能使其為0,關於這個的介紹可參考論文Regression Shrinkage and Selection via the Lasso。引入正則化項後目標函數變為:

(5)中λ_1和λ_2是指正則項的權重,這兩個值可以取一樣,具體取值也需要根據數據集調參得到。優化方法和前面一樣,只是梯度公式需要更新一下。
矩陣分解演算法目前在推薦系統中應用非常廣泛,對於使用RMSE作為評價指標的系統尤為明顯,因為矩陣分解的目標就是使RMSE取值最小。但矩陣分解有其弱點,就是解釋性差,不能很好為推薦結果做出解釋。
後面會繼續介紹矩陣分解演算法的擴展性問題,就是如何加入隱反饋信息,加入時間信息等。

⑷ Python實現協同過濾推薦演算法,用的大一些的數據集就報錯MemoryError

  1. python雖然易用,但是內存佔用比較多;所以如果你有C/C++/Java基礎,考慮用這些語專言來實現;

  2. CF演算法屬需要計算大量的相似度,如果能把中間結果存起來,或者簡化計算過程(如,你可能會重復計算一個item的均值)可以省下不少內存;(個人試過計算1w個用戶Pearson是沒問題的)

  3. 如果內存實在不夠用,那就用時間換空間,把中間計算結果分成小文件存到磁碟上,用的時候再讀取。

    供參考。

⑸ 協同過濾

協同過濾(Collaborative Filtering,CF)——經典/老牌
只用戶行為數據得到。對於 個用戶, 個物品,則有共現矩陣 :
對於有正負反饋的情況,如「贊」是1和「踩」是-1,無操作是0:

對於只有顯示反饋,如點擊是1,無操作是0:

演算法步驟:
1)得到共現矩陣 ;
2)計算 任意兩行 用戶相似度,得到用戶相似度矩陣 ;
3)針對某個用戶 選出與其最相似的 個用戶, 是超參數;——召回階段
4)基於這 個用戶,計算 對每個物品的得分;
5)按照用戶 的物品得分進行排序,過濾已推薦的物品,推薦剩下得分最高的 個。——排序階段

第2步中,怎麼計算用戶相似度?——使用共現矩陣的行
以餘弦相似度為標准,計算 和 之間的相似度:


第4步中,怎麼每個用戶對每個物品的得分?
假如和用戶 最相似的2個為 和 :


對物品 的評分為1,用戶 對物品 的評分也為1,那麼用戶 對 的評分為:

也就是說:利用用戶相似度對用戶評分進行加權平均:

其中, 為用戶 和用戶 之間的相似度, 為用戶 和物品 之間的相似度。

UserCF的缺點
1、現實中用戶數遠遠大於物品數,所以維護用戶相似度矩陣代價很大;
2、共現矩陣是很稀疏的,那麼計算計算用戶相似度的准確度很低。

演算法步驟:
1)得到共現矩陣 ;
2)計算 任意兩列 物品相似度,得到物品相似度矩陣 ;
3)對於有正負反饋的,獲得用戶 正反饋的物品;
4)找出用戶 正反饋的物品最相似的 個物品,組成相似物品集合;——召回階段
5)利用相似度分值對相似物品集合進行排序,生產推薦列表。——排序階段
最簡單情況下一個物品(用戶未接觸的)只出現在另一個物品(用戶已反饋的)的最相似集合中,那麼每個用戶對每個物品的得分就是相似度。如果一個物品和多個物品最相似怎麼辦?
如用戶正反饋的是 和 ,對於物品 其最相似的是 ,相似度為0.7,對於物品 其最相似的也是 ,相似度為0.6,那麼 相似度為:

也就是說:如果一個物品出現在多個物品的 個最相似的物品集合中,那麼該物品的相似度為多個相似度乘以對應評分的累加。

其中, 是物品p與物品h的相似度, 是用戶u對物品p的評分。

第2步中,怎麼計算物品相似度?——使用共現矩陣的列
以餘弦相似度為標准,計算 和 之間的相似度:


餘弦相似度
皮爾遜相關系數
基於皮爾遜相關系數的改進

UserCF適用於用戶興趣比較分散變換較快的場景,如新聞推薦。
IteamCF適用於用戶情趣不叫穩定的場景,如電商推薦。

優點:直觀,可解釋性強。
缺點:

⑹ 協同過濾中的可擴展性問題是什麼

協同過濾演算法能夠容易地為幾千名用戶提供較好的推薦,但是對於電子商務網站,往往需要給成百上千萬的用戶提供推薦,這就一方面需要提高響應時間的要求,能夠為用戶實時地進行推薦;另一方面還應考慮到存儲空間的要求,盡量減少推薦系統運行的負擔。

1.3 可擴展性問題

在協同過濾推薦演算法中,全局數值演算法能及時利用最新的信息為用戶產生相對准確的用戶興趣度預測或進行推薦,但是面對日益增多的用戶,數據量的急劇增加,演算法的擴展性問題(即適應系統規模不斷擴大的問題)成為制約推薦系統實施的重要因素。雖然與基於模型的演算法相比,全局數值演算法節約了為建立模型而花費的訓練時間,但是用於識別「最近鄰居」演算法的計算量隨著用戶和項的增加而大大增加,對於上百萬的數目,通常的演算法會遇到嚴重的擴展性瓶頸問題。該問題解決不好,直接影響著基於協同過濾技術的推薦系統實時向用戶提供推薦問題的解決,而推薦系統的實時性越好,精確度越高,該系統才會被用戶所接受。

基於模型的演算法雖然可以在一定程度上解決演算法的可擴展性問題,但是該類演算法往往比較適於用戶的興趣愛好比較穩定的情況,因為它要考慮用戶模型的學習過程以及模型的更新過程,對於最新信息的利用比全局數值演算法要差些。

分析以上協同過濾在推薦系統實現中面臨的兩個問題,它們的共同點是均考慮到了最近鄰居的形成問題(包括用戶信息獲得的充分性、計算耗費等)。但是應該看到協同過濾在推薦系統的實現中,要獲得最近鄰居用戶,必須通過一定的計算獲得用戶之間的相似度,然後確定最佳的鄰居個數,形成鄰居用戶集。而在這一過程中,如果對全部數據集進行相似性計算,雖然直接,但是運算量和時間花費都極大,無法適應真實的商務系統。如果通過對訓練集數據(整個數據集的某一子集)進行實驗獲得,雖然不必對整個數據集進行計算,但是必須通過將多次實驗結果統計出來才可能得到,這無疑也增加了推薦結果獲得的代價和誤差。並且如果考慮到數據集的動態變化,這一形成最近鄰居用戶集技術的實際應用價值越來越小。因此,考慮使用更為有效的最近鄰居用戶形成辦法,對於協同過濾的應用非常必要。

⑺ Neural Collaborative Filtering(神經協同過濾)

論文討論的主要是隱性反饋協同過濾解決方案,先來明確兩個概念:顯性反饋和隱性反饋:

顯性反饋行為包括用戶明確表示對物品喜好的行為
隱性反饋行為指的是那些不能明確反應用戶喜好

舉例來說:

很多應用場景,並沒有顯性反饋的存在。因為大部分用戶是沉默的用戶,並不會明確給系統反饋「我對這個物品的偏好值是多少」。因此,推薦系統可以根據大量的隱性反饋來推斷用戶的偏好值。

根據已得到的隱性反饋數據,我們將用戶-條目交互矩陣Y定義為:

但是,Yui為1僅代表二者有交互記錄,並不代表用戶u真的喜歡項目i,同理,u和i沒有交互記錄也不能代表u不喜歡i。這對隱性反饋的學習提出了挑戰,因為它提供了關於用戶偏好的雜訊信號。雖然觀察到的條目至少反映了用戶對項目的興趣,但是未查看的條目可能只是丟失數據,並且這其中存在自然稀疏的負反饋。
在隱性反饋上的推薦問題可以表達為估算矩陣 Y中未觀察到的條目的分數問題(這個分數被用來評估項目的排名)。形式上它可以被抽象為學習函數:

為了處理缺失數據,有兩種常見的做法:要麼將所有未觀察到的條目視作負反饋,要麼從沒有觀察到條目中抽樣作為負反饋實例。

傳統的求解方法是矩陣分解(MF,Matrix Factorization),為每個user和item找到一個隱向量,問題變為:

這里的 K表示隱式空間(latent space)的維度。正如我們所看到的,MF模型是用戶和項目的潛在因素的雙向互動,它假設潛在空間的每一維都是相互獨立的並且用相同的權重將它們線性結合。因此,MF可視為隱向量(latent factor)的線性模型。

論文中給出了一個例子來說明這種演算法的局限性:

1(a)是user-item交互矩陣,1(b)是用戶的隱式空間,論文中強調了兩點來理解這張圖片:
1)MF將user和item分布到同樣的隱式空間中,那麼兩個用戶之間的相似性也可以用二者在隱式空間中的向量夾角來確定。
2)使用Jaccard系數來作為真實的用戶相似性。
通過MF計算的相似性與Jaccard系數計算的相似性也可以用來評判MF的性能。我們先來看看Jaccard系數

上面的示例顯示了MF因為使用一個簡單的和固定的內積,來估計在低維潛在空間中用戶-項目的復雜交互,從而所可能造成的限制。解決該問題的方法之一是使用大量的潛在因子 K (就是隱式空間向量的維度)。然而這可能對模型的泛化能力產生不利的影響(e.g. 數據的過擬合問題),特別是在稀疏的集合上。論文通過使用DNNs從數據中學習交互函數,突破了這個限制。

論文先提出了一種通用框架:

針對這個通用框架,論文提出了三種不同的實現,三種實現可以用一張圖來說明:

GMF
上圖中僅使用GMF layer,就得到了第一種實現方式GMF,GMF被稱為廣義矩陣分解,輸出層的計算公式為:

MLP
上圖中僅使用右側的MLP Layers,就得到了第二種學習方式,通過多層神經網路來學習user和item的隱向量。這樣,輸出層的計算公式為:

NeuMF
結合GMF和MLP,得到的就是第三種實現方式,上圖是該方式的完整實現,輸出層的計算公式為:

論文的實驗用於回答以下研究問題:

RQ1 我們提出的NCF方法是否勝過 state-of-the-art 的隱性協同過濾方法?

RQ2 我們提出的優化框架(消極樣本抽樣的log loss)怎樣為推薦任務服務?

RQ3 更深的隱藏單元是不是有助於對用戶項目交互數據的學習?

接下來,首先介紹實驗設置,其次是回答上述三個問題。

數據集使用了兩個公開的數據集:MovieLens 和 Pinterest 兩個數據集,它們的特徵總結在表1中

1.MovieLens :這個電影評級數據集被廣泛地用於評估協同過濾演算法。論文使用的是包含一百萬個評分的版本,每個用戶至少有20個評分。 雖然這是顯性反饋數據集,但論文有意選擇它來挖掘(模型)從顯式反饋中學習隱性信號的表現。為此,論文將其轉換為隱式數據,其中每個條目被標記為0或1表示用戶是否已對該項進行評級。

2.Pinterest :這個隱含的反饋數據的構建用於評估基於內容的圖像推薦。原始數據非常大但是很稀疏。 例如,超過20%的用戶只有一個pin(pin類似於贊一下),使得難以用來評估協同過濾演算法。 因此,論文使用與MovieLens數據集相同的方式過濾數據集:僅保留至少有過20個pin的用戶。處理後得到了包含55,187個用戶和1,580,809個項目交互的數據的子集。 每個交互都表示用戶是否將圖像pin在自己的主頁上。

評估方案 : 為了評價項目推薦的性能,論文採用了leave-one-out方法(留一法)評估,該方法已被廣泛地應用於文獻。即:對於每個用戶,論文將其最近的一次交互作為測試集(數據集一般都有時間戳),並利用餘下的培訓作為訓練集。由於在評估過程中為每個用戶排列所有項目花費的時間太多,所以遵循一般的策略,隨機抽取100個不與用戶進行交互的項目,將測試項目排列在這100個項目中。排名列表的性能由命中率(HR)和歸一化折扣累積增益(NDCG)來衡量。 沒有特別說明的話,論文將這兩個指標的排名列表截斷為10。如此一來,HR直觀地衡量測試項目是否存在於前10名列表中,而NDCG通過將較高分數指定為頂級排名來計算命中的位置。論文計算了每個測試用戶的這兩個指標,並求取了平均分。

−ItemPop 。按項目的互動次數判斷它的受歡迎程度,從而對項目進行排名。 這對基於評估推薦性能來說是一種非個性化的方法。
−ItemKNN 。這是基於項目的標准協同過濾方法。
−BPR 。該方法優化了使用公式的MF模型,該模型具有成對排序損失,BPR調整它使其可以從隱式反饋中學習。它是項目推薦基準的有力競爭者。論文使用固定的學習率,改變它並報告了它最佳的性能。
−eALS 。這是項目推薦的 state-of-the-art 的MF方法。

HR(命中率)和 NDCG(歸一化折損累計增益),HR直觀地衡量測試項目是否存在於前10名列表中,而NDCG通過將較高分數指定為頂級排名來計算命中的位置,重點介紹NDCG

NDCG這個名字可能比較嚇人,但背後的思想卻很簡單.一個推薦系統返回一些item並形成一個列表,我們想要計算這個列表有多好,每一項都有一個相關的評分值,通常這些評分值是一個非負數,這就是gain(增益).此外對於這些沒有用戶反饋的項我們通常設置起增益為0.

累計增益(CG)

我們將這些增益相加就是Cumulative Gain(累計增益,CG),CG就是將每個推薦結果相關性的分支累加後作為整個推薦列表的得分.

rel i 表示處於位置i的推薦結果的相關性,k表示要考察的推薦列表的大小.

折損累計增益(DCG)

CG的一個缺點是沒有考慮每個推薦結果處於不同位置對整個推薦效果的影響,例如我們總是希望相關性高的結果應該排在前面 .顯然,如果相關性低的結果排在靠前的位置會嚴重影響用戶的體驗,所以在CG的基礎上引入位置影響因素,即DCG(Discounted Cumulative Gain),這里指的是對於排名靠後推薦結果的推薦效果進行「打折處理」。假設排序越往後,價值越低。到第i個位置的時候,它的價值是 1/log 2 (i+1),那麼第i個結果產生的效益就是 rel i * 1/log 2 (i+1),所以::

從上面的式子可以得到兩個結論:
1.推薦結果的相關性越大,DCG越大
2.相關性好的排在推薦列表前面的話,推薦效果越好,DCG越大.

歸一化折損累計增益(NDCG)

DCG仍然有不足之處,即 不同的推薦的推薦列表之間,很難進行橫向的評估,而我們評估一個推薦系統不可能僅使用一個用戶的推薦列表及相應結果進行評估,而是對整個測試機中的用戶及其推薦列表結果進行評估 .那麼不同的用戶的推薦列表的評估分數就需要進行歸一化,也即NDCG(Normalized Discounted Cumulative Gain,歸一化折損累計增益).
在介紹NDCG之前還需要知道另一個概念,IDCG(Ideal DCG),指推薦系統為某一用戶返回的最好推薦結果列表,即假設返回結果按照相關性排序,最相關的結果放在前面,此序列的DCG為IDCG.因此DCG的值介於(0,IDCG],故NDCG的值介於(0,1]。NDCG計算公式:

IDCG為理想情況下最大的DCG值。

其中 |REL| 表示,結果按照相關性從大到小的順序排序,取前p個結果組成的集合。也就是按照最優的方式對結果進行排序。

實際的例子

假設推薦系統返回來的5個結果,其模型評分分別是 1.2、0.7、0.1、0.2、4.0。

我們首先通過公式4.2計算出DCG值為2.39278,按照公式4.4來計算出iDCG的值為3.6309

最後通過公式4.3計算出NDCG為65%

更多的推薦模型評估方法參考: https://statusrank.coding.me/articles/639f7364.html

圖4(Figure 4)顯示了 HR@10 和 NDCG@10 相對於預測因素數量的性能。
圖5(Figure 5)顯示了Top-K推薦列表的性能,排名位置K的范圍為1到10。
總的來看論文提出的NeuMF模型(結合GMF和MLP)效果不錯,對比其他方法都要好。

Figure 6 表示將模型看作一個二分類任務並使用logloss作為損失函數時的訓練效果。
Figure7 表示采樣率對模型性能的影響(橫軸是采樣率,即負樣本與正樣本的比例)。

上面的表格設置了兩個變數,分別是Embedding的長度K和神經網路的層數,使用類似網格搜索的方式展示了在兩個數據集上的結果。增加Embedding的長度和神經網路的層數是可以提升訓練效果的。

⑻ 協同過濾(2): KDD2020- HyperGraph CF 基於超圖

協同過濾推薦系統是當今眾多推薦系統中最流行和最重要的推薦方法之一。

盡管已經被廣泛採用,但是現有的基於 cf 的方法,從矩陣分解到新興的基於圖的方法, 在訓練數據非常有限的情況下表現不佳 (數據稀疏問題)。

本文首先指出了造成這種不足的根本原因,並指出現有基於 CF 的方法固有的兩個缺點,即: 1)用戶和物品建模不靈活; 2)高階相關性建模不足。

在這種情況下,文中提出了一個雙通道超圖協同過濾(DHCF)框架來解決上述問題。

首先,引入 雙通道學習策略 (Dual-Channel),全面利用分治策略,學慣用戶和物品的表示,使這兩種類型的數據可以優雅地相互連接,同時保持其特定屬性。

其次, 利用超圖結構對用戶和具有顯式混合高階相關性的物品進行建模 。提出了跳躍超圖卷積(JHConv)方法,實現高階關系嵌入的顯式和有效傳播。

推薦系統的核心是一系列的推薦演算法,這些演算法能夠**根據用戶的個人特徵有效地從爆炸式信息篩選出信息。協同過濾是目前最受歡迎和廣泛採用的方法之一。

CF 持有一個基本的假設,當向用戶提供推薦時: 那些行為相似的人(例如,經常訪問同一個網站)很可能在物品(例如,音樂、視頻、網站)上分享相似的偏好。
為了實現這一點,一個典型的基於 CFbased 方法執行一個兩步策略: 它首先利用歷史交互區分相似的用戶和項目; 然後基於上面收集的信息,向特定用戶生成推薦。

現有的 CF 方法可以分為三類。

雖然 CF 方法已經研究了多年,但仍然存在局限性,特別是在訓練的先驗知識非常有限的情況下。為了理解這些缺陷,深入挖掘現有 CF 方法的內在機製得到以下局限性:

基於這些生成的連接組,即超邊,可以分別為用戶和物品構造兩個超圖,即兩個通道的表示。本文提出了一種新的跳躍超圖卷積演算法(JHConv) ,該演算法通過聚合鄰域的嵌入並引入先驗信息,有效地在超圖上進行信息傳播。(與傳統的基於圖的方法對比,用戶超圖和項目超圖,可以更靈活地進行復雜的數據關聯建模,並與不同類型的數據結合。)

超圖定義為 ,V表示圖節點, 表示超邊集合,超圖鄰接矩陣 描述節點與超邊的關系

在高層次上,DHCF 首先通過一個雙通道超圖框架學慣用戶和物品的兩組嵌入,在此框架上,DHCF 通過計算用戶和物品嵌入查找表的內積,進一步計算出用戶-項目偏好矩陣。基於這樣的偏好矩陣,DHCF 估計用戶對某個商品感興趣的可能性。

總體分為三步:

構建用戶和物品嵌入矩陣:

為了在預定義的混合高階關繫上聚合相鄰消息,執行以下高階消息傳遞:

為了提取有區別的信息,我們對用戶和物品定義為

綜上所述,上述兩個過程構成了一個集成的DHCF 層,允許對用戶和物品進行明確的建模和編碼,並通過強大的嵌入功能進一步更新和生成更精確的嵌入超圖結構。這種精細嵌入可以進一步應用於推薦系統中的各種下游任務。

與 傳統 HGNNConv 相比,JHConv 允許模型同時考慮其原始特徵和聚合相關表示,在另一方面,這樣的 resnet結構的跳躍連接使模型能夠避免由於集成了許多其他連接而導致的信息稀釋。

引入高階關聯來實現構建超邊,根據自定義的規則分別對用戶和物品進行高階關聯提取

定義1: 物品的 k 階可達鄰居。在用戶-物品交互圖,更具體地說是二部圖中,如果在 itemi 和 itemj 之間存在一個相鄰頂點序列(即一條路) ,且該路徑中的用戶數小於 k,itemi (itemj)是 itemi (itemi)的 k 階可達鄰居。

定義2: 物品的 k階可達用戶。在物品-用戶二部圖中,如果用戶 j 和物品 k 之間存在直接交互作用,則用戶 j 是 itemi 的 k 階可達鄰居,而物品 k 是 itemi 的 k 階可達鄰居。

對於 itemi,其 k 階可達用戶集稱為 。從數學上講,超圖可以定義在一個集簇上,其中每個集代表一個超邊。因此,這里可以通過物品的 k 階可達用戶集構建超邊。

然後在用戶 k 階可達規則的基礎上構造高階超邊組,該超邊組可表示為:

假設通過K階可達規則,構造a個超邊組,最後的超圖需要將這a個超邊組做融合,見上面的總體框架中的描述。

同理,按照相似的K階可達的規則,對物品進行分析,構成物品的超邊(N個用戶,M個物品)

在實驗中,每個用戶觀察到的交互中的10% 被隨機選擇用於訓練,其餘的數據用於測試。這樣的設置增加了 CF 任務的難度,因為模型只能獲取非常有限的觀察到的交互。此外,由於數據的高度稀疏性,它可以很好地評價模型從有限的隱式數據集中挖掘有用信息的能力。對於所有四個數據集,每個用戶至少有兩個用於訓練的交互。

這篇工作基於超圖結構,提出了一種新的CF框架,與基於圖神經網路的CF相比,超圖結構更符合實際情況;此外,雙通道的思路也值得借鑒,之前也分析的一篇雙通道BPR的論文。近年來,基於圖神經網路的推薦已經成為研究主流,而其中超圖相關的工作少之又少,最近看到的另一篇是SIGIR2020上的一篇Next Item Recommendation with Sequential Hypergraphs,在超圖神經網路上並沒多大的改進,重點仍然在於如何用這種結構去解決存在的問題。

如果覺得有用,歡迎點贊關注贊賞,若對推薦感興趣歡迎評論區/私信交流~~~

⑼ 協同過濾演算法

用戶行為數據在網站上最簡單的存在形式就是日誌,比如用戶在電子商務網站中的網頁瀏覽、購買、點擊、評分和評論等活動。 用戶行為在個性化推薦系統中一般分兩種——顯性反饋行為(explicit feedback)和隱性反饋 行為(implicit feedback)。顯性反饋行為包括用戶明確表示對物品喜好的行為。網站中收集顯性反饋的主要方式就是評分和喜歡/不喜歡。隱性反饋行為指的是那些不能明確反應用戶喜好 的行為。最具代表性的隱性反饋行為就是頁面瀏覽行為。 按照反饋的明確性分,用戶行為數據可以分為顯性反饋和隱性反饋,但按照反饋的方向分, 又可以分為正反饋和負反饋。正反饋指用戶的行為傾向於指用戶喜歡該物品,而負反饋指用戶的 行為傾向於指用戶不喜歡該物品。在顯性反饋中,很容易區分一個用戶行為是正反饋還是負反饋, 而在隱性反饋行為中,就相對比較難以確定。

在利用用戶行為數據設計推薦演算法之前,研究人員首先需要對用戶行為數據進行分析,了解 數據中蘊含的一般規律,這樣才能對演算法的設計起到指導作用。

(1) 用戶活躍度和物品流行度

(2) 用戶活躍度和物品流行度的關系

一般認為,新用戶傾向於瀏覽熱門的物品,因為他 們對網站還不熟悉,只能點擊首頁的熱門物品,而老用戶會逐漸開始瀏覽冷門的物品。如果用橫坐標表示用戶活躍度,縱坐標表示具有某個活躍度的所有用戶評過分的物品的平均流行度。圖中曲線呈明顯下 降的趨勢,這表明用戶越活躍,越傾向於瀏覽冷門的物品。

僅僅基於用戶行為數據設計的推薦演算法一般稱為協同過濾演算法。學術界對協同過濾演算法進行了深入研究,提出了很多方法,比如基於鄰域的方法(neighborhood-based)、隱語義模型 (latent factor model)、基於圖的隨機遊走演算法(random walk on graph)等。在這些方法中, 最著名的、在業界得到最廣泛應用的演算法是基於鄰域的方法,而基於鄰域的方法主要包含下面兩種演算法。

基於用戶的協同過濾演算法 :這種演算法給用戶推薦和他興趣相似的其他用戶喜歡的物品

基於物品的協同過濾演算法: 這種演算法給用戶推薦和他之前喜歡的物品相似的物品

基於鄰域的演算法是推薦系統中最基本的演算法,該演算法不僅在學術界得到了深入研究,而且在 業界得到了廣泛應用。基於鄰域的演算法分為兩大類,一類是基於用戶的協同過濾演算法,另一類是 基於物品的協同過濾演算法。現在我們所說的協同過濾,基本上就就是指基於用戶或者是基於物品的協同過濾演算法,因此,我們可以說基於鄰域的演算法即是我們常說的協同過濾演算法

(1) 基於用戶的協同過濾演算法(UserCF)

基於用戶的協同過濾演算法的基本思想是:在一個在線個性化推薦系統中,當一個用戶A需要個性化推薦 時,可以先找到和他有相似興趣的其他用戶,然後把那些用戶喜歡的、而用戶A沒有聽說過的物品推薦給A。

Ø 從上面的描述中可以看到,基於用戶的協同過濾演算法主要包括兩個步驟。 第一步:找到和目標用戶興趣相似的用戶集合。 第二步: 找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶。

這里,步驟1的關鍵是計算兩個用戶的興趣相似度,協同過濾演算法主要利用行為的相似度計算興趣的相似度。給定用戶u和用戶v,令N(u)表示用戶u曾經有過正反饋的物品集合,令N(v) 為用戶v曾經有過正反饋的物品集合。那麼我們可以通過以下方法計算用戶的相似度:

基於餘弦相似度

(2) 基於物品的協同過濾演算法(itemCF)
與UserCF同理
(3) UserCF和itemCF的比

首先我們提出一個問題,為什麼新聞網站一般使用UserCF,而圖書、電商網站一般使用ItemCF呢? 首先回顧一下UserCF演算法和ItemCF演算法的推薦原理。UserCF給用戶推薦那些和他有共同興 趣愛好的用戶喜歡的物品,而ItemCF給用戶推薦那些和他之前喜歡的物品類似的物品。從這個算 法的原理可以看到,UserCF的推薦結果著重於反映和用戶興趣相似的小群體的熱點,而ItemCF 的推薦結果著重於維系用戶的歷史興趣。換句話說,UserCF的推薦更社會化,反映了用戶所在的小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反映了用戶自己的興趣傳承。 在新聞網站中,用戶的興趣不是特別細化,絕大多數用戶都喜歡看熱門的新聞。個性化新聞推薦更加強調抓住 新聞熱點,熱門程度和時效性是個性化新聞推薦的重點,而個性化相對於這兩點略顯次要。因 此,UserCF可以給用戶推薦和他有相似愛好的一群其他用戶今天都在看的新聞,這樣在抓住熱 點和時效性的同時,保證了一定程度的個性化。同時,在新聞網站中,物品的更新速度遠遠快於新用戶的加入速度,而且 對於新用戶,完全可以給他推薦最熱門的新聞,因此UserCF顯然是利大於弊。

但是,在圖書、電子商務和電影網站,比如亞馬遜、豆瓣、Netflix中,ItemCF則能極大地發 揮優勢。首先,在這些網站中,用戶的興趣是比較固定和持久的。一個技術人員可能都是在購買 技術方面的書,而且他們對書的熱門程度並不是那麼敏感,事實上越是資深的技術人員,他們看 的書就越可能不熱門。此外,這些系統中的用戶大都不太需要流行度來輔助他們判斷一個物品的 好壞,而是可以通過自己熟悉領域的知識自己判斷物品的質量。因此,這些網站中個性化推薦的 任務是幫助用戶發現和他研究領域相關的物品。因此,ItemCF演算法成為了這些網站的首選演算法。 此外,這些網站的物品更新速度不會特別快,一天一次更新物品相似度矩陣對它們來說不會造成 太大的損失,是可以接受的。同時,從技術上考慮,UserCF需要維護一個用戶相似度的矩陣,而ItemCF需要維護一個物品 相似度矩陣。從存儲的角度說,如果用戶很多,那麼維護用戶興趣相似度矩陣需要很大的空間, 同理,如果物品很多,那麼維護物品相似度矩陣代價較大

下表是對二者的一個全面的表較:

⑽ 推薦演算法之模型協同過濾(1)-關聯規則

關聯規則是數據挖掘中的典型問題之一,又被稱為購物籃分析,這是因為傳統的關聯規則案例大多發生在超市中,例如所謂的啤酒與尿布傳說。事實上,「購物籃」這個詞也揭示了關聯規則挖掘的一個重要特點:以交易記錄為研究對象,每一個購物籃(transaction)就是一條記錄。關聯規則希望挖掘的規則就是:哪些商品會經常在同一個購物籃中出現,其中有沒有因果關系。為了描述這種「經常性」及「因果關系」,分析者定義了幾個指標,基於這些指標來篩選關聯規則,從而得到那些不平凡的規律。

(1)計算支持度
支持度計數:一個項集出現在幾個事務當中,它的支持度計數就是幾。例如{Diaper, Beer}出現在事務 002、003和004中,所以它的支持度計數是3
支持度:支持度計數除於總的事務數。例如上例中總的事務數為4,{Diaper, Beer}的支持度計數為3,所以它的支持度是3÷4=75%,說明有75%的人同時買了Diaper和Beer。

(2)計算置信度
置信度:對於規則{Diaper}→{Beer},{Diaper, Beer}的支持度計數除於{Diaper}的支持度計數,為這個規則的置信度。例如規則{Diaper}→{Beer}的置信度為3÷3=100%。說明買了Diaper的人100%也買了Beer。

一般地,關聯規則被劃分為動態推薦,而協同過濾則更多地被視為靜態推薦。
所謂動態推薦,就是推薦的基礎是且只是當前一次(最近一次)的購買或者點擊。譬如用戶在網站上看了一個啤酒,系統就找到與這個啤酒相關的關聯規則,然後根據這個規則向用戶進行推薦。而靜態推薦則是在對用戶進行了一定分析的基礎上,建立了這個用戶在一定時期內的偏好排序,然後在這段時期內持續地按照這個排序來進行推薦。由此可見,關聯規則與協同過濾的策略思路是完全不同的類型。
事實上,即便在當下很多能夠拿到用戶ID的場景,使用動態的關聯規則推薦仍然是值得考慮的一種方法(尤其是我們經常把很多推薦方法的結果綜合起來做一個混合的推薦),因為這種方法的邏輯思路跟協同過濾有著本質的不同,問題似乎僅僅在於:個人的偏好到底有多穩定,推薦到底是要迎合用戶的長期偏好還是用戶的當下需求。

挖掘關聯規則主要有Apriori演算法和FP-Growth演算法。後者解決了前者由於頻繁的掃描數據集造成的效率低下缺點。以下按照Apriori演算法來講解。

step 1: 掃描數據集生成滿足最小支持度的頻繁項集。
step 2: 計算規則的置信度,返回滿足最小置信度的規則。

如下所示,當用戶購買1商品時推薦2、3商品

閱讀全文

與協同過濾數據集相關的資料

熱點內容
印染廢水中cod排放量是多少 瀏覽:245
冷干機的濾芯如何拆下來 瀏覽:552
海爾凈水器出水管介面怎麼拆 瀏覽:13
河北水垢漏斗 瀏覽:689
白雲區農村ppp污水項目 瀏覽:498
安吉爾水壺濾芯怎麼拆 瀏覽:318
電廠化學廢水調整及注意事項 瀏覽:892
什麼叫納米微晶技術凈化器 瀏覽:43
百佳境界凈水器如何 瀏覽:695
甲醇蒸餾塔再沸器的原理 瀏覽:268
ro膜氯化 瀏覽:984
潔廁靈能除垢 瀏覽:459
油煙機凈化器的價格多少錢一台 瀏覽:334
凈化器電源怎麼測量 瀏覽:332
wq污水提升泵 瀏覽:415
污水處理50戶需多少立方池 瀏覽:656
樹脂是不是ab膠 瀏覽:694
減壓蒸餾怎麼拆 瀏覽:544
飲水機為什麼加熱一會就保溫 瀏覽:287
電解法處理污水基於什麼原理 瀏覽:229