推荐系统—协同过滤

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。推荐系统—协同过滤,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

推荐

终于找到好文章了!!!

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 的推荐值

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/195908.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!