1. 程式人生 > >Slope one推薦演算法原理

Slope one推薦演算法原理

推薦演算法Slope one的原理

Slope One的基本概念很簡單, 例子1, 使用者X, Y和A都對Item1打了分. 同時使用者X,Y還對Item2打了分, 使用者A對Item2可能會打多少分呢?
User Rating to Item 1 Rating to Item 2
X 5 3
Y 4 3
A 4 ?

根據SlopeOne演算法, 應該是:4 - ((5-3) + (4-2))/2 = 2.5. 
解釋一下. 使用者X對Item1的rating是5, 對Item2的rating是3, 那麼他可能認為Item2應該比Item1少兩分. 同時使用者Y認為Item2應該比Item1少1分. 據此我們知道所有對Item1和Item2都打了分的使用者認為Item2會比Item1平均少1.5分. 所以我們有理由推薦使用者A可能會對Item2打(4-1.5)=2.5分;

很簡單是不是? 找到對Item1和Item2都打過分的使用者, 算出rating差的平均值, 這樣我們就能推測出對Item1打過分的使用者A對Item2的可能Rating, 並據此向A使用者推薦新專案.
這裡我們能看出Slope One演算法的一個很大的優點, 在只有很少的資料時候也能得到一個相對準確的推薦, 這一點可以解決Cold Start的問題.

加權演算法

接下來我們看看加權演算法(Weighted Slope One). 如果有100個使用者對Item1和Item2都打過分, 有1000個使用者對Item3和Item2也打過分. 顯然這兩個rating差的權重是不一樣的. 因此我們的計算方法是
(100*(Rating 1 to 2) + 1000(Rating 3 to 2)) / (100 + 1000)

上面討論的是使用者只對專案的喜好程度打分.還有一種情況下使用者也可以對專案的厭惡程度打分. 這時可以使用雙極SlopeOne演算法(BI-Polar SlopeOne).

以上是Slope one的原理,接下來看看它在Mahout中是如何設計與實現的。

Mahout中Slope one的設計思路以及程式碼實現

        先簡單介紹下,Mahout是Apache的一個開源專案,由Lucene專案組和Hadoop專案組分離出來,它實現了推薦引擎中的大部分經典演算法,有興趣的朋友可以研究研究 

        首先我們需要基礎資料,即使用者對產品的評分,這部分資料可以來自資料庫也可以來自檔案,Mahout中對此設計了一個簡單的資料庫表,SQL如下:

