[R]可能是史上程式碼最少的協同過濾推薦引擎
可能是史上程式碼最少的協同過濾推薦引擎 – 不周山
http://www.wentrue.net/blog/?p=970
實際上是用R實現的item-based CF推薦演算法。
讀入資料,原資料是user-subject的收藏二元組
data = read.table('data.dat', sep=',', header=TRUE)
標識user與subject的索引
user = unique(data$user_id)
subject = unique(data$subject_id)
uidx = match(data$user_id, user)
iidx = match(data$subject_id, subject)
從二元組構造收藏矩陣
M = matrix(0, length(user), length(subject))
i = cbind(uidx, iidx)
M[i] = 1
對列向量(subject向量)進行標準化,%*%為矩陣乘法
mod = colSums(M2)0.5 # 各列的模
MM = M %*% diag(1/mod) # M乘以由1/mod組成的對角陣,實質是各列除以該列的模
crossprod實現MM的轉置乘以MM,這裡用於計算列向量的內積,S為subject的相似度矩陣
S = crossprod(MM)
user-subject推薦的分值
R = M %*% S
R = apply(R, 1, FUN=sort, decreasing=TRUE, index.return=TRUE)
k = 5
取出前5個分值最大的subject
res = lapply(R, FUN=function(r)return(subject[r$ix[1:k]]))
輸出資料
write.table(paste(user, res, sep=':'), file='result.dat', quote=FALSE, row.name=FALSE, col.name=FALSE)
相關文章
- 【Datawhale】推薦系統-協同過濾
- 推薦協同過濾演算法演算法
- SimRank協同過濾推薦演算法演算法
- 推薦召回--基於物品的協同過濾:ItemCF
- 協同過濾實現小型推薦系統
- 協同過濾推薦演算法總結演算法
- 協同過濾在推薦系統中的應用
- 物品推薦(基於物品的協同過濾演算法)演算法
- 推薦系統入門之使用協同過濾實現商品推薦
- 推薦系統與協同過濾、奇異值分解
- 基於使用者的協同過濾來構建推薦系統
- 矩陣分解在協同過濾推薦演算法中的應用矩陣演算法
- 協同過濾的R語言實現及改進R語言
- 【小白學推薦1】 協同過濾 零基礎到入門
- 協同過濾筆記筆記
- 【轉】推薦系統演算法總結(二)——協同過濾(CF) MF FM FFM演算法
- 協同過濾演算法演算法
- chapter2:協同過濾APT
- 推薦系統--完整的架構設計和演算法(協同過濾、隱語義)架構演算法
- 基於遺傳最佳化的協同過濾推薦演算法matlab模擬演算法Matlab
- 協同過濾演算法——入門演算法
- 協同過濾演算法簡介演算法
- 基於物品的協同過濾演算法演算法
- 使用協同濾波(Collaborative Filtering)實現內容推薦系統Filter
- 基於專案的協同過濾推薦演算法(Item-Based Collaborative Filtering Recommendation Algorithms)演算法FilterGo
- chapter3:協同過濾-隱式評級及基於物品的過濾APT
- 【JAVA】助力數字化營銷:基於協同過濾演算法實現個性化商品推薦Java演算法
- 機器學習:推薦系統(五. 以矩陣分來解協作過濾)機器學習矩陣
- 協同過濾演算法概述與python 實現協同過濾演算法基於內容(usr-it演算法Python
- 基於使用者的協同過濾演算法演算法
- Slope One :簡單高效的協同過濾演算法演算法
- 基於矩陣分解的協同過濾演算法矩陣演算法
- 推薦個比較好用的協同辦公軟體?
- Python之協同過濾(尋找相近的使用者)Python
- 深入理解mahout基於hadoop的協同過濾流程Hadoop
- 協同過濾(CF)演算法詳解和實現演算法
- Mahout的taste推薦系統引擎(影片推薦案例)AST
- 預測電影偏好?如何利用自編碼器實現協同過濾方法