推荐系统Gorse介绍
文章目录
简介
Gorse ,官方网址https://docs.gorse.io/
Gorse 是一个用 Go 编写的开源推荐系统。Gorse 旨在成为一个通用的开源推荐系统,可以很容易地引入到各种在线服务中。通过将项目、用户和交互数据导入 Gorse,系统将自动训练模型为每个用户生成推荐。项目特点如下。
- AutoML:通过后台模型搜索自动选择最佳推荐模型和策略。
- 分布式推荐:单节点训练,分布式预测,在推荐阶段实现横向扩展的能力。
- RESTful API:为数据 CRUD 和推荐请求提供 RESTful API。
- Dashboard:提供数据导入导出、监控、集群状态检查的dashboard。 Gorse 是一个单节点训练和分布式预测推荐系统。Gorse 将数据存储在 MySQL 或 MongoDB 中,中间数据缓存在 Redis 中。集群由一个主节点、多个工作节点和服务器节点组成。主节点负责模型训练、非个性化项目推荐、配置管理、会员管理。服务器节点负责公开 RESTful API 和在线实时推荐。Worker 节点负责为每个用户进行离线推荐。此外,管理员还可以通过主节点上的仪表板进行系统监控、数据导入导出、系统状态检查。
架构图
Master Dashboard | http://127.0.0.1:8088/ |
---|---|
Server RESTful API | http://127.0.0.1:8087/apidocs |
Server Prometheus Metrics | http://127.0.0.1:8087/metrics |
Worker Prometheus Metrics | http://127.0.0.1:8089/metrics |
主要逻辑
物品或者项目(Item)、用户(User)、反馈(feedback)、measurements
|
|
其中 FeedbackType、UserId、ItemId 三个字段为联合主键。
反馈就是用户和物品之间产生的一些事件,可以是正向的或者负向的,例如分享、点赞等等都属于用户对物品的正向反馈,如果用户阅读之后没有进一步的正向反馈,那么认为用户对该物品的反馈是负向的,为了方便记录,Gorse并没有直接提供负向反馈的概念而提供了已读反馈的概念。如果用户查看了物品,那么记录一个已读反馈。接着,如果用户给了物品正反馈,那么已读反馈被正反馈覆盖。反之,如果用户没有给出正反馈,那么已读反馈视为负反馈。
正反馈和已读反馈的区别
已读反馈即当用户看到了推荐的物品,即可记录为已读反馈。然而,正向反馈的确定更多取决于具体业务场景。对于抖音来说,用户如果点赞或者分享则可以认为是正反馈;对于哔哩哔哩来说,用户观看视频到达一定的完成度或者点赞、分享、收藏则认为是正反馈。总结以下,正反馈和已读反馈的确定遵循以下规则:
- 已读反馈: 用户看到了物品。
- 正向反馈: 希望用户去做的动作。 对应配置文件
|
|
正向反馈对应操作:点赞、收藏、播放完成80% 已读反馈对应操作:视频播放
注意:项目的已读反馈一旦发生,在推荐结果中将不再出现该项目
最佳实践问题
- 导入旧数据
- 现有数据的导入
- 数据更新和新增
- 提交反馈
- 检查是否有课程、用户,怎么判断是否已经反馈过
- 已读反馈,可以使用Gorse获取推荐结果的API提供了write-back-typewrite−back−type和write-back-delaywrite−back−delay这两个参数在获取推荐时就把已读反馈提交了。
- 正向反馈,根据实际情况而定。可以在日志提交的消息队列增加一个订阅处理程序。
- 获取推荐并应用
- 调取反馈接口并联合基础库查询结果
- 多租户问题要考虑
- 分类要尽量使用id,避免使用汉字
参考文章:
文章作者 古道
上次更新 2022-02-22