13.推荐系统

news2024/12/26 22:04:15

例如一个电影推荐系统,一共有n个用户,m个电影,每部电影都有一定的特征,例如爱情片的比例、动作片的比例。n个用户对看过的电影进行评分,推荐系统如何给用户推荐新电影,预测用户对新电影的评分?

预测一个给电影打分的系统。

先介绍一些符号:

  • n_u:表示用户数量
  • n_m:表示电影数量
  • r(i,j):代表用户j给电影i进行了评价
  • y^{(i.j)}:表示用户j对电影i所给出的评分

则推荐系统的问题是:给出了r(i,j)y^{(i.j)}数据,然后去查找那些没有被评级的电影并试图预测这些电影的评价星级。

13.1 内容推荐算法

可以使用线性回归的方法进行训练,得到用户对于特征的参数\theta,之后就可以根据\theta^T对电影进行打分。

  • r(i,j):代表用户j给电影i进行了评价
  • y^{(i.j)}:表示用户j对电影i所给出的评分
  • \theta^{(j)}:是每个用户x^{(i)}的一个参数
  • x^{(i)}:是特定电影的一个特征向量
  • m^{(j)}:评价了电影j的用户数量

优化目标函数是:

内容推荐算法:因为假设变量是已有的,即不同电影的各个特征,我们有描述电影内容的特征量,这个电影的爱情程度怎样、动作成分有多少,同时我们用了这些描述电影内容特征量来做出预测。但对于许多电影来说,我们并没有这样的特征量或者很难获取所有电影的此类特征或者其他我们销售的东西。

13.2 协同过滤

协同过滤算法能自行学习所要使用的特征。

我们无法得到每部电影中不同特征的比例,例如电影中爱情和动作的比例?除非人工审核每一部电影,但是太耗时。这里有一个思路,首先用户根据自己的喜好对特征打分,通过计算可以大致确定已经打过分的电影它的特征值,根据已经确定的特征值,又可以计算出每个用户对这部电影的评分。

 假设我们的用户告诉了我们的偏好,也就是说用户们给了我们\theta^{(1)}...\theta^{(n_{u})}的值,而我们想要学习的电影i的特征向量x^{(i)},能做的就是提出以下优化问题:

先有鸡还是先有蛋…

根据特征向量x^{(i)}可以以通过线性回归得到用户的\theta向量,通过用户提供的\theta向量可以估计每部电影的特征数值。这就有点像鸡和蛋的问题。我们可以随机选取x^{(i)}向量计算得到特征数值,然后再通过线性回归去更新\theta,这样不停的迭代直到最后的收敛。

如果你有了电影的特征,就可以解出这个最小化问题找到用户参数\theta;如果你拥有参数\theta,也可以用该参数估计特征x。我们也可以将两种函数合并为一个目标函数:

  1. 首先我们会把x\theta初始为小的随机值,这里有点像神经网络训练
  2. 要用梯度下降或者其他高级的优化算法把这个代价函数最小化,如果求导的话,会发现梯度下降法写出的更新式如下图第二点所示
  3. 最后给你一个用户,如果这个用户有一些参数\theta以及给你一部电影带有已知的特征x,我们可以预测该用户给这部电影的评分\theta^Tx

13.3 矢量化-低秩矩阵分解

可以把n个用户对m部电影的评分结果表示为m\times n的矩阵

这个矩阵可以表示为X\theta^T

“低秩矩阵”表示,行、列都具有相关性。通俗来讲,就是可以用一部分的行、列来表示另一部分行、列。

通过特征值之间的偏差,我们可以找到类型相近的电影。

13.4 均值规范化

之前无论是参数\theta特征x,都基于每个用户都对多个电影进行的评分,每部电影也被多个用户评分。对于新用户,他可能还没有对任何一部电影进行评分,一种思路就是把所有用户对每部电影的评分的均值作为新用户的初始评分。

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

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

相关文章

三、IK分词器

目录 1、IK分词器下载 2、下载完毕后解压,放入到elasticsearch的plugins下即可 3、重启elasticsearch,可以看到ik分词器被加载了 4、也可以通过elasticsearch-plugin这个命令来查看加载进来的插件 5、使用kibana测试ik分词器 6、扩展配置ik分词器词典…

linux下安装rabbitmq及踩坑总结

下载erlang mq 下载地址 https://github.com/rabbitmq/erlang-rpm/releases?page7 https://github.com/rabbitmq/rabbitmq-server/tags?afterv3.8.12-beta.1 版本对应 1.官网地址 https://www.rabbitmq.com/download.html ** 2.文件上传 上传到/usr/local/software 目录…

STC15 Proteus仿真DHT11环境湿度采集报警系统STC15W4K32S4-0043

STC15 Proteus仿真DHT11环境湿度采集报警系统STC15W4K32S4-0043 Proteus仿真小实验: STM32 Proteus仿真DHT11环境湿度采集报警系统STC15W4K32S4-0043 功能: Protues版本:8.9 硬件组成:STC15W4K32S4单片机 LCD1602显示器DHT11…

UG\NX 二次开发 获取实体面的面积,测量面积

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取实体面的面积 UF_MODL_ask_mass_props_3d 效果: 代码: #include "me.hpp" //测量面积 double GetFaceArea(tag_t face) {// 抽取片体tag_t solid = NULL_TAG;UF_MODL_extract_face…

前端架构是什么?

