A. 基於用戶的協同過濾推薦演算法怎麼實現
我手上恰好有這樣的一份文檔,
B. 協同過濾和基於內容推薦有什麼區別
舉個簡單的小例子,我們已知道
用戶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。
C. 協同過濾推薦演算法產生推薦結果要多久
這種抄形式一般可以按襲推薦引擎的演算法分,主要有基於協同過濾、基於內容推薦等演算法。 「買過此商品的人,百分之多少還買過其他啥啥商品」:協同過濾item-based filtering 「和你興趣相似的人,還買過其他啥啥商品」:協同過濾 user-based filtering 「相關商品推薦」:基於內容推薦content-based 「猜你喜歡」 一般混合使用推薦演算法。
D. 請問下:誰有「基於用戶的協同過濾推薦演算法」的論文樣板呢
為您而做來。的
E. 個性化推薦演算法——協同過濾
有三種:協同過濾
用戶歷史行為
物品相似矩陣
F. 推薦演算法的基於協同過濾的推薦
基於協同過濾的推薦演算法理論上可以推薦世界上的任何一種東西。圖片、音樂、樣樣可以。 協同過濾演算法主要是通過對未評分項進行評分 預測來實現的。不同的協同過濾之間也有很大的不同。
基於用戶的協同過濾演算法: 基於一個這樣的假設「跟你喜好相似的人喜歡的東西你也很有可能喜歡。」所以基於用戶的協同過濾主要的任務就是找出用戶的最近鄰居,從而根據最近鄰 居的喜好做出未知項的評分預測。這種演算法主要分為3個步驟:
一,用戶評分。可以分為顯性評分和隱形評分兩種。顯性評分就是直接給項目評分(例如給網路里的用戶評分),隱形評分就是通過評價或是購買的行為給項目評分 (例如在有啊購買了什麼東西)。
二,尋找最近鄰居。這一步就是尋找與你距離最近的用戶,測算距離一般採用以下三種演算法:1.皮爾森相關系數。2.餘弦相似性。3調整餘弦相似性。調整餘弦 相似性似乎效果會好一些。
三,推薦。產生了最近鄰居集合後,就根據這個集合對未知項進行評分預測。把評分最高的N個項推薦給用戶。 這種演算法存在性能上的瓶頸,當用戶數越來越多的時候,尋找最近鄰居的復雜度也會大幅度的增長。
因而這種演算法無法滿足及時推薦的要求。基於項的協同過濾解決了這個問題。 基於項的協同過濾演算法 根基於用戶的演算法相似,只不過第二步改為計算項之間的相似度。由於項之間的相似度比較穩定可以在線下進行,所以解決了基於用戶的協同過濾演算法存在的性能瓶頸。
G. 查找利用協同過濾演算法為用戶推薦商品的方法有哪些
協同過濾主要是以屬性或興趣相近的用戶經驗與建議作為提供個性化推薦的基礎。回透過協同過濾,有答助於搜集具有類似偏好或屬性的用戶,並將其意見提供給同一集群中的用戶作為參考,以滿足人們通常在決策之前參考他人意見的心態。
H. Python實現協同過濾推薦演算法,用的大一些的數據集就報錯MemoryError
python雖然易用,但是內存佔用比較多;所以如果你有C/C++/Java基礎,考慮用這些語專言來實現;
CF演算法屬需要計算大量的相似度,如果能把中間結果存起來,或者簡化計算過程(如,你可能會重復計算一個item的均值)可以省下不少內存;(個人試過計算1w個用戶Pearson是沒問題的)
如果內存實在不夠用,那就用時間換空間,把中間計算結果分成小文件存到磁碟上,用的時候再讀取。
供參考。
I. 推薦演算法如何提前劃分製造同類目日誌
做推薦演算法的質量工作將近一年,這一年嘗試了很多東西,踩了不少坑,也對推薦的評測工作稍微有了些自己的心得,現在分享出來,希望能和做這塊工作的同學一起交流、探討,也歡迎多拍磚,多提意見。
推薦系統
目前推薦技術的應用已經非常較普及了,新聞、商品、問答、音樂,幾乎都會用到推薦演算法來為你呈現內容。下面是淘寶、知乎、微博三個app的推薦模型,可以看到推薦都在非常重要的位置。
在介紹推薦演算法評測之前,我先簡單說下推薦系統,這里我以商品為例,簡單描述下推流程,讓大家更明白一些,一般推薦主要包含以下步驟:
召回->打分排序->透出
召回
召回階段通常的手段是協同過濾比較場景的i2i,u2i等這種x2x(有興趣可以看下我寫的基於itembase的推薦),也有使用embedding的方式通過向量之間的距離進行召回。以i2i為例,假如現在要針對我推薦一個商品,那麼首先要找到我感興趣的物品 ,這些數據是通過我的歷史行為來進行獲取,比如拿到我最近一段時間內的點擊、加購、收藏、購買的物品,將這些商品做為trigger進行召回,協同演算法的具體就不再這里敘述了,有興趣可以看下鏈接,最終我們按照協同過濾演算法算出商品之間的相似分值,然後按照一定數量進行截斷,因為這里截斷也是依靠分數來進行的,所以一般這一步也稱粗排。這樣召回截斷就完成了。
打分
召回完商品後,我們需要對這些商品進行再一次的精排,這里需要用模型來預估ctr,一般情況下LR、GBDT、FM用的比較多,這里深度網路相對用的少,主要為了考慮到性能,尤其是rt,因為絕大部分的精排都是需要實時預測的,所有對耗時有一定的要求。繼續說下模型預測的步驟,首先針對召回的商品進行特徵的補充,例如該商品的一級類目、葉子類目(一級類目代表比較,葉子類目代表最細分的類目)、被多少用戶購買等,然後再加入人的特徵,例如性別、年齡、收入、對類目的偏好等,然後將這些信息做為feature,用模型進行預測,然後根據模型預測的結果進行排序,輸出。
模型
打分過程中的模型是需要提前訓練和部署,訓練集的來源就是用戶的實時行為加上用戶和商品的特徵。feature的構成是用戶的特徵和商品的特徵,label則是用戶是否點擊了該商品。
質量方案
接下來說下如何保證這塊的質量。由於推薦系統最終對用戶需要提供實時的服務化,因此免不了有工程端的技術需要一起配合。因此我這塊主要分為兩個維度來開展,一方面是工程端的質量保證,一方面是演算法側的質量保證。
工程端質量
這一塊可以將演算法當成一個黑盒子,只把他當成一個有結果返回的介面。針對這方面前人已經有了豐富的經驗,我們可以做介面的單元測試和冒煙測試,另外就是壓測,在預估的qps下看rt是否滿足業務方的要求,load是否過大,超時和錯誤的比例是否符合一定的預期。這里就不細說了,重點說說第二部分。
演算法端質量
這里我再進行細分一下,分為三部分介紹:演算法數據、演算法模型、演算法效果;
演算法數據:
大家都知道演算法在做訓練前數據的處理部分非常的重要,有興趣可以看下特徵工程相關的內容,數據的來源,特徵的構造,數據抽取、加工整個的過程都有可能會出現錯誤,而且數據一般都是存儲在分布式系統資料庫里,因此需要藉助類似hive這樣的工具將sql轉換成MapRece的任務去進行離線的計算,離線任務的產出通常會耗費不少的時間,而對於一些日更新的模型通過對數據對產出時間有一定的要求。因此數據這塊最主要的保證點為:數據本身的質量,和數據的產出時間。數據本身的質量一般可以通過數據大小的整體抖動,以及關鍵欄位是否為空,主鍵是否重復,做法比較簡單可以通過簡單sql或者udf來完成,然後藉助工程能力做到預警、檢查、出報表等。
演算法模型:
模型的本身在迭代過程中也是需要關注的,不過通常演算法同學的訓練優化也是參考這些指標,所以我們也可以把這幾個指標做為模型本身好壞的評估。具體為:准確率、召回率、AUC。
演算法效果:
那麼這個演算法推薦出的效果究竟好不好呢,這個是一個非常主觀的事情,每個人的感受也不是一樣的,但是我們仍然要衡量它的好壞,這里我參考業內學者的推薦書籍以及自己的一些摸索,總結出下面一些方法,供大家參考。
人工評測:
顧名思義,邀請一幫人來對你的推薦系統的結果進行評測。這里想法來自於我在做翻譯評測時期的經驗,首先這個成本比較高,另外就是參雜了人的主觀性非常的高,翻譯的好壞我們可以通過制定一些細致的規則來進行約束,但是推薦的好壞我們卻不好制定詳細的規則,另外就是推薦之前的用戶行為如何模擬,如何讓評測者進行感知,這些都是比較難的,並且和基準的對比也不是很好做,所以這里不是很推薦用這個方法,但是還是要提一下。
指標評估:
指標化推薦結果,也就是將推薦的結果用不同的指標來進行說明,通過這些指標,你可以更加的了解你的推薦系統,部分指標不一定越高越好,但是你需要讓它保持在一定的范圍內。說到具體的例子的時候,我會提一下。下面我們看下這些指標。
覆蓋率
定義:
推薦系統能夠推薦出來的「商品/類目」占「總商品/類目」集合的比例。假設系統的用戶集合為U,推薦系統給每個用戶推薦一個長度為N的物品列表R(u) ,總物品為N。那麼:
覆蓋率 = ΣR(u)N
Σ
R
(
u
)
N
意義:
描述推薦結系統對物品長尾發掘能力;
舉個例子,淘寶上商品千千萬萬,推薦系統能否保證讓新的一些商品有足夠的機會曝光出去呢?還是有些商品永遠都無法得到推薦曝光的機會。這個指標反應的就是這個情況,顯然物品的覆蓋率是達不到100%的,但是我們可以看類目的覆蓋率來進行衡量,假設全網所有的一級大類目一共2千個(和全網上億的物品相比非常的少),那麼推薦系統一天之內推薦出去的商品對應的一級類目,這個就是我們要衡量的標准。如果覆蓋率
J. 求高手提供matlab基於用戶的協同過濾推薦演算法的源代碼,將不勝感激!!!
自己寫吧,我畢論也是做推薦演算法的。現在正在寫基於用戶的協同過濾。已基本完工。
是否可以解決您的問題?