推荐模型称作“推荐系统这个皇冠上的明珠”

协同过滤算法的基本原理

“用户行为数据是推荐系统最常用,也是最关键的数据。用户的潜在兴趣、用户对物品的评价好坏都反映在用户的行为历史中”。

“协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。

计算用户相似度

sim(i,j)=cos(i,j)=∣∣i∣∣×∥j∣∣i⋅j

用户评分的预测

Ru,p=∑s∈Swu,s∑sϵS(wu,s⋅Rs,p)

矩阵分解算法的原理

虽然说协同过滤是目前公认的最经典的推荐算法,但我们还是可以轻松找出它的缺点,那就是共现矩阵往往非常稀疏,在用户历史行为很少的情况下,寻找相似用户的过程并不准确。

这个时候你肯定觉得,矩阵分解不就是相当于一种 Embedding 方法嘛。没错,矩阵分解的主要过程,就是先分解协同过滤生成的共现矩阵,生成用户和物品的隐向量,再通过用户和物品隐向量间的相似性进行推荐。


矩阵分解算法的 Spark 实现

// 建立矩阵分解模型

val als = new ALS()

.setMaxIter(5)

.setRegParam(0.01)

.setUserCol("userIdInt")

.setItemCol("movieIdInt")

.setRatingCol("ratingFloat")

//训练模型

val model = als.fit(training)

//得到物品向量和用户向量

model.itemFactors.show(10, truncate = false)

model.userFactors.show(10, truncate = false

  • 无标签