我有一个应用程序可以聚合各种体育内容(新闻文章、视频、来自用户的讨论、推文),我目前正在努力让它向用户显示相关内容。每个帖子都有一个喜欢按钮,所以我用它来确定什么是流行的。我正在使用 reddit 算法让它按受欢迎程度排序,但也要考虑时间因素。但是,我的问题是我想让每个用户都更加个性化。每个用户都应该根据他们喜欢的内容看到更多内容。我有几个要衡量的因素: - 他们观看/点击的每个内容有多少?例如:60% 的视频和 40% 的文章 - 他们喜欢什么球队/球员?如果一条新闻是关于他们喜欢的球队的,那么它的权重应该更重——他们更喜欢什么运动?用户可以关注多种运动
我目前正在做的事情:对于上面列出的每个因素,我会将文章的流行度分数增加 X。例如:用户喜欢视频的比例比其他内容高 70%。我会把视频的分数提高 70%。
我想看看是否有更好的方法来做到这一点?有人告诉我机器学习是一个好方法,但我想看看是否有其他选择。
小智 6
听起来您所做的工作是开始个性化您的用户提要的好地方。
基于流行度指标(喜欢、评论等)、新近度和内容类型的排名是 Facebook 过去使用的 EdgeRank 算法的基础。
您可以应用许多指标来尝试提高参与度。用户喜欢来自团队 x 的帖子,y 次,因此如果帖子来自 y,则通过 log(x) 提高提要中的活动,如果较新则提高活动,如果受欢迎则提高活动,等等......你可以开始看到这些 EdgeRank跟踪的指标越多,算法就会变得有点笨拙,而很快。此外,您为每个用户设置的所有超参数往往都是固定的,这不会为每个用户提供理想的排名算法。这就是机器学习技术可以发挥作用的地方。
处理这类事情的主要算法类别通常称为“学习排名”,可以在较高的层次上概括为 3 类。协同过滤技术、基于内容的技术和混合技术(前两者的混合)
如果您的提要很可能会因新项目而频繁更新,我会看看基于内容的方法。通常,这些算法会围绕参与度指标进行优化,例如用户将在其 Feed 中点击、查看、评论或喜欢某项活动的可能性。
一点点自我推销:我写了几篇博客文章,其中涵盖了您可能会觉得有趣的一些内容。
https://getstream.io/blog/instagram-discovery-engine-tutorial/ https://getstream.io/blog/beyond-edgerank-personalized-news-feeds/
这可能有很多事情要做,因此您还可以考虑使用 Stream(免责声明,我确实在那里工作)之类的 3rd 方服务,它可以帮助开发人员构建可扩展的个性化提要。