推荐系统(Recommender Systems)

news2024/11/24 14:32:48

一、问题形式化

        在接下来的内容中,我将开始讲解推荐系统的一些理论知识。我们从一个例子开始定义推荐系统,假使我们是一个电影供应商,我们有 5 部电影和 4 个用户,我们要求用户为电影打分

前三部电影是爱情片,后两部是动作片,我们可以看出Alice和Bob似乎更倾向于爱情片,而 Carol 和 Dave 似乎更倾向于动作片,并且没有一个用户给所有的电影都打过分。因此我们希望构建一个算法来预测他们每个人可能会给他们没看过的电影打多少分,并以此作为推荐的依据,下面引入一些标记:

二、基于内容的推荐系统

        在基于内容的推荐系统中,项目或对象是通过相关特征的属性来定义的,系统基于用户评价对象的特征、学习用户的兴趣,考察用户资料与待预测项目的匹配程度。用户的资料模型取决于所用的学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。

       在我们的例子中,我们假设每部电影都有两个特征,如x_1代表电影的浪漫程度,x_2代表电影的动作程度,则每部电影都有一个特征向量,如x^{(1)}是第一部电影的特征向量为[0.9 0]。

下面我们要基于这些特征来构建一个推荐系统算法, 假设我们采用线性回归模型,我们可以针对每一个用户都训练一个线性回归模型,如{​{\theta }^{(1)}}是第一个用户的模型的参数,下面引入一些标记:

其中 i:r(i,j)表示我们只计算那些用户$j$ 评过分的电影,在一般的线性回归模型中,误差项和正则项应该都是乘以1/2m,在这里我们将m去掉。并且我们不对$\theta_0$进行正则化处理。

上面的代价函数只是针对一个用户的,为了学习所有用户,我们将所有用户的代价函数求和:

如果我们要用梯度下降法来求最优解,我们计算代价函数的偏导数后得到梯度下降的更新公式为:

三、协同过滤

        在之前的基于内容的推荐系统中,对于每一部电影我们都掌握了可用的特征,使用这些特征训练出了每一个用户的参数。相反地,如果我们拥有用户的参数,我们可以学习得出电影的特征。

但是如果我们既没有用户的参数,也没有电影的特征,这两种方法都不可行了,协同过滤算法可以同时学习这两者,我们的优化目标便改为同时针对$x$$\theta$进行,如下图:

 对代价函数求偏导数的结果如下:

注:在协同过滤算法中我们通常不使用$\theta_0$$x_0$项,如果需要的话算法会自动学得。 协同过滤算法使用步骤如下:

①初始x^{(1)},x^{(2)},...x^{(nm)},\ \theta^{(1)},\theta^{(2)},...,\theta^{(nu)}为一些随机小值

②使用梯度下降算法最小化代价函数

③在训练完算法后,我们预测(\theta^{(j)})^Tx^{(i)}为用户 j 给电影 i 的评分

我们可以通过获得的特征矩阵作为给用户推荐电影的依据,例如如果一位用户正在观看电影x^{(i)},我们可以寻找另一部电影x^{(j)},选择使得两部电影的特征向量之间的距离\left\| {​{x}^{(i)}}-{​{x}^{(j)}} \right\|最小。

 四、向量化:低秩矩阵分解

        在上几节内容中,我们谈到了协同过滤算法,本节中我将会讲到有关该算法的向量化实现以及说说有关该算法我们可以做的其他事情。

我们有五部电影以及四位用户,那么这个矩阵 Y 就是一个5行4列的矩阵,它将这些电影的用户评分数据都存在矩阵里:

 

 推出评分:

找到相关影片:

        现在你已经对特征参数向量进行了学习,那么我们就会有一个很方便的方法来度量两部电影之间的相似性。例如说:电影 i 有一个特征向量x^{(i)},你是否能找到一部不同的电影 j,保证两部电影的特征向量之间的距离x^{(i)}x^{(j)}很小,那就能很有力地表明电影i和电影 j 在某种程度上有相似,至少在某种意义上,某些人喜欢电影 i,或许更有可能也对电影 j 感兴趣。

        通过这个方法,希望你能知道如何进行一个向量化的计算来对所有的用户和所有的电影进行评分计算。同时希望你也能掌握,通过学习特征参数来找到相关电影和产品的方法。

  五、推行工作上的细节:均值归一化

让我们来看下面的用户评分数据:

        如果我们新增一个用户 Eve,并且 Eve 没有为任何电影评分,那么我们以什么为依据为Eve推荐电影呢?我们首先需要对结果 Y 矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值

然后我们利用这个新的 Y 矩阵来训练算法,如果我们要用新训练出的算法来预测评分,则需要将平均值重新加回去,预测值为(\theta^{(j)})^T x^{(i)}+\mu_i。对于Eve,我们的新模型会认为她给每部电影的评分都是该电影的平均分。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1431666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

整理:汉诺塔简析

大体上,要解决一个汉诺塔问题,就需要解决两个更简单的汉诺塔问题 以盘子数量 3 的汉诺塔问题为例 要将 3 个盘子从 A 移动到 C,就要: 将两个盘子从 A 移动到 B(子问题 1) 为了解决子问题 1,就…

图论练习4

内容:染色划分,带权并查集,扩展并查集 Arpa’s overnight party and Mehrdad’s silent entering 题目链接 题目大意 个点围成一圈,分为对,对内两点不同染色同时,相邻3个点之间必须有两个点不同染色问构…

高端酒店宴会包间桌位预定小程序h5开源版开发

高端酒店宴会包间桌位预定小程序h5开源版开发 餐厅预定桌位系统,支持多店切换预约,提供全部前后台无加密源代码和数据库 功能特性 为你介绍餐厅预订系统的功能特性 多端适配 采用uniapp,目前适配小程序和微信H5 多店铺 支持多店铺预定 付费和免费预定 支…

