導航:首頁 > 凈水問答 > 協同過濾和內容運力

協同過濾和內容運力

發布時間:2023-04-14 03:35:59

Ⅰ 淺談內容個性化推薦步驟

現在我們正在處於一個信息爆炸的時代,每天會產生千萬量級的信息。但每天的時間也沒有變成24+1個小時,加上碎片化時間的消費,讓內容能夠精準投放是至關重要的。2017年也可以說是人工智慧的爆發之年,各個公司也都開始有了人工智慧實驗室,共同探索屬於未來的事情。不管是智能音響還是語音助手,大家的目的都是為了通過了解用戶的偏好和興趣等。幫助用戶省下時間,來做更多的事情,像是有一個更懂自己的貼身秘書,可以幫助自己做完篩選的准備工作。

從之前的web1.0時代到3.0時代,給用戶推送准確的內容都是重點。根據資料及個人理解整理歸納推薦內容可以分為世禪三個步驟:初步建立用戶畫像、根據策略推薦內容、合理高效的方式展現。

在一個新用戶進入APP後,處於冷啟動階段,通過獲得用戶的基礎信息進行用戶模型初步建立,如性別、年齡、職業、城市、喜好類型等等,用戶屬性數據。獲取的步驟稱之為新手引導,通過給用戶進行首次標記,進行初步內容推薦,降低冷啟動時推薦內容的無關性。

這一步,大概了解用戶喜歡什麼,距離准確的推送給用戶需要的內容,只是邁出了第一步。舉個例子,在給用戶推薦手機的時候,有驚艷的亮藍色、也有穩重的亮黑色,用戶可能會說,藍色真的是太好看了。但是,在最後帶走的卻是一步黑色的手機。所以用戶在最終行為動作前,所產生的行為具有一定的偏差性。放在內容篩選上來說,以音樂APP為例,當用戶選擇90後、男生、國語的屬性後,推送的內容在實際使用場景中,不一定能達到預期效果。

此時,需要進行第二步,根據用戶行為數據不斷完善用戶模型。包括不限於用戶使用APP過程中前端埋點數據、後端日誌數據、行為偏好等。

通過這兩步,就能大體上刻畫出用戶畫像,但是用戶畫像具有很強的動態性,所以用戶畫像也需要不斷學習,不斷的完善,具體刻畫用戶畫像的步驟可查看用戶畫像構建相關資料。

給不同的用戶推薦不同內容的策略常用的有多種方式,在不同的產品類型中,應用的組合方式也有差異,下面介紹幾種常見的推薦方法。

基於人口統計學的推薦(Demographic-based Recommendation)是一種實現成本較低的推薦方法,根據用戶屬性的基本信息發現用戶之間的相似程度,然後將相似用戶喜愛的內容進行推薦。

在這個過程中,根據每個用戶自己的用戶屬性,系統建立每個用戶的模型。然後根據用戶屬性計算相似度。若看到用戶A的和用戶C相似,那麼會認為用戶A和C是相似用戶,可以稱他們是「鄰居」;最後,基於「鄰居」用戶群的喜好推薦給當前用戶對應的內容。

優點:因無需使用用戶的喜好歷史數據,可以解決新用戶來「冷啟動」的問題。這個方法不依賴於項目本身的數據,所以這個方法在不同項目的領域都可以使用,它是領域獨立的。

缺點:基於用戶屬性信息對用戶進行分類的方法過於粗糙,尤其在對於更為垂直的的領域,比如圖書,電影和音樂等,無法得到很好的推薦效果。在首批用戶進行推薦時,對內容項目進行分類的基礎數據,都是依靠運營進行人為劃分,在精度方面存在較大影響。另外,在涉及到過於敏感或隱私的內容信息,獲取成本比較高,旦碰就會導致低於用戶期望值。

