導航:首頁 > 凈水問答 > 協同過濾演算法答辯ppt

協同過濾演算法答辯ppt

發布時間:2023-03-11 23:33:52

⑴ 推薦系統論文閱讀(二十三)-神經圖協同過濾NGCF

論文:

論文題目:《Neural Graph Collaborative Filtering》

論文地址: https://arxiv.org/pdf/1905.08108.pdf

本論文是關於圖結構的協同過濾演算法,在原始的矩陣分解和基於深度學習的方法中,通常是通過映射描述用戶(或物品)的現有特徵(例如ID和屬性)來獲得用戶(或物品)的嵌入。從而利用user和item的embedding進行協同召回。但是作者認為這種方法的固有缺點是:在user與item的interaction數據中潛伏的 協作信號(collaborative signal) 未在嵌入過程中進行編碼。這樣,所得的嵌入可能不足以捕獲協同過濾效果。

讓我們一起來看一下本論文是怎麼利用數據中潛伏的協作信號的吧。

推薦演算法被廣泛的運用在各個領域中,在電商領域,社交媒體,廣告等領域都發揮著至關重要的作用。推薦系統的核心內容就是根據用戶以前的購買和點擊行為來評估用戶對一個物品的喜愛程度,從而針對每個用戶進行個性化推薦。協同過濾演算法認為歷史行為相似的用戶之間的興趣是相同的,所以給用戶推薦的是同類型用戶的愛好,也就是UserCF,而ItemCF給用戶推薦的是跟歷史行為相近的物品。

傳統的協同過濾方法要麼是基於矩陣分解,要麼是基於深度學習的,這兩種方法都忽略了一個非常關鍵的信息---user和item交互的協作信號,該信號隱藏在user和item的交互過程中。原始的協同過濾方法忽略了這種信息,所以在進行user 和 item representation時就不足以較好的進行embedding。

本論文通過將用戶項交互(更具體地說是二分圖結構)集成到embedding過程中,開發了一個新的推薦框架神經圖協同過濾(NGCF),該框架通過在其上傳播embedding來利用user-item圖結構。這種方法在用戶項目圖中進行高階連通性的表達建模,從而以顯式方式將協作信號有效地注入到embedding過程中。

在介紹模型之前先來講解一下什麼是useritem interaction以及什麼是高階的useritem interaction。

我們先看左邊的圖,這個圖就是useritem interaction,u1是我們待推薦的用戶,用雙圓圈表示,他交互過的物品有i1,i2,i3。在看右邊這個樹形結構的圖,這個圖是u1的高階interaction圖,注意只有l > 1的才是u1的高階連接。觀察到,這么一條路徑,u1 ← i2 ← u2,指示u1和u2之間的行為相似性,因為兩個用戶都已與i2進行了交互。而另一條更長的路徑,u1←i2←u2←i4暗示u1可能會點擊i4,因為他的相似用戶u2之前已經購買過i4。另一方面,用戶u1在l = 3這一層會更傾向於i4而不是i5,理由是i4到u1有兩條路徑而i5隻有一條。

當然這種樹結構是不可能通過構建真正的樹節點來表示的,因為樹模型比較復雜,而且結構很大,沒法對每個用戶構建一個樹,這樣工作量太大了。那麼怎麼設計模型結構可以達到跟這個high-order connectivity的效果呢,這個就要運用到神經網路了。通過設計一個embedding propagation layer來表示這種embedding 在每個層之間的傳遞。

還是拿上面那張圖舉例子,堆疊兩層可捕獲u1←i2←u2的行為相似性,堆疊三層可捕獲u1←i2←u2←i4的潛在推薦以及信息流的強度(由層之間的可訓練權重來評估),並確定i4和i5的推薦優先順序。

這個跟傳統的embedding是一樣的,都是對原始的userID和itemID做embedding,跟傳統embedding不同的地方是,在我們的NGCF框架中,我們通過在用戶-項目交互圖上傳播embedding來優化embedding。 由於embedding優化步驟將協作信號顯式注入到embedding中,因此可以為推薦提供更有效的embedding。

