xlvector介绍了用user-based 推荐算法做Google Reader 推荐, 跟他在GTalk上聊了一些细节, 跟我在FeedzShare中作的大同小异. 我也来分享一下在FeedzShare推荐中的一些实践.
1. 也是user-based. 如xlvector所说user-based算法非常适合于item快速更新的场合.
2. user-based 算法要求先算出一组相似用户. 在FeedzShare 中这一步是在后台job 来计算, 根据每个用户最近2个月share的文章, 找到20个左右相似用户. 对相似度设了一个阈值, 所以有时候没有20个. 相似用户保持到数据库, 每个礼拜算一遍.
3. 找出这一组N个相似用户三天内share的文章, 一般会有100~200篇. 统计相似用户中share 这篇文章的次数排序(不是所有FeedzShare 抓到的Google Reader用户Share次数), 大于M的加入推荐结果, 去掉用户自己已经share的文章后按时间排序
阈值M的取值: N<10时, M=2, N>=10, M=3. 这个数纯粹是蒙的. 主要是控制相关性和推荐结果的数量, 是根据自己的体验和朋友的反馈慢慢调整的
文章推荐是用户访问和Feed Fetcher 来抓时实时计算的, 不过在web server上做了缓存.
之所以用相似用户的share数来过滤, 而不是用全体用户的share次数, 是想做到更个性化一些, 能够为读者找出一些小众的文章来.
设定最小的share 数M是为了保证相关性, 排除可能的随机性. 但这不是太好的办法.
一些问题:
- 如果用户share的文章太少的话, 可能找不到相似用户, 或者1, 2 个. 这种情况下目前是放弃推荐;
- share数量的多少和找到的相似用户数量没有什么大的联系. 有用户share数量很多, 但是能找到的超过阈值的没有;
- 这种方式下推荐的文章数量是无法控制的, 有时太多有时太少. 但是我不想用TOP N的方式, 担心放弃掉一些小众的内容.
- 目前Google Reader 中文用户不多(xlvector统计大概2W左右), 而且大部分兴趣相近, 使推荐的个性化还不够. 比如说热门的话题主要集中在互联网,群体性事件和数码产品, 我个人比较喜欢电影, 但是很少能找到这方面的文章.
分类:
FeedzShare
标签:
feedzshare
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述