基於內容的推薦(Content-based Recommendation),核心思想是根據內容的元數據,建立關鍵詞或Tag等標記,並根據其相關性建立對應關系。在內容分發過程中,再利用用戶畫像中的屬性,進行匹配推薦。這個方法雖過於主觀性,但可以很好的在內容層面建模用戶的偏好,不會出現喜歡搖滾的用戶,被推薦民謠。此推薦方法多用於一些資訊內容類的應用上。

優點:易於實現,不需要用戶屬性數據,減少冷啟動的問題。根據內容的相關度匹配,維度單一,不會出現熱門過熱,冷門無人的情況。

缺點:人為分類進行標注,在推薦搜遲塵的精度及廣度方面難免有缺陷,導致推薦的內容不夠准確;

系統抽取的特徵標注,需要保證准確性又要具有一定的實際意義,都則推薦結果相關性會降低。

協同過濾(Collaborative Filtering-based Recommendation)是一種在推薦系統中廣泛採用的推薦方法,被視為利用集體智慧的典範,是基於「物以類聚,人以群分」的假設。主要包括三個推薦維度,基於用戶的推薦、基於項目的推薦和基於模型的推薦。

基於用戶的協同過濾推薦的基本原理是,根據所有用戶對內容的偏好,發現與當前用戶偏好相似的「鄰居」用戶群,基於這些鄰居的的歷史偏好信息,為當前用戶進行推薦。

優點:推薦內容可能完全不相關,因此可以發現用戶的潛在興趣,並且針對每個用戶生成其個性化的推薦結果。

缺點:用戶的增長速度都遠大於項目的增長速度,因此其計算量的增長巨大,系統性能容易成為瓶頸,一般基於用戶的協同過濾系統與其他機制配合使用。

基於用戶的協同過濾推薦和基於人口統計學的推薦對比:

相同點:都是計算用戶的相似度,並基於「鄰居」用戶群計算推薦;

不同點:基於人口統計學的機制只考慮用戶本身的特徵,而基於用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似項目的用戶可能有相同或者相似的口味和偏好。

基於項目的協同過濾和基於用戶的協同過濾相似,其使用的是所有用戶對項目的偏好信息,發現Item之間的相似度,然後根據用戶的歷史偏好信息,將Item推薦給用戶。

基於項目的協同過濾推薦和基於內容的推薦對比:

相同點:都是基於項目相似度預測推薦,只是相似度計算的方法不一樣;

不同點:前者是從用戶歷史的偏好推斷,而後者是基於項目本身的屬性特徵信息。

在基於用戶和基於項目兩個協同過濾策略中應如何選擇?

同基於用戶的推薦相比,基於項目的推薦應用更為廣泛,擴展性和演算法性能更好。由於項目的增長速度一般較為平緩,因此性能變化不大。缺點就是無法提供個性化的推薦結果。在用戶數與項目數的比例不同時,選擇的主要推薦方式不同。項目數>用戶數,優先採用基於用戶協同過濾;項目數<用戶數,優先採用項目協同過濾。

項目的個數是遠遠小於用戶的數量的,而且項目的個數和相似度相對比較穩定;同時基於項目的機制比基於用戶的實時性更好。但也不是所有的場景都是這樣的情況,在一些新聞推薦系統中,也許項目,也就是新聞的個數可能大於用戶的個數,而且新聞的更新程度也有很快,所以它的相似度依然不穩定。所以,推薦策略的選擇其實也和具體的應用場景有很大的關系。

因為基於協同過濾的推薦機制不需要對項目或用戶進行嚴格的建模,直接對比項目之間的相似度,不要求機器可理解項目描述。這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好。因此,也是現在應用廣泛的推薦機制。

不足之處在於核心是基於歷史數據,所以對新項目和新用戶都有「冷啟動」的問題;推薦的准確性,依賴於用戶歷史偏好數據與用戶總數的量級;

基於關聯規則的推薦更常見於電商中,並且轉換率較高。其實際的意義為購買了一些產品的用戶更傾向於購買另一些產品。基於關聯規則的推薦的首要目標是挖掘出不同產品之間的關聯規則,也就是同時被很多用戶購買的產品組合集,這些集合內的產品可以相互進行推薦。