這一層是本文的核心內容,下面我們來進行詳細的解讀。

從直觀上來看,用戶交互過的item會給用戶的偏好帶來最直接的依據。類似地,交互過某個item的用戶可以視為該item的特徵,並可以用來衡量兩個item的協同相似性。 我們以此為基礎在連接的用戶和項目之間執行embedding propogation,並通過兩個主要操作來制定流程:消息構建和消息聚合。

Message Construction(消息構建)

對於連接的user-item對(u,i),我們定義從i到u的消息為:

其中ei是i的embedding,eu是u的embedding,pui是用於控制每次傳播的衰減因子,函數f是消息構建函數,f的定義為:

其中W1和W2用來提取有用的embedding信息,可以看到W2控制的i和u直接的交互性,這使得消息取決於ei和eu之間的親和力,比如,傳遞更多來自相似項的消息。

另一個重要的地方是Nu和Ni,pui = 1/ 。Nu和Ni表示用戶u和item i的第一跳鄰居。 從表示學習的角度來看,pui反映了歷史item對用戶偏好的貢獻程度。 從消息傳遞的角度來看,考慮到正在傳播的消息應隨路徑長度衰減,因此pui可以解釋為折扣因子。

Message Aggregation

聚合方法如下 :

其中 表示在第一嵌入傳播層之後獲得的用戶u的表示。激活函數採用的是leakyrelu,這個函數適合對pos和neg信號進行編碼。

另一個重要的信息是 ,它的定義如下:

這個信息的主要作用是保留原始的特徵信息。

至此,我們得到了 ,同樣的方法,我們也能獲得 ,這個都是first order connectivoty的信息。

根據前面的計算方式,我們如果將多個Embedding Propagation Layers進行堆疊,我們就可以得到high order connectivity信息了:

計算方式如下:

當我看到這里的時候,我的腦子里產生了一個大大的疑惑,我們在計算第l層的eu和ei時都需要第l-1層的信息,那麼我們怎麼知道ei和eu在第l層是否存在呢?也就是說出現u側的總層數l大於i側總層數的時候,我們如何根據第l-1層的ei來計算第l層的e呢?經過思考,我感覺應該是這樣的,訓練樣本應該是一條path,也就是這個例子是u1 ← i2 ← u2 ← i4這條path,所以可以保證u1跟i4的層數l是一樣的,所以不存在上面那個層數不匹配的問題。

ps:看到後面的實驗結果才知道L是固定的所以每一層都不會缺失。

還有一個就是,不同層之間的W是不一樣的,每一層都有著自己的參數,這個看公式就知道,理由就是我們在提取不同層信息的時候需要不同的W進行信息提取。

另一個疑惑是pui到底是不是每一個l層都一樣?這里看公式好像就是指的是第一跳的Nu和Ni進行就計算的結果。

這部分內容是為了在進行batch訓練的時候進行矩陣運算所推導的數學過程,其實跟之前我們講的那個過程在數學上的計算是完全一樣的,你想像一下,如果不用矩陣進行運算,在訓練過程中要如何進行這么復雜的交互運算。

當進行了l層的embedding propagation後,我們就擁有了l個eu和l個ei,我們將他們進行concate操作:

這樣,我們不僅可以通過嵌入傳播層豐富初始嵌入,還可以通過調整L來控制傳播范圍。

最後,我們進行內積計算,以評估用戶對目標商品的偏好:

採用的是pair-wise方式中的bpr loss:

⑵ https://.baidu.com/question/2270990967816553188.html

