如:
假設使用者和物品數目分別是u和i,那對應的使用者-物品矩陣的維度為u*i。
要找到」使用者-物品」矩陣近似的k維(低階)矩陣,最終是求出如下2個矩陣:
表示使用者的u*k
表示物品的k*i維矩陣。這兩個矩陣也稱為因子矩陣。
因子分解型別也存在某些弱點。相比最鄰近模型,這類模型在理解和可解釋性難度上都有所增加。另外,其模型訓練階段的計算量也很大。
使用者對物品的偏好不會直接給出,而是隱含在使用者與物品的互動之中。二元資料(比如使用者是否**了某個電影或是否購買了某個商品)和計數資料(如使用者**某電影的次數)便是這類資料。
mlib庫實現了乙個特定方法,它將輸入的評級資料視為兩個矩陣:乙個二元偏好矩陣p和乙個信心權重矩陣c。
最小二乘法(alternating least squares,als)是一種求解矩陣分解問題的最優化方法。
als的實現原理是迭代式求解一系列最小二乘回歸問題。
rank:對應als模型中的因子個數,也就是在低階近似矩陣中的隱含特徵個數。
iterations:對應執行時的迭代次數。
lambda:該引數控制模型的正則化過程,從而控制模型的過擬合情況。
package com
.spark
import org.apache
.spark.
import org.apache
.spark
.mllib
.recommendation.
object tuijian
val model=als.train(ratings,50,10,0.01)
model.userfeatures
.count
val predictdrating=model.predict(789,123)
val userid=789
val k=10
val topkrecs=model.recommendproducts(userid,k)
println(topkrecs.mkstring("\n"))
}}
物品推薦是回答如下問題:給定乙個物品,有哪些物品與它最相似。
常見的相似度衡量方法包括皮爾森相關係數(pearson correlation)、針對實數向量的余弦相似度(cosine similarity)和針對二元向量的傑卡德相似係數(jaccard similarity)。
jblas線性代數庫(mllib的依賴庫之一)
基於物品 使用者 的推薦演算法
用mapreduce計算框架實現了3個小demo wordcount 基於物品的推薦演算法 itemcf 和基於使用者的推薦演算法 usercf 連線 map輸入 key longwritable型別,每一行的起始偏移量 value text型別 userid,itemid,score map輸出 ...
協同過濾之基於使用者 物品矩陣推薦系統 待續
先上圖,第乙個是基於物品協同過濾推薦,第二個是基於使用者的協同過濾推薦 這個兩個步驟差不多。先說基於物品的協同過濾,原理就是上面這張圖,下面說步驟 步驟 1 根據使用者對物品的評分構建使用者 物品矩陣 2 建立乙個nn的物品相似度矩陣 在產品 產品協同過濾中的產品之間的相似性值是通過觀察所有對兩個產...
linux系統中使用者
一 使用者身份介紹 1 系統管理員使用者,uid user identification 0,2 系統使用者,uid為1 999,預設的程式都有獨立的系統使用者負責,執行,進而控制被破壞的範圍,3 普通使用者,uid 從1000開始,由管理員建立,用於日常工作的使用者,注 建立使用者時,uid不能重...