文章目录 什么是前端架构前端架构的好处什么项目用前端架构必须要用前端架构嘛? 什么是前端架构 前端架构是指在前端开发中,设计和组织应用程序的基本结构和组件之间的关系的方法和原则。它涉及到如何组织代码、管理数据、处理业务逻辑以及实现用户界面…

基于matlab各种天线阵列几何形状进行建模和可视化(附源码)

一、前言 本示例说明如何使用相控阵系统工具箱对各种天线阵列几何形状进行建模和可视化。这些几何形状还可用于对其他类型的阵列进行建模,例如水听器阵列和麦克风阵列。您可以查看每个绘图的代码,并在您自己的项目中使用它。 二、线性阵列 线性天线阵列在…

【C数据结构】栈_Stack

目录 栈_Stack 【1】栈的概念及结构 【2】栈的实现 【1.1】栈数据结构的接口 【1.2】栈的初始化 【1.3】栈的释放 【1.4】入栈 【1.5】出栈 【1.6】获取栈顶数据 【1.8】获取栈中的有效元素个数 【1.9】检测栈是否为空 栈_Stack 【1】栈的概念及结构 栈&#xff1…

程序员自学能找到工作吗?

程序员是一个非常热门的职业,很多人都想成为一名优秀的程序员。但是,要成为一名程序员,需要学习哪些知识和技能呢?是否一定要上大学或者参加培训班才能学习编程呢?自学编程是否可行呢?自学编程的人能否找到…

山东泰安电力学校,华为ensp考试

文章目录 一、考试要求二、作者的拓扑图,作者的x27,y5三、每个设备的代码(可直接复制粘贴运行,端口和连线要一样)SW1SW2R0R1R2 四、每个部分的有运行截图SW1SW2R0R1R2 五、运行成功截图 一、考试要求 考试初始化文件下…

马克思期末复习 第一章

目录 第一节 1.物质和意识 2.主观能动性和客观规律 3.运动与静止 第二节 第一节 1.物质和意识 总括:物质决定意识,任何事情都要从实际出发,实事求是 意识的能动作用: 1.意识反作用于物质,好的意识推动物质发展&am…

AI Chat 设计模式:3. 原型模式

本文是该系列的第三篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的旁白。 问题列表 Q.1 今天我们聊一下原型模式吧A.1Q.2 那写一个实现了深拷贝的例子A.2Q.3 你这里为什么要对构造函数进…

【敬伟ps教程】图层进阶知识

文章目录 图层过滤和锁定图层链接图层编组图层合并图层盖印图层复合图层剪贴蒙版 图层过滤和锁定 图层过滤可以根据图层不同的性质进行查看管理 图层锁定即是对图层或图层某部分进行操作保护 按钮分别为: 锁定透明像素:禁止对透明区域进行操作 锁…

写给刚进互联网圈子的人,不管你是开发,测试,产品,运维都适用

1、技术没那么值钱,真正值钱的是技术背后的商业模式,更好地满足市场需求才是重点。 所以不要排斥技术以外的东西,我们要做的,是以技术进入这个行业立足,然后找到适合自己的定位,深耕下去,把自己…

Alibaba Sentinel | 流控规则设置

文章目录 一、Sentinel概述强大的优势:组成部分: 二、微服务集成Sentinel版本说明安装Sentinel控制台:1、docke安装2、jar安装启动控制台 微服务集成Sentinel:查看控制台监控数据 三、流控规则详解流量控制概述什么是流控规则原理…

接口自动化测试中的用例编写问题总结

目录 01sql语句内容出现错误 02sql语句格式错误 03断言返回数据的类型 04业务逻辑覆盖判断 05一些具体业务需求需要封装api 总结: 本篇文章分享几个接口自动化用例编写过程遇到的问题总结,希望能对初次探索接口自动化测试的小伙伴们解决问题上提供一…

程序员需要达到什么水平才能不被性别歧视?顺利拿到 20k 无压力?

被歧视,不存在? 我是女生,大三,却没人这样对我,因为我从来都是队长!谁敢砍我代码他试试!我就把他砍掉!而且,我写的代码他们很少能看懂,因为我一般都写算法或者一个项目里比较难的部分&#xff…

网络管理与维护(一)

这里写自定义目录标题 管理站网络管理系统组成代理网络管理协议管理信息库 网络管理的功能故障管理配置管理计费管理性能管理安全管理 总结 管理站 网络管理系统组成 代理 代理(Agent)位于被管理对象中,被管理对象可以是计算机、网络设备&a…

【云原生】云原生架构

文章目录 背景一、云原生二、云原生简介三、三大技术基石3.1、基础设施即代码3.2、不可变基础设施3.3、声明式API 四、云原生的优点4.1、加速软件开发周期4.2、更快的上市时间4.3、高可用性与弹性4.4、更低的成本4.5、将应用程序转变为API 五、云原生架构模式特点详解5.1、现收…

SQL数据库防挂科

注:本篇文章的图片等内容来自B站UP主:编程张无忌 一、绪论 二、关系数据库 三、SQL上 1、模式的定义和删除 单纯定义一个模式: create schema "S-T" authorizationg WANG 定义模式 表/视图/授权 任意一个来描述(创建一个tab…

22JS13——简单类型与复杂类型

文章目录 一、简单类型与复杂类型二、堆和栈三、简单类型的内存分配四、复杂类型的内存分配五、简单类型传参六、复杂类型传参 目标: 1、简单类型与复杂类型 2、堆和栈 3、简单类型的内存分配 4、复杂类型的内存分配 5、简单类型传参 6、复杂类型传参 一、简单类型与…