整理一下自己的理解。
對於一個users-procts-rating的評分數據集,ALS會建立一個user*proct的m*n的矩陣
其中,m為users的數量,n為procts的數量
但是在這個數據集中,並不是每個用戶都對每個產品進行過評分,所以這個矩陣往往是稀疏的,用戶i對產品j的評分往往是空的
ALS所做的事情就是將這個稀疏矩陣通過一定的規律填滿,這樣就可以從矩陣中得到任意一個user對任意一個proct的評分,ALS填充的評分項也稱為用戶i對產品j的預測得分
所以說,ALS演算法的核心就是通過什麼樣子的規律來填滿(預測)這個稀疏矩陣
它是這么做的:
假設m*n的評分矩陣R,可以被近似分解成U*(V)T
U為m*d的用戶特徵向量矩陣
V為n*d的產品特徵向量矩陣((V)T代表V的轉置,原諒我不會打轉置這個符號。。)
d為user/proct的特徵值的數量

關於d這個值的理解,大概可以是這樣的
對於每個產品,可以從d個角度進行評價,以電影為例,可以從主演,導演,特效,劇情4個角度來評價一部電影,那麼d就等於4
可以認為,每部電影在這4個角度上都有一個固定的基準評分值
例如《末日崩塌》這部電影是一個產品,它的特徵向量是由d個特徵值組成的
d=4,有4個特徵值,分別是主演,導演,特效,劇情
每個特徵值的基準評分值分別為(滿分為1.0):
主演:0.9(大光頭還是那麼霸氣)
導演:0.7
特效:0.8
劇情:0.6
矩陣V由n個proct*d個特徵值組成

對於矩陣U,假設對於任意的用戶A,該用戶對一部電影的綜合評分和電影的特徵值存在一定的線性關系,即電影的綜合評分=(a1*d1+a2*d2+a3*d3+a4*d4)
其中a1-4為用戶A的特徵值,d1-4為之前所說的電影的特徵值
參考:
協同過濾中的矩陣分解演算法研究

那麼對於之前ALS演算法的這個假設
m*n的評分矩陣R,可以被近似分解成U*(V)T
就是成立的,某個用戶對某個產品的評分可以通過矩陣U某行和矩陣V(轉置)的某列相乘得到

那麼現在的問題是,如何確定用戶和產品的特徵值?(之前僅僅是舉例子,實際中這兩個都是未知的變數)
採用的是交替的最小二乘法
在上面的公式中,a表示評分數據集中用戶i對產品j的真實評分,另外一部分表示用戶i的特徵向量(轉置)*產品j的特徵向量(這里可以得到預測的i對j的評分)在上面的公式中,a表示評分數據集中用戶i對產品j的真實評分,另外一部分表示用戶i的特徵向量(轉置)*產品j的特徵向量(這里可以得到預測的i對j的評分)
用真實評分減去預測評分然後求平方,對下一個用戶,下一個產品進行相同的計算,將所有結果累加起來(其中,數據集構成的矩陣是存在大量的空打分,並沒有實際的評分,解決的方法是就只看對已知打分的項)
參考:
ALS 在 Spark MLlib 中的實現
但是這里之前問題還是存在,就是用戶和產品的特徵向量都是未知的,這個式子存在兩個未知變數

解決的辦法是交替的最小二乘法
首先對於上面的公式,以下面的形式顯示:
為了防止過度擬合,加上正則化參數為了防止過度擬合,加上正則化參數
首先用一個小於1的隨機數初始化V首先用一個小於1的隨機數初始化V
根據公式(4)求U
此時就可以得到初始的UV矩陣了,計算上面說過的差平方和
根據計算得到的U和公式(5),重新計算並覆蓋V,計算差平方和
反復進行以上兩步的計算,直到差平方和小於一個預設的數,或者迭代次數滿足要求則停止
取得最新的UV矩陣
則原本的稀疏矩陣R就可以用R=U(V)T來表示了
以上公式內容截圖來自:
基於矩陣分解的協同過濾演算法

總結一下:
ALS演算法的核心就是將稀疏評分矩陣分解為用戶特徵向量矩陣和產品特徵向量矩陣的乘積
交替使用最小二乘法逐步計算用戶/產品特徵向量,使得差平方和最小
通過用戶/產品特徵向量的矩陣來預測某個用戶對某個產品的評分

不知道是不是理解正確了
有幾個問題想請教一下~