?
1 2 3 4 5 6 7 8 CREATETABLE taste_preferences (
user_idBIGINTNOT NULL, item_idBIGINTNOT NULL, preferenceFLOATNOT NULL, PRIMARYKEY (user_id, item_id), INDEX(user_id), INDEX(item_id) )

        其次,Mahout在啟動時,會對這部分資料進行處理,算出每對產品間的平均評分差值,已Map<ItemId, Map<ItemId, Average>>的資料結構存放在記憶體中(當然這幫牛人沒有用Java中Map的實現,自己寫了一個叫FastByIDMap的類)。處理基礎資料的計算程式碼如下:

 1. 首先獲取所有評過分的使用者id (7,而dataModel就是用於存放我上面提到的基礎)

 2. 然後依次計算每個使用者評分過的產品間的平均評分差值 (9,具體在processOneUser中實現)

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 privatevoid buildAverageDiffs() throwsTasteException { log.info("Building average diffs..."); try{ buildAverageDiffsLock.writeLock().lock(); averageDiffs.clear(); long averageCount = 0L; LongPrimitiveIterator it = dataModel.getUserIDs(); while(it.hasNext()) {

相關推薦

Slope one推薦演算法原理

推薦演算法Slope one的原理 Slope One的基本概念很簡單, 例子1, 使用者X, Y和A都對Item1打了分. 同時使用者X,Y還對Item2打了分, 使用者A對Item2可能會打多少分呢? User Rating to Item

今日頭條推薦演算法原理解析

今日頭條的內容主要來源於兩部分,一是具有成熟內容生產能力的PGC平臺,一是UGC使用者內容,如問答、使用者評論、微頭條。這兩部分內容需要通過統一的稽核機制。如果是數量相對少的PGC內容,會直接進行風險稽核,沒有問題會大範圍推薦。UGC內容需要經過一個風險模型的過濾,有問題的會進入二次風險稽核。稽核通過後,內容

今日頭條推薦演算法原理及詳解

來源:https://www.toutiao.com/a6511211182064402951/

基於使用者的協同過濾推薦演算法原理和實現

在推薦系統眾多方法中,基於使用者的協同過濾推薦演算法是最早誕生的,原理也較為簡單。該演算法1992年提出並用於郵件過濾系統,兩年後1994年被 GroupLens 用於新聞過濾。一直到2000年,該演算法都是推薦系統領域最著名的演算法。      本文簡單介紹基於使用者的協同

分解機(Factorization Machines)推薦演算法原理

    對於分解機(Factorization Machines,FM)推薦演算法原理,本來想自己單獨寫一篇的。但是看到peghoty寫的FM不光簡單易懂,而且排版也非常好,因此轉載過來,自己就不再單獨寫FM了。 (adsbygoogle = wi

Slope one:簡單高效的推薦演算法

  推薦系統最早在亞馬遜的網站上應用,根據以往使用者的購買行為,推薦出購買某種產品同時可能購買的其他產品,國內做的不錯的噹噹網,有時候買書,它總能給我推薦出我感興趣的其他書來,也算是技術極大的促進了銷售。 一般的協同過濾演算法,首先是收集使用者對事物(產品)的評分情況,一種直

協同過濾推薦演算法Slope One的介紹

Slope One 之一 : 簡單高效的協同過濾演算法(轉)(       原文地址:http://blog.sina.com.cn/s/blog_4d9a06000100am1d.html        現在做的一個專案中需要用到推薦演算法, 在網上查了一下. Beyo

協同過濾推薦slope one演算法

1.示例引入 比如說你在京東選購手機iphone和note7: 消費者用過後,會有相關的評分。 假設評分如下:  評分 iphone note7  小a 4 5  小b 4 3  小c 2 3  小d 3 ?  問題:請猜測一下小d可能會給“note7”打多少分? 

推薦演算法--slope one

根據SlopeOne演算法, 應該是:4 - ((5-3) + (4-3))/2 = 2.5.         解釋一下. 使用者X對Item1的rating是5, 對Item2的rating是3, 那麼他可能認為Item2應該比Item1少兩分. 同時使用者Y認為Item2應該比Item1少1分. 據此我們

推薦演算法slope one 演算法

1.示例引入 多個吃貨在某美團的某家飯館點餐,如下兩道菜: 可樂雞翅: 紅燒肉: 顧客吃過後,會有相關的星級評分。假設評分如下: 評分 可樂雞翅 紅燒肉 小明 4 5 小紅 4

推薦演算法slope one之java實現

import java.util.*; /** * Daniel Lemire A simple implementation of the weighted slope one algorithm in * Java for item-based collabora

使用者推薦Slope One演算法與mapreduce&hive實現

使用者推薦越來越熱, Google使用MinHash, PLSI, LDA, SVD, SVM等演算法,分析使用者的喜好, 實現新聞的自動分類;新浪也用Slope One以及一些Item-based的演算法對音樂進行推薦; 淘寶定期會啟動MapReduce作業分析前一天或者

Slope one—個性化推薦中最簡潔的協同過濾演算法

Slope One 是一系列應用於 協同過濾的演算法的統稱。由 Daniel Lemire和Anna Maclachlan於2005年發表的論文中提出。 [1]有爭議的是,該演算法堪稱基於專案評價的non-trivial 協同過濾演算法最簡潔的形式。該系列演算法的簡潔特

推薦演算法Slope One演算法

和其他類似演算法相比,最大特點是演算法簡單,易於實現,執行效率高 基本概念: 現在 使用者 X,Y,Z都對itemA進行評分,並且X,Y也對itemB進行了評分,那麼Z對itemB的評分應該是多少呢?  根據 Slope One演算法,?= 4 - [( 5 - 10

基於線上評分的協同過濾演算法---Slope One演算法

基於評分的協同過濾是根據其他使用者對A商品的評分預測一個使用者對A商品的評分的過程。我們提出了3個用f(x)=x+b來預測的相關的slope one 方案,如果有2個商品,這一個使用者對著2個商品都進行了打分,我們計算著2個產品的差值。slope one 演算法是很容易應用的,高效的查詢,合理的精度並且該演算

推薦系統遇上深度學習(二十)--貝葉斯個性化排序(BPR)演算法原理及實戰

原創:石曉文 小小挖掘機 2018-06-29推薦系統遇上深度學習系列:排序推薦演算法大體上可以分為三類,第一類排序演算法類別是點對方法(Pointwise Approach),這類演算法將排序問題被轉化為分類、迴歸之類的問題,並使用現有分類、迴歸等方法進行實現。第二類排序演算法是成對

推薦系統的常用演算法原理和實現

推薦系統的出現 推薦系統的任務就是解決,當用戶無法準確描述自己的需求時,搜尋引擎的篩選效果不佳的問題。聯絡使用者和資訊,一方面幫助使用者發現對自己有價值的資訊,另一方面讓資訊能夠展現在對他感興趣的人群中,從而實現資訊提供商與使用者的雙贏。 推薦演算法介紹

推薦演算法】今日頭條推薦系統原理

據悉,今日頭條的資訊推薦演算法自2012年9月第一版開發執行至今,已經經過四次大調整和修改。目前服務全球億萬使用者。 以下為曹歡歡關於《今日頭條演算法原理》的分享內容(已授權): 本次分享將主要介紹今日頭條推薦系統概覽以及內容分析、使用者標籤、評估分析,內容安全等

推薦系統遇上深度學習(二十)-貝葉斯個性化排序演算法原理及實戰

排序推薦演算法大體上可以分為三類,第一類排序演算法類別是點對方法(Pointwise Approach),這類演算法將排序問題被轉化為分類、迴歸之類的問題,並使用現有分類、迴歸等方法進行實現。第二類排序演算法是成對方法(Pairwise Approach),在序列方法中

推薦演算法之FFM:原理及實現簡介

推薦系統一般可以分成兩個模組,檢索和排序。比如對於電影推薦,檢索模組會針對使用者生成一個推薦電影列表,而排序模組則負責對這個電影列表根據使用者的興趣做排序。當把FFM演算法應用到推薦系統中時,具體地是應用在排序模組。 FFM演算法,全稱是Field-aware