django部署机器学习模型—搭建新闻推荐系统

1、django框架

2、推荐算法模型

  • 思路:采用SVD+LightGBM模型,将SVD(奇异值)分解所得到的用户特征矩阵和新闻特征矩阵的基础上,结合用户在新闻网站上的操作行为等特征数据,构建基于LIghtGBM的新闻评分预测算法及新闻推荐系统。

关键操作

一、算法中引入用户偏好的时间指数修正模型(以音乐网站为例)

在实际生活中,人们的兴趣与行为偏好并不是一成不变的,而是随着时间与环境的变化而发生相应地改变,以音乐推荐为例,假设用户A在2018年之前更偏好爵士乐,收听音乐渠道主要来自本地音乐库,而从2018年开始,该用户收听摇滚音乐的数据在不断增多,而来自“私人电台”收听渠道歌曲占比也在不断上升,那么我们就可以推测,如果从电台渠道为这位用户推荐摇滚音乐,用户对推荐歌曲的接受程度也就更高。传统的推荐算法在向用户进行推荐时并没有考虑到时间因素对用户偏好的影响,推荐结果不具有较强的时效性,因此本文把用户行为中的时间因素考虑进来,为用户偏好构建时间指数修正模型,确保推荐系统能及时察觉到用户兴趣的变化。

时间指数修正模型由时间衰减函数来决定,如公式1所示:

公式中,,如果用户最主要的行为距离当前时间越近,表明用户感兴趣的可能性越大,如果距离当前时间越远,则表明用户感兴趣的可能越小。在歌曲推荐中,时间衰减函数主要应用在特征工程构建环节,用户在各项指标上的行为频次或占比如果距离当前时间越近,权重会越大;如果距离当前时间越远,权重越小

假设,一个用户在2016年注册并开始使用某一音乐服务网站,并且该用户只收听过摇滚乐与爵士乐,这两类歌曲的评分一致,但主要收听时间范围有所不同,收听歌曲占比如下所示:

从上表中可以看到,与爵士乐相比,摇滚乐的主要收听时间距离推荐时间较远,因此在加入时间因子后,摇滚乐歌曲的评分评分降幅要大于爵士乐,这说明时间指数修正模型能够很好地捕捉用户近期的行为偏好。

用户偏好等数据经过时间指数修正后,将应用到LightGBM算法的歌曲评测中。

在实际应用中,我们将算法部署在离线处理与在线计算两大模块上。在离线阶段执行SVD算法的复杂运算,减少响应时间;在在线处理阶段执行LightGBM算法,通过加权融合的方式产出最终的推荐列表,提高系统的时效性。在此基础上,用户对推荐列表的反馈也会被记录到数据库中,推动模型不断进行迭代优化,提升算法的推荐性能。

模型加权比例:基于SVD的预测评分和基于LightGBM的预测评分将以不同的权重进行组合,得到最终的SVD-LightGBM模型预测结果。当\alpha=0,\beta=1时,预测结果为SVD算法的预测评分;当\alpha=1,\beta=0时,为LightGBM算法的预测评分。为了合理确定\alpha\beta的值,经过测试确定\alpha=0.9,\beta​=0.1​​​​​​​​​​​​​

3、推荐系统生成

将训练的模型部署在django框架中,经过测试从模型预测开始到新闻列表的展示过程耗时在3s左右。

原文链接:https://blog.csdn.net/weixin_38664232/article/details/98174727?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277607816782248557448%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165277607816782248557448&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-3-98174727-null-null.nonecase&utm_term=%E6%96%B0%E9%97%BB

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
文明发言,共建和谐米科社区
提交
头像

昵称

取消
昵称表情图片