⑶ 協同過濾(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,在超圖神經網路上並沒多大的改進,重點仍然在於如何用這種結構去解決存在的問題。

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

⑷ Neo4j 做推薦 (10)—— 協同過濾(皮爾遜相似性)

皮爾遜相似性或皮爾遜相關性是我們可以使用的另一種相似度量。這特別適合產品推薦,因為它考慮到 不同用戶將具有不同的平均評分 這一事實:平均而言,一些用戶傾向於給出比其他用戶更高的評分。由於皮爾遜相似性考慮了 均值的差異 ,因此該指標將解釋這些差異。

根據皮爾遜的相似度,找到與Cynthia Freeman最相似的用戶

MATCH (u1:User {name:"Cynthia Freeman"})-[r:RATED]->(m:Movie)

WITH u1, avg(r.rating) AS u1_mean

MATCH (u1)-[r1:RATED]->(m:Movie)<-[r2:RATED]-(u2)

WITH u1, u1_mean, u2, COLLECT({r1: r1, r2: r2}) AS ratings WHERE size(ratings) > 10

MATCH (u2)-[r:RATED]->(m:Movie)

WITH u1, u1_mean, u2, avg(r.rating) AS u2_mean, ratings

UNWIND ratings AS r

WITH sum( (r.r1.rating-u1_mean) * (r.r2.rating-u2_mean) ) AS nom,

sqrt( sum( (r.r1.rating - u1_mean)^2) * sum( (r.r2.rating - u2_mean) ^2)) AS denom,

u1, u2 WHERE denom <> 0

RETURN u1.name, u2.name, nom/denom AS pearson

ORDER BY pearson DESC LIMIT 100

Neo4j 做推薦 (1)—— 基礎數據

Neo4j 做推薦 (2)—— 基於內容的過濾

Neo4j 做推薦 (3)—— 協同過濾

Neo4j 做推薦 (4)—— 基於內容的過濾(續)

Neo4j 做推薦 (5)—— 基於類型的個性化建議

Neo4j 做推薦 (6)—— 加權內容演算法

Neo4j 做推薦 (7)—— 基於內容的相似度量標准

Neo4j 做推薦 (8)—— 協同過濾(利用電影評級)

Neo4j 做推薦 (9)—— 協同過濾(人群的智慧)

Neo4j 做推薦 (10)—— 協同過濾(皮爾遜相似性)

Neo4j 做推薦 (11)—— 協同過濾(餘弦相似度)

Neo4j 做推薦 (12)—— 協同過濾(基於鄰域的推薦)

⑸ 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的長度和神經網路的層數是可以提升訓練效果的。

⑹ 推薦演算法之模型協同過濾(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商品

⑺ 推薦系統(一):基於物品的協同過濾演算法

協同過濾(collaborative filtering)演算法是最經典、最常用的推薦演算法。其基本思想是收集用戶偏好,找到相似的用戶或物品,然後計算並推薦。
基於物品的協同過濾演算法的核心思想就是:給用戶推薦那些和他們之前喜歡的物品相似的物品。主要可分為兩步:
(1) 計算物品之間的相似度,建立相似度矩陣。
(2) 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。

相似度的定義有多種方式,下面簡要介紹其中幾種:

其中,分母 是喜歡物品 的用戶數,而分子 是同時喜歡物品 和物品 的用戶數。因此,上述公式可以理解為喜歡物品 的用戶中有多少比例的用戶也喜歡物品 。
上述公式存在一個問題。如果物品 很熱門, 就會很大,接近1。因此,該公式會造成任何物品都會和熱門的物品有很大的相似度,為了避免推薦出熱門的物品,可以用下面的公式:

這個公式懲罰了物品 的權重,因此減輕了熱門物品會和很多物品相似的可能性。
另外為減小活躍用戶對結果的影響,考慮IUF(nverse User Frequence) ,即用戶活躍度對數的倒數的參數,認為活躍用戶對物品相似度的貢獻應該小於不活躍的用戶。

為便於計算,還需要進一步將相似度矩陣歸一化 。

其中 表示用戶 對物品 的評分。 在區間 內,越接近1表示相似度越高。

表示空間中的兩個點,則其歐幾里得距離為:

當 時,即為平面上兩個點的距離,當表示相似度時,可採用下式轉換:

距離越小,相似度越大。

一般表示兩個定距變數間聯系的緊密程度,取值范圍為[-1,1]

其中 是 和 的樣品標准差

將用戶行為數據按照均勻分布隨機劃分為M份,挑選一份作為測試集,將剩下的M-1份作為訓練集。為防止評測指標不是過擬合的結果,共進行M次實驗,每次都使用不同的測試集。然後將M次實驗測出的評測指標的平均值作為最終的評測指標。

對用戶u推薦N個物品(記為 ),令用戶u在測試集上喜歡的物品集合為 ,召回率描述有多少比例的用戶-物品評分記錄包含在最終的推薦列表中。

准確率描述最終的推薦列表中有多少比例是發生過的用戶-物品評分記錄。

覆蓋率反映了推薦演算法發掘長尾的能力,覆蓋率越高,說明推薦演算法越能夠將長尾中的物品推薦給用戶。分子部分表示實驗中所有被推薦給用戶的物品數目(集合去重),分母表示數據集中所有物品的數目。

採用GroupLens提供的MovieLens數據集, http://www.grouplens.org/node/73 。本章使用中等大小的數據集,包含6000多用戶對4000多部電影的100萬條評分。該數據集是一個評分數據集,用戶可以給電影評1-5分5個不同的等級。本文著重研究隱反饋數據集中TopN推薦問題,因此忽略了數據集中的評分記錄。

該部分定義了所需要的主要變數,集合採用字典形式的數據結構。

讀取原始CSV文件,並劃分訓練集和測試集,訓練集佔比87.5%,同時建立訓練集和測試集的用戶字典,記錄每個用戶對電影評分的字典。

第一步循環讀取每個用戶及其看過的電影,並統計每部電影被看過的次數,以及電影總數;第二步計算矩陣C,C[i][j]表示同時喜歡電影i和j的用戶數,並考慮對活躍用戶的懲罰;第三步根據式\ref{similarity}計算電影間的相似性;第四步進行歸一化處理。

針對目標用戶U,找到K部相似的電影,並推薦其N部電影,如果用戶已經看過該電影則不推薦。

產生推薦並通過准確率、召回率和覆蓋率進行評估。

結果如下所示,由於數據量較大,相似度矩陣為 維,計算速度較慢,耐心等待即可。

[1]. https://blog.csdn.net/m0_37917271/article/details/82656158
[2]. 推薦系統與深度學習. 黃昕等. 清華大學出版社. 2019.
[3]. 推薦系統演算法實踐. 黃美靈. 電子工業出版社. 2019.
[4]. 推薦系統演算法. 項亮. 人民郵電出版社. 2012.
[5]. 美團機器學習實踐. 美團演算法團隊. 人民郵電出版社. 2018.

⑻ 基於協同過濾的推薦演算法

協同過濾推薦演算法是最經典的推薦演算法,它的演算法思想為 物以類聚,人以群分 ,基本的協同過濾演算法基於以下的假設:

實現協同過濾的步驟:
1). 找到相似的Top-N個人或者物品 :計算兩兩的相似度並進行排序
2). 根據相似的人或物品產生推薦結果 :利用Top-N生成初始推薦結果,然後過濾掉用戶已經有過記錄或者明確表示不喜歡的物品