在計算出用戶可能喜歡的內容的時候,用什麼樣的方式展現給用戶,從而進一步提升用戶體驗,提高推薦內容的二次消費,就是第三步需要做的事情。

在眾多APP中,每一個都有多個頁面,每個頁面裡面有多種多樣的推薦位置。根據產品的功能定位、用戶的操作習慣、用戶行為的相關程度等維度進行篩選。將適合的內容放在更適合的位置,並根據用戶的使用行為不斷的完善用戶畫像,調整投放策略,才能讓用戶使用效率得到保障。

在剛過去的雙十一中,我們每個人的天貓APPbanner圖可能都是完全不一樣的。因為只需要輸入主題類型,阿里的人工智慧設計系統「魯班」就會生成上萬張不同的素材,根據主題和消費者特徵進行個性化呈現,真正的實現了千人千面。這也讓資源位點擊率翻了一倍多。

推薦方法有很多種,不同的推薦機制適用的場景都會有所差異,在推薦准確性方面也會有差距。因此一般情況下在搭建推薦系統的時候,不會單純的採用某一種推薦機制,常常將各種方法混合在一起,互相彌補短板,從而達到更好的推薦效果。

在知道了給用戶推薦什麼樣的內容後,隨著時間的增長,符合用戶偏好的的內容會越來越多,這些內容需要結合時間維度、內容熱度等更多的自然維度進行篩選排序,再投放在合適的位置,才能讓讓用戶無感知的情況下幫助用戶解決問題。

在信息十分龐大的現在,人工智慧的發展也已開始爆發,更先進的方案需要不斷的學習和探索。相信在未來的時候,每一個手機ROM就是一個大的APP,在一定程度上可以開放共贏,手機上任何一個軟體中使用的信息都可以共享,成為幫助用戶的數據,共同讓手機變成一個真正的移動助手。

Ⅱ 推薦系統論文閱讀(二十三)-神經圖協同過濾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:

Ⅲ 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)—— 協同過濾(基於鄰域的推薦)

Ⅳ 協同過濾與分類

