《推荐系统实践》读书笔记5

推荐系统实例

在搭建好了推荐系统外围架构(界面展示和用户行为数据)后,进行推荐系统的架构。一个推荐系统包括多个推荐引擎,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定权重或优先级合并、排序然后返回。
用户反馈是推荐系统的重要组成部分,主要通过分析之前和推荐结果的交互日志,预测用户会对什么样的推荐结果感兴趣,然后针对用户实现不同的推荐策略。

评分预测问题

因为用户不可能对所有物品都评分,因此评分预测问题就是如何通过已知的用户历史评分记录预测未知的用户评分记录。
Netflix通过如下方式划分数据集:
首先将用户的评分按时间排序,然后将用户最后10%的评分作为测试集,前90%的评分记录作为训练集。

评分预测算法

最简单的评分预测算法

:利用平均值预测用户对物品的评分

  1. 全局平均值(一个评分系统有些固有属性与用户物品无关,在不同的网站中,因为网站定位和销售的物品不同,网站的整体评分分布也会显示出一些差异)
    定义为:训练集中所有评分记录的评分平均值。
    在这里插入图片描述
  2. 用户评分平均值 (用户的评分习惯中和物品没有关系的那种因素,比如有些用户苛刻,有些用户宽容)
    定义为用户 u u u在训练集中所有评分的平均值。
    在这里插入图片描述
  3. 物品评分平均值 (物品接受的评分中和用户没有关系的因素,如物品的质量高低,会导致评分高低)
    定义为:物品 i i i在训练集中接受的所有评分的平均值:
    在这里插入图片描述
  4. 用户分类对物品分类的平均值
    用户分类:1)将用户按照用户平均分平均分成N类;
    2)按用户活跃度平均分成N类。
    物品分类:1)将物品按照物品平均分平均分成N类;
    2)按物品流行度平均分成N类。
    可以利用训练集中同类用户对同类物品评分的平均值,预测用户对物品的评分。

基于邻域的方法

基于用户的邻域算法认为预测一个用户对一个物品的评分,需要参考和这个用户兴趣相似的用户对该物品的评分。
在这里插入图片描述
S ( u , K ) S(u,K) S(u,K)是 和用户u兴趣最相似的K各用户的集合, N ( i ) N(i) N(i)是物品i评过分的用户集合, r v i r_{vi} rvi是用户v对物品i的评分, r v ˉ \bar{r_{v}} rvˉ是用户v对他评过分的所有物品评分的平均值。
用户之间的相似度 w u v w_{uv} wuv可以通过皮尔逊系数计算:
在这里插入图片描述
基于物品的邻域算法
在这里插入图片描述
S ( i , K ) S(i,K) S(i,K)是和物品i最相似的物品集合, N ( u ) N(u) N(u)是用户u评过分的物品集合, r i ˉ \bar{r_{i}} riˉ是物品i的平均分。
比较了三种主要的相似度:
在这里插入图片描述

隐语义模型与矩阵分解模型

本质上是通过降维的方法将评分矩阵补全。
总体的思想是:借助 SVD 可以将一个相互垂直的网格 (orthogonal grid) 变换到另外一个互相垂直的网格。

  1. Funk-SVD(LFM):
    从矩阵分解的角度说,如果将评分矩阵R分解为两个低维矩阵相乘:
    R ^ = P T Q \hat{R_{}}=P^{T}Q R^=PTQ
    那么对于用户u对物品i的评分的预测值为:
    在这里插入图片描述
    利用RMSE作为评测指标,如果能找到合适的P、Q最小化训练集的预测误差,那应该也能最小化测试集的预测误差。
    损失函数定义为:
    在这里插入图片描述
    为防止过拟合,加入过拟合项:
    在这里插入图片描述
  2. 加入偏置项后的LFM:
    在这里插入图片描述
    μ \mu μ 全局平均数, b u b_{u} bu 为用户评分平均数, b i b_{i} bi为物品评分平均数。
  3. 考虑邻域影响的LFM
    SVD++
    显示地考虑将用户的历史评分的物品加入到LFM模型中:
    ItemCF预测算法:
    在这里插入图片描述
    与p,q类似, w i j w_{ij} wij变为参数。类似地,损失函数为:
    在这里插入图片描述
    w w w矩阵进行矩阵分解,即: w i j = x i T y j w_{ij}=x_{i}^{T}y_{j} wij=xiTyj
    在这里插入图片描述
    然后与LFM模型相加,得到如下模型即SVD++:
    在这里插入图片描述
    为避免太多参数造成过拟合,可令 x = q x=q x=q.
    ***