那麼,如何計算相似度呢?

根據數據類型的不同,相似度的計算方式也不同,數據類型有:

一般的,相似度計算有 傑卡德相似度、餘弦相似度、皮爾遜相關系數

在協同過濾推薦演算法中,我們更多的是利用用戶對物品的評分數據集,預測用戶對沒有評分過的物品的評分結果。

用戶-物品的評分矩陣,根據評分矩陣的稀疏程度會有不同的解決方案。

目的:預測用戶1對於物品E的評分

步驟分析:

實現過程

用戶之間的兩兩相似度:

物品之間的兩兩相似度:

⑼ 協同過濾

協同過濾(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適用於用戶情趣不叫穩定的場景,如電商推薦。

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

⑽ 協同過濾與分類

[TOC]

本文是《寫給程序員的數據挖掘實踐指南》的一周性筆記總結。主要涵蓋了以下內容:

所謂推薦系統就是系統根據你的行為操作為你推薦你可能想要的其他物品。這在電商平台、音樂平台、資訊推送平台等多有見到。而協同過濾簡單來說是利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息。其推薦基礎是用戶評分。這里可以分為兩種用戶評分,即顯式評分與隱式評分。顯式評分即日常見到的為物品打分,如對喜好音樂評級等;隱式評分是通過對用戶行為的持續性觀察,進而發現用戶偏好的一種方法,如新聞網頁中的推送你經常閱讀過的相關內容等。兩種評分方法都有自己的問題。

總體來說,協同過濾其運作機制也可以分為兩種:

基於用戶的推薦是指通過用戶的行為偏好,劃分相似用戶。在相似用戶群體之間互相推送一方喜歡而另一方未有過的物品。核心在於相似用戶群體的劃分。這種推薦方法有自己的局限:

基於用戶的過濾其核心是用戶群體的劃分,其實也就是分類。

這里的距離函數包括三種:曼哈頓距離和歐氏距離。這里以二維舉例,更多維情況下類推即可。

兩距離函數可以一般化為:

其中,當r=1時,函數為曼哈頓距離;當r=2時,函數為歐氏距離。

演算法實現:

在算出距離函數後,通過比對目標用戶與所有用戶群體的偏好,找到最近鄰的用戶並給予推薦。

基於用戶距離的推薦有一個明顯的問題,就是用戶評分體系的差異。比如評分極端的用戶給喜歡的評最高分,給不喜歡的評最低分;而有些用戶傾向於不出現極端評分。即所謂「分數貶值」( Grade Inflation )問題。這種問題的存在可能讓基於距離的評分產生偏差。皮爾遜相關系數可以緩解這種問題。

原皮爾遜相關系數公式在實際運用的時候會出現多次迭代的問題,影響計算效率,這里給出了近似公式:

皮爾遜相關系數的用戶判斷依據不是單純的用戶距離,而是用戶的評分一致性:取值在[-1, 1]之間,越接近1則表示兩用戶的評分一致性越好;反之則反。
python實現:

基於用戶推薦的過程中,另一個存在的問題就是由於大部分人的喜愛物品集合的交集過少,存在大量計算值為0的feature的情況。即所謂 稀疏性 問題。一個較容易理解的例子是對書本內容的挖掘。餘弦相似度會忽略這種0-0匹配。
餘弦相似度:

python實現:

如此多的評估系數,如何進行抉擇呢?根據數據特徵:

另外值得考慮的一點是,目前為止的推薦都是基於單用戶的。即對一個用戶的推薦系統只是基於另一個用戶。這會存在一些問題。比如雖然雖然兩者相似度很高,但是另外一個人有一些怪癖,怪癖的推薦就是不合理的;又比如,在相似度極高的情況下,你不能確定統一賬戶下的操作是同一個人做出的或者說操作行為是為了用戶自身。比如用戶考慮購買某件商品作為禮物送給別人,這就是基於別人喜好的購買行為,這種推薦也是不合適的。
對這種問題的解決可以使用群體劃分的方法。原理與單用戶類似,但是用戶的匹配是k個。在這k位最優匹配的用戶之間,以相似度的大小為依據設定權重作為物品推薦的條件。此即協同過濾的k近鄰。

正如前面提到的基於用戶的推薦有復雜度、稀疏性的問題,而基於物品的過濾則可以緩解這些問題。所謂基於物品的過濾是指,我們事先找到最相似的物品,並結合用戶對物品的評級結果來生成推薦。前提是要對物品進行相似度匹配,找到一種演算法。

這里的調整是指為了減輕用戶評分體系的不一致情況(抵消分數貶值),從每個評級結果中減去該用戶所有物品的平均分的評級結果。

其中,U表示所有同時對i, j進行評級過的用戶的集合。 表示用戶u給物品i的評分減去用戶u對所有物品的評分的平均值。

在得到所有物品的餘弦相似度後,我們就可以通過該指數預測用戶對某件物品的偏好程度。方法就是所有相似物品的相似度乘以得分的總和。

其中p(u, i)指的是用戶u對物品i評分的預測值。N是用戶u的所有評級物品中每個和i得分相似的物品。這里的相似指的是矩陣中存在N和i的一個相似度得分。 是i和N之間的相似度得分。 是u給N的評級結果。公式較好運行的條件是 取值在(-1, 1)之間,這里就要使用歸一化概念。

另一種常用的基於物品過濾的演算法就是 slope one 演算法。它的大概原理是預測用戶u對產品j的評分時,預先計算包含所有物品的兩物品偏差表;根據u的已評價的所有物品評分與該物品和產品j的偏差( )之和並乘以所有對此兩類物品有過評分的用戶個數,一一加總,除以所有同時對產品i與u評價過的所有物品有過評分的用戶的人數,得到得分。公式如下:

其中, ; 是利用加權s1演算法給出的用戶u對物品j的預測值。 指的是對所有除j之外u打過分的物品。

python實現:

在前面兩節中,基於物品和基於用戶的過濾其前提都是用戶需要對已有的item進行評分。而實際上,如果一個新的item出現,由於缺乏別人的偏好,他永遠不會被推薦。這就是推薦系統中所謂的—— 冷啟動 問題。基於用戶評價的系統就會出現這種問題。
冷啟動 問題的解決方案之一就是 基於物品屬性的過濾 來進行推薦:對物品自身的屬性進行歸納總結,並以此進行物品推薦。基於物品屬性的過濾存在一個問題同樣是量綱的不統一。如果量綱不統一極端值將會對推薦系統造成大麻煩。解決方法也很簡單:歸一化。此章使用的是z-評分。
使用z得分也存在問題,就是極易受到離群值的影響。這里可以使用 改進的標准分數 來緩解這個問題:

什麼時候可以進行歸一化呢?

這里用曼哈頓距離舉例基於物品屬性的過濾:

在上一章最後一節對於用戶是否喜歡某件item的判別中,實際上包含了分類器的思想:分類器就是利用對象屬性判定對象屬於哪個組或類別的程序。這里簡單用另一個小項目來說明。

簡單來說就是根據運動員的某些指標來判斷這位運動員屬於什麼類別的運動員。

准確率有0.8。

閱讀全文

與協同過濾演算法答辯ppt相關的資料

熱點內容
天劍摩托車125怎麼換機油濾芯 瀏覽:846
污水處理廠斜管套什麼定額 瀏覽:129
三菱歐藍德空調濾芯怎麼拆換 瀏覽:386
污水流樓底下怎麼處理 瀏覽:869
汽油濾芯是什麼表現 瀏覽:433
污水消毒處理工藝有哪些 瀏覽:887
硬水垢清除 瀏覽:360
過濾過程的推動力 瀏覽:415
ps怎麼把污水處理成清澈 瀏覽:418
湖工飲水機怎麼用 瀏覽:590
松原開發區污水處理廠 瀏覽:851
污水管道100的混凝土管怎麼安裝 瀏覽:304
怎樣擦玻璃的水垢 瀏覽:604
日產新騏達空調濾芯怎麼換 瀏覽:738
礦物質濾芯什麼品牌好 瀏覽:497
160的污水管怎麼接中間一段 瀏覽:190
中水回用尺寸 瀏覽:59
醫院里飲水機怎麼接水 瀏覽:944
大慶生活污水去哪裡了 瀏覽:970
卡特307提升器加工 瀏覽:386