数据结构中的时间复杂度和空间复杂度基础

目录 数据结构 数据结构中的基本名词 数据 数据对象 数据元素 数据项 数据类型 数据对象、数据元素和数据项之间的关系 数据结构及分类 逻辑结构 物理结构 算法 算法的特点 算法设计上的要求 算法效率的衡量 时间复杂度 大O渐进表示法 最坏情况和平均情况 常…

【Simulink系列】——动态系统仿真 之 离散系统线性离散系统

一、离散系统定义 离散系统是指系统的输入与输出仅在离散的时间上取值,而且离散的时间具有相同的时间间隔。满足下列条件: ①系统(的输入输出)每隔固定时间间隔才更新一次。固定时间间隔称为采样时间。 ②系统的输出依赖当前的…

【Spring】Spring 启示录

一、OCP 开闭原则 核⼼:在扩展系统功能时不需要修改原先写好的代码,就是符合OCP原则的,反之修改了原先写好的代码,则违背了OCP原则的 若在扩展系统功能时修改原先稳定运⾏程序,原先的所有程序都需要进⾏重新测试&…

景区导览系统|智能导览|景区电子导览|智慧景区导览|AI智能导览

景区/园区导览系统是必不可少的服务内容,可提供提供指引导航,讲解景点、VR游览、预约购票等服务。随着元宇宙、VR、AR等数字科技的不断发展,导览系统的形式也从传统的纸质地图、指示牌等形式,发展为如今的VR/AR智慧导览。 作为国…

【OpenCV人脸检测】写了个智能锁屏小工具!人离开电脑自动锁屏

文章目录 1. 写在前面2. 设计思路3. 人脸检测4. 程序实现 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…

MacOS Mojavev10.14.6

MacOS Mojave v10.14.6系统安装包是一款专为Mac用户设计的操作系统软件包。Mojave是苹果公司为Mac设备开发的一个操作系统版本,它提供了许多新功能和改进,旨在提高Mac用户的使用体验和工作效率。 安装MacOS Mojave v10.14.6系统后,用户可以享…

从0到1入门C++编程——07 基于多态的职工管理系统

文章目录 一、创建管理类及菜单功能实现二、创建职工抽象类三、退出管理程序四、增加职工信息五、读写文件操作六、显示职工信息七、删除职工信息八、修改职工信息九、查找职工信息十、对职工信息排序十一、清空文件内容十二、工程文件构成 本案例中利用C实现一个基于多态的职工…

flask_django_python五金电商网络营销的可视化分析研究

前面部分完成了系统需求分析,了解到新闻数据业务方面的需求,系统主要分为用户管理、五金信息管理、在线留言、系统管理等功能。销的可视化研究,并对这些数据进行处理, 然后对这些数据进行可视化分析和统计。 Python 爬虫技术目前来…

职言圈:华为4年员工,小金库存到100万,但却在事业上升期决定回老家县城考公务员。

“华为4年员工,小金库存到100万,但却在事业上升期决定回老家县城考公务员。只因不想现在赚的钱将来都花在了医院!” 互联网大厂员工的薪资高,这是人尽皆知的事了,特别是像华为、百度、绿厂、阿里、鹅厂等这些知名公司…

Leetcode的AC指南 —— 栈与队列 :1047.删除字符串中的所有相邻重复项

摘要: **Leetcode的AC指南 —— 栈与队列 :1047.删除字符串中的所有相邻重复项 **。题目介绍:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作&a…

CG-FS 风速传感器 485型三杯式风速计 气象环境监测仪器

产品概述 本产品主要采用优质聚合物碳纤维为原材料,具有良好的防腐、防侵蚀等特点,能够保证仪器长期使用不起锈,同时配合内部顺滑的轴承系统,确保了信息采集的准确性。外型小巧轻便,便于携带和组装,三杯设…

计划赶不上变化!项目团队如何高效管理变更请求?

现实中,即使是计划得再好的项目,有时也需要变更。作为项目经理,管理变更请求是重要的工作之一,以便团队能继续无缝工作,实现项目目标。 变更请求的重要性 变更请求是指修改系统、产品或项目计划的建议,通常…

计算机网络_1.6.1 常见的三种计算机网络体系结构

1.6.1 常见的三种计算机网络体系结构 1、OSI(七层协议)标准失败的原因2、TCP/IP参考模型3、三种网络体系结构对比 笔记来源: B站 《深入浅出计算机网络》课程 1、OSI(七层协议)标准失败的原因 (1&#xf…

利用ReentrantLock解决死锁----以哲学家问题为例

问题描述 哲学家问题:其中多个哲学家在共享有限资源(筷子)的情况下进行工作(思考和吃饭),这可能导致死锁。 每位哲学家需要两根筷子才能吃饭,而每根筷子只能被一位哲学家使用,这就…

Web项目利用OSS进行图像存储服务

一、OSS介绍 在Web项目中,一些常见的功能,比如展示图片,修改头像等,都需要进行图片的上传操作,但是如果是存储在Web服务器中,在读取图片的时候会占用比较多的资源,影响服务器的性能。 常…

学习c语言,动态内存管理

malloc和calloc区别在于初始化

迅为RK3588开发板windows与开发板互传使用U盘进行拷贝

1 将 U 盘(U 盘的格式必须为 FAT32 格式,大小在 32G 以下)插到开发板的 usb 接口,串口打印信息如下所示,U 盘的设备节点是/dev/sdb4。U 盘的设备节点不是固定的,根据实际情况来查看设备节点。 2 输入以下命令挂载 U 盘&#xff0c…