Loading

推荐系统---协同过滤

推荐

终于找到好文章了!!!

ALS算法实现用户音乐打分预测-阿里云开发者社区

可以给两个脚本定时执行,来处理打点数据,来完成对用户的推荐。

dt-recommend 中 Trainer 是保存数据的地方.

Trainer:

  • 找到打点数据(打点数据放在 hbase 中, 取出其中的 userid,feedid,feedtype 等)
  • 通过spark.mllib库调用一个 ALS(最小二乘法)算法, 得到一个 model
  • 从这个 model 中得到 userFeatures, productFeatures(对应user, feed. 这时两个特征矩阵,具体的还得看ALS是什么).
  • 保存 model, 放到hadoop? 分两个文件夹 matadata(className, formatversion, rank), data(user, product)
  • 开始推荐, 推荐时就是计算 userid , feeid ,score. 其中 score 是一个打分, score 越高, 说明越应该给用户推荐这个 feed.

其中有一个 ddot 是个 java 程序, 用来计算特征向量的, 计算用户和 feed 的特征向量得到一个 score.

协同过滤

概念

rating:

记录一个矩阵, 每一行代表一个用户, 每一列是一个 item(product).

隐式反馈 显式反馈:

比如对电影的评分, 属于显式

比如用户的点击,评论, 收藏等, 属于隐式

代码

val model = ALS.*trainImplicit*(clickEvents, rank, iterations, lambda, blockSize, alpha) **

clickEvents 就是 rating, 我的理解 rating 就是行为用户,列为 item, 值为评分的矩阵.

这个 trainImplicit 方法是隐式反馈要调用的.

对 rating 进行矩阵分解, 矩阵分解有种方法, 这里就是 ALS 方法进行矩阵分解.

【推荐系统算法实战】 ALS 矩阵分解算法

关于 spark mllib 库的讲解:

用Spark学习矩阵分解推荐算法

mllib 库中只提供了基于矩阵分解的协同过滤算法.

还有一片比较容易懂的:

Spark ALS应用与理解 | Ice の Mimosa

mllib 使用 ASL 对 rating 矩阵进行分解, 得到 user 和 product 矩阵.

user 特征向量 和 product 特征向量 点积, 可以得到每个用户对于该 feed 的推荐值

posted @ 2022-02-15 16:05  KeBoom  阅读(97)  评论(0编辑  收藏  举报