机器学习-推荐系统(上)

推荐系统:

推荐系统是日常生活中很常见的一种算法,比如购物软件中主界面上展示的商品、影视软件中首页展示的视频等,下面以电影评分为例,介绍推荐系统的建模过程。

首先,设用户数为,电影数为。显然,在收集的数据中有一些电影可能并没有被所有用户观看过,因此以二元变量来表示:用户j是否有对电影i进行评分,有则为1,反之为0。而对于已经被评分的电影,表示评分分数。

根据上述变量假设,若我们目前已知电影的特征信息 ,即可知每部电影对应的特征向量,特征数为n,那么对于预测每一个用户对电影的评分 而言,我们可以类似线性回归进行建模,预测评分可表示为:

因此对应的单个用户j的成本函数表示为:

其中,表示对于用户j总共评价了的电影数量,而实际上这个数值是一个常数,可以移去。那么,对于所有的用户而言,整体的成本函数则为:

不过,上述的所有推导都建立在已知电影特征信息的情况下,如果以特征信息为未知量时,同上可以推导出对于每一个电影可能的特征向量,对应的成本函数为:

而对于所有的电影而言,总体的成本函数为:

协同过滤算法:

实际上,上述的三个参数都是未知量,因此引入协同过滤算法,则三个参数下的成本函数可以表示为:

同样类似与线性回归,梯度下降对应表达式为:

之所以称之为协同过滤算法,就是因为这样建立的模型可以通过协同收集用户已经评分的数据,用于后续预测未来用户的评分行为。

二元标签:

实际情况中,除了评分之外,还有另一种更常见的二元标签,通过0-1二元变量来表示用户是否喜欢/购买/停留了解/点击某项目。对于二元标签的情况,它的建模过程类似于由线性回归转变到逻辑回归的过程。所以,此时预测得到的y表达式为:

其中:

与逻辑回归一样,此时我们不再采用均方误差作为损失,对于单个样本,其损失函数为:

那么整体的成本函数就表示为:

均值归一化:

假设我们此时引入一个新用户,该用户没有对任何一部电影进行过评分。如果按照之前的模型,由于在成本函数中引入了正则化项 ,且该用户没有评分,即成本函数第一项没有用任何影响,那么此时得出的,而初始化值。可见如果采用这样得出的参数进行预测,结果是非常不准确的,因此我们需要对原始数据进行均值归一化。

我们对原始数据矩阵的每一行求平均值,即计算每一部电影的平均得分,得到均值向量,之后对原始数据更新为原始数据。这样得到的预测结果应该是:

此时同样由于存在正则化项,得出的,而初始化值,若初始值取0,则预测的新用户对于每一部电影的评分都将是原来这部电影的平均得分。相较于原始数据得出的结果,显然这次结果更为合理。并且,进行均值归一化还能略微的提高运行速度。

除了对行求平均外,我们也可以对列进行平均,即计算每一个用户对于看过的电影的平均评分情况,这种情况更适合出现一部新电影时,预测不同用户对其的评分结果。

如何进行推荐:

假设目前已经完成了前面的建模,那么对于某一个用户,应该对其推荐什么样的项目?结合协同过滤算法的内容,我们可以通过该算法得到每一个项目的特征向量,虽然该向量通常是难以理解的,很难通过对用户喜欢项目得出的特征向量具体的理解信息来进行推荐。因此实际会推荐与特征向量相似的向量对应的项目k,相似定义如下:

相关推荐
盖伦发发2 分钟前
RAG 能跑≠能用:用 EDD 把 Eval 做成基础设施 (附源码)
人工智能·后端·python·功能测试
XTurnV00714 分钟前
一文讲明白DeepSeek Harness 是什么,怎么用
人工智能
Robot_Nav14 分钟前
前沿 | DeepSeek Harness 完整指南:架构原理、Windows/Linux 安装、插件生态与实战配置
人工智能·ai编辑器·deepseekharness
数据智研14 分钟前
【数据分享】全国农产品成本收益资料汇编(1953-2025)
大数据·人工智能·信息可视化·数据分析
daad77718 分钟前
802.11 前导码与 STF 深度解析(含检测算法与 5G 对比
人工智能·算法·5g·wifi·802.11·前导码
fail_to_code21 分钟前
感受deepseek-harness那极端的工程纪律性
人工智能
咖啡星人k21 分钟前
Vibe Coding 实战:用 MonkeyCode 一个下午做出可玩的小游戏
人工智能
正经教主25 分钟前
AI提示词工程(进阶)第11课:结构化输出与格式化控制
人工智能
GGBond今天继续上班26 分钟前
给 DeepSeek Harness 写了个生图插件,补上了原生对话生图能力
人工智能·github·deepseek
AI刀刀28 分钟前
Kimi 文档导出格式错乱、排版丢失、导出报错?AI 导出鸭一键智能适配,稳定输出规范 Word、PDF,高效解决各类导出难题
人工智能·pdf·word·ai导出鸭