加入时间信息

TItemCF:预测用户在某一时刻会给物品什么评分:
在这里插入图片描述
在这里插入图片描述

模型融合

1) 模型级联融合
在这里插入图片描述
2)模型加权融合
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据库系统工程师笔记csdn是一篇关于数据库系统工程师学习笔记的文章。在这篇文章中,作者通过分享自己的学习笔记,为想要从事数据库系统工程师工作的人提供了有用的参考和指导。 文章中首先介绍了数据库系统工程师的职责,包括设计、开发、测试、维护和优化数据库系统,同时需要具备扎实的数据库原理和编程能力。作者建议想要成为一名数据库系统工程师的人,应该首先学习数据库的基本概念和 SQL 命令,同时还要了解各种数据库管理系统的操作和配置。 接着,作者介绍了数据库设计的基本步骤和原则,包括需求分析、概念设计、逻辑设计和物理设计等方面。这些步骤都非常重要,应该在设计数据库系统之前认真考虑。 最后,作者分享了自己在学习数据库系统工程师方面的心得和体会,强调了学习的重要性和不断提高自己的必要性。他建议大家在学习过程中要注重实践和思考,通过参与实际项目来提高自己的技能和经验。 总之,数据库系统工程师笔记csdn是一篇有价值的学习笔记,为想要成为一名数据库系统工程师的人提供了很好的指导和建议。希望更多的人可以从中获得启发,不断提高自己的技能和水平。 ### 回答2: 数据库系统工程师是一个高端技术岗位,主要负责设计和维护复杂的数据库系统。作为一名数据库系统工程师,需要具备深厚的计算机理论知识和丰富的实践经验,掌握多种数据库系统的管理和操作技术,以及熟练应对各种异常情况和技术挑战的能力。 在这个领域里,csdn的笔记内容十分丰富,包括了基础知识、应用实践、数据库系统架构设计、性能优化、数据安全等多个方面。这些笔记内容不仅包含了数据库的基础知识,还介绍了很多数据库系统性能调优和安全问题的解决方案,能够帮助数据库系统工程师更好地解决实际问题,提高工作效率。同时,笔记中有许多实用的案例,可以让数据库系统工程师更好地理解和掌握数据库系统的各种技术。 除了csdn的笔记外,数据库系统工程师还需要不断学习和探索新的数据库技术,通过阅读相关书籍和参加各种技术交流会议,拓展自己的视野和技能。只有不断学习和提高,才能在这个竞争激烈的领域里保持竞争力。 ### 回答3: 数据库系统工程师是负责设计、开发和维护数据库系统的专业技术人员。在现代信息化时代,全球各行各业都离不开数据库系统,这就需要数据库系统工程师掌握一定的技术,从而保证各种业务得以正常运行和发展。 CSND是一个专注于IT技术交流的平台,是大部分IT技术爱好者和从业人员的必备之地。在这个平台上,数据库系统工程师可以找到大量的学习资源和同行的交流,提高自己的技能水平。比如,他们可以了解数据库系统的基本概念、数据结构、SQL语言、数据库事务、索引优化和数据备份等技术,从而应对各种复杂的业务需求。 此外,数据库系统工程师还应该关注行业的大趋势,不断更新自己的知识储备。比如,随着大数据和云计算技术的快速发展,数据库系统工程师需要掌握分布式数据库、NoSQL等新技术,以适应业务的巨大变革。 总之,作为数据库系统工程师,不仅需要掌握实用技术,更要时刻关注技术的发展趋势和行业的变化,保持敏锐的洞察力和学习能力。而在CSND这个优秀的技术交流平台上,数据库系统工程师可以获得更多的机会,拓展自己的思路和视野,向自己的目标不断前进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值