[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。

Ⅳ 利用 SVD 實現協同過濾推薦演算法

奇異值分解(Singular Value Decomposition,以下簡稱SVD)
是在機器學習領域廣泛應用的演算法,它不光可以用於 降維演算法中的特徵分解 ,還可以用於 推薦系統 ,以及自然語言處理等領域。

優點: 簡化數據,去除雜訊,提高演算法的結果。
缺點: 數據的轉換可能難以理解。

應用領域: 推薦引擎(協同過濾、相似度計算)、圖像壓縮等。

SVD定義: 如果我們求出了矩陣A的n個特徵值λ1≤λ2≤...≤λn,以及這n個特徵值所對應的特徵向量{w1,w2,...wn},如果這n個特徵向量線性無關,那麼矩陣A就可以用下式的特徵分解表示:A=WΣW−1,其中W是這n個特徵向量所張成的n×n維矩陣,而Σ為這n個特徵值為主對角線的n×n維矩陣。一般我們會把W的這n個特徵向量標准化,即滿足||wi||2=1, 或者wiTwi=1,此時W的n個特徵向量為標准正交基,滿WTW=I,即WT=W−1, 也就是說W為酉矩陣。要進行特徵分解,矩陣A必須為方陣。那麼如果A不是方陣,則用到SVD。

矩陣A的SVD為:A=UΣVT,其中U是一個m×m的矩陣,Σ是一個m×n的矩陣,除了主對角線上的元素以外全為0,主對角線上的每個元素都稱為奇異值,V是一個n×n的矩陣。U和V都是酉矩陣,即滿足UTU=I,VTV=I。

對於奇異值,它跟我們特徵分解中的特徵值類似,在奇異值矩陣中也是按照從大到小排列,而且奇異值的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上的比例。也就是說,我們也可以用最大的k個的奇異值和對應的左右奇異向量來近似描述矩陣。

因此SVD 也是一種強大的降維工具 ,可以利用 SVD 來逼近矩陣並從中獲得主要的特徵。通過保留矩陣的 80%~90% 的能量,就可以得到重用的特徵並去除雜訊。

推薦系統 是利用電子商務網站向客戶提供商品信息和建議,幫助用戶決定應該購買什麼產品,模擬銷售人員幫助客戶完成購買過程。
主要有以下幾種推薦演算法:
基於內容的推薦(用到自然語言處理), 協同過濾(主流) ,基於規則推薦(基於最多用戶點擊,最多用戶瀏覽等),混合推薦(類似集成演算法,投票決定),基於人口統計信息的推薦(根據用戶基本信息)

協同過濾推薦分為三種類型。 第一種是基於用戶(user-based)的協同過濾(需要在線找用戶和用戶之間的相似度關系),第二種是基於項目(item-based)的協同過濾(基於項目的協同過濾可以離線找物品和物品之間的相似度關系), 第三種是基於模型(model based)的協同過濾(用戶和物品,主流)。

一般在推薦系統中,數據往往是使用 用戶-物品 矩陣來表示的。 用戶對其接觸過的物品進行評分,評分表示了用戶對於物品的喜愛程度,分數越高,表示用戶越喜歡這個物品。而這個矩陣往往是稀疏的,空白項是用戶還未接觸到的物品,推薦系統的任務則是選擇其中的部分物品推薦給用戶。

對於這個 用戶-物品 矩陣,用已有的部分稀疏數據來預測那些空白的物品和數據之間的評分關系,找到最高評分的物品推薦給用戶。

具體基於模型的方法有:
用關聯演算法做協同過濾(Apriori演算法、FP Tree演算法)
用聚類演算法做協同過濾(針對基於用戶或者基於模型,Kmeans,DBSCAN)
用分類演算法做協同過濾(設定評分閾值,高於推薦,低於不推薦,邏輯回歸和樸素貝葉斯,解釋性很強)
用回歸演算法做協同過濾(Ridge回歸,回歸樹)
用矩陣分解做協同過濾(由於傳統的奇異值分解SVD要求矩陣不能有缺失數據,必須是稠密的,而用戶物品評分矩陣是一個典型的稀疏矩陣,主要是SVD的一些變種,比如FunkSVD,BiasSVD和SVD++。這些演算法和傳統SVD的最大區別是不再要求將矩陣分解為UΣVT的形式,而變是兩個低秩矩陣PTQ的乘積形式。)
用神經網路做協同過濾(限制玻爾茲曼機RBM)

在 Python 的 numpy 中,linalg已經實現了SVD

Ⅵ 心理過程包括哪些內容

包括認知過程、情緒情感過程和意志過程三個方面。

認知過程指人以感知、記憶、思維等形式反映客觀事物的性質和聯系的過程;情緒情感過程是人對客觀事物的某種態度的體驗;意志過程是人有意識地克服各種困難以達到一定目標的過程。三者有各自發生發展的過程,但並非完全獨立,而是統一心理過程中的不同方面。

分類:

1、認知過程(知):人在認識客觀世界的活動中所表現的各種心理現象。

簡要介紹概念:感覺、知覺、記憶、思維、想像。

2、情感過程(情):人認識客觀事物時產生的各種心理體驗過程。

3、意志過程(意):人們為實現奮姿好帶斗目標,努力克服困難,完成任務的過程。在意志過程中產生的行為就是意志行為(行)。

4、知、情、意、行的關系:認知是產生情、意的基礎;行是在認知的基礎上和情的推動下產生的,襪沒它跡蘆能提高認識,增強情感,磨煉意志;行為控制、調節情感,提高認知。

Ⅶ 協同過濾,基於內容推薦有什麼區別

舉個簡單的小例子,我們已知道
用戶u1喜歡的電影是A,B,C
用戶u2喜歡的電影是A, C, E, F
用戶u3喜歡的電影是B,D
我們需要解決的問題是:決定對u1是不是應該推薦F這部電影
基於內容的做法:要分析F的特徵和u1所喜歡的A、B、C的特徵,需要知道的信息是A(戰爭片),B(戰爭片),C(劇情片),如果F(戰爭片),那麼F很大程度上可以推薦給u1,這是基於內容的做法,你需要對item進行特徵建立和建模。
協同過濾的辦法:那麼你完全可以忽略item的建模,因為這種辦法的決策是依賴user和item之間的關系,也就是這里的用戶和電影之間的關系。我們不再需要知道ABCF哪些是戰爭片,哪些是劇情片,我們只需要知道用戶u1和u2按照item向量表示,他們的相似度比較高,那麼我們可以把u2所喜歡的F這部影片推薦給u1。
根據數據源的不同推薦引擎可以分為三類
1、基於人口的統計學推薦(Demographic-based Recommendation)
2、基於內容的推薦(Content-based Recommendation)
3、基於協同過濾的推薦(Collaborative Filtering-based Recommendation)
基於內容的推薦:
根據物品或內容的元數據,發現物品或內容的相關性,然後基於用戶以前的喜好記錄推薦給用戶相似的物品
基於內容推薦的一個典型的例子,電影推薦系統,首先我們需要對電影的元數據有一個建模,這里只簡單的描述了一下電影的類型;然後通過電影的元數據發現電影間的相似度,因為類型都是「愛情,浪漫」電影 A 和 C 被認為是相似的電影(當然,只根據類型是不夠的,要得到更好的推薦,我們還可以考慮電影的導演,演員等等);最後實現推薦,對於用戶 A,他喜歡看電影 A,那麼系統就可以給他推薦類似的電影 C。

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

Ⅸ 協同過濾和基於內容推薦有什麼區別

協同過濾和基於內容推薦核心思想是不同的:

協同過濾側重於從大數據(集體智慧)中尋找某些隱含的模式,以物品為核心,它是對基於用戶的協同過濾的一種改良。基於內容推薦則側重於通過對象的屬性信息來進行匹配建模進而尋找相似的用戶或者商品,本質是「你喜歡某一事物,給你推薦近似的事物。」。

簡介:

個性化推薦,是系統的智能推薦。個性化推薦的原理使用較多的是這3種方式:基於內容的推薦、基於用戶的協同過濾、基於物品的協同過濾這3種推薦方式的核心則是計算相似度。

Ⅹ 個性化推薦演算法——協同過濾

有三種:協同過濾
用戶歷史行為
物品相似矩陣

閱讀全文

與協同過濾和內容運力相關的資料

熱點內容
聊城反滲透膜清洗 瀏覽:58
保山礦井污水處理設備多少錢 瀏覽:734
空氣過濾減壓閥怎樣 瀏覽:606
斗山回油濾芯上面裝的小碗是什麼 瀏覽:187
蒸餾裝置中的前餾分是什麼 瀏覽:275
污水用日語怎麼說 瀏覽:507
大眾2016polo換空氣濾芯怎麼換 瀏覽:697
water是什麼牌子的凈水器 瀏覽:560
雷沃鏟車液壓油箱怎麼換濾芯 瀏覽:897
蒸餾裝置中如何正確安裝溫度計 瀏覽:381
車用液壓機油濾芯怎麼清洗 瀏覽:437
納米水性環氧樹脂 瀏覽:296
凈化器定時h是什麼意思 瀏覽:313
一體式濾芯買什麼牌子的好 瀏覽:314
釀造酒與蒸餾酒成分比較 瀏覽:140
電熱水器排污水開關壞 瀏覽:177
污水廠排放量計算 瀏覽:325
飲水機冷膽漏水什麼原因 瀏覽:57
陶氏超濾膜2880過濾面積 瀏覽:823
沃康延齡泉飲水機怎麼樣 瀏覽:830