【机器学习】推荐系统

news2024/11/27 14:53:12

推荐系统的工作原理

推荐模型如何进行推荐将取决于您拥有的数据类型。如果您只拥有过去发生的交互数据,您可能有兴趣使用协作过滤。如果您有描述用户及其与之交互过的物品的数据(例如,用户的年龄、餐厅的菜系、电影的平均评价),您可以通过添加内容和上下文过滤,对当前给定这些属性下新交互的可能性进行建模。

推荐系统中最为主流与经典的技术之一是协同过滤技术(Collaborative Filtering),它是基于这样的假设:用户如果在过去对某些项目产生过兴趣,那么将来他很可能依然对其保持热忱。其中协同过滤技术又可根据是否采用了机器学习思想建模的不同划分为基于内存的协同过滤(Memory-based CF)基于模型的协同过滤技术(Model-based CF)。其中基于模型的协同过滤技术中尤为矩阵分解(Matrix Factorization)技术最为普遍和流行,因为它的可扩展性极好并且易于实现.

对于推荐系统来说存在两大场景即评分预测(rating prediction)与Top-N推荐(item recommendation,item ranking)

推荐系统类型

虽然有许多推荐算法和技术,但大多数都属于以下广泛类别:协作过滤、内容过滤上下文过滤。

  • 协作过滤算法根据许多用户的偏好信息(这是协作部分)推荐物品(这是过滤部分)。此方法使用用户偏好行为的相似性,并鉴于用户与物品之间的之前交互,推荐算法便可以学会预测未来交互。这些推荐系统基于用户过去的行为构建模型,例如之前购买的物品或给予这些物品的评分以及其他用户的类似决策。相关理念在于,如果有些人过去也做出过类似的决策和购买,比如电影选择,那么他们很有可能会同意未来的其他选择。例如,如果协作过滤推荐系统了解您和另一个用户在电影中有着相似的品味,它可能会向您推荐一部其了解的其他用户已经喜欢的电影。
  • 内容过滤使用物品的属性或特征(这是内容部分)来推荐类似于用户偏好的其他物品。此方法基于物品和用户特征的相似性,并鉴于用户及其与之交互过的物品的信息(例如,用户的年龄、餐厅的菜系、电影的平均评价),来模拟新互动的可能性。例如,如果内容过滤推荐系统了解到您喜欢电影《电子情书》和《西雅图夜未眠》,它可能会向您推荐另一部相同类别和/或演员阵容的电影,例如《跳火山的人》。
  • 上下文过滤包括推荐过程中用户的背景信息。Netflix 在 NVIDIA GTC 大会上提出,将推荐内容框定为上下文序列预测,以便作出更好的推荐。此方法使用一系列上下文用户操作和当前上下文来预测下一个操作的概率。在 Netflix 示例中,鉴于每位用户的序列(用户在观看电影时的国家/地区、设备、日期和时间),他们训练出一个模型,来预测用户接下来要观看的内容。

传统的方法: 矩阵分解法MF (matrix factorization)

1. 矩阵因子分解(MF)

推荐系统评分预测任务可看做是一个矩阵补全(Matrix Completion)的任务,即基于矩阵中已有的数据(observed data)来填补矩阵中没有产生过记录的元素(unobserved data)。推荐系统的评分预测场景可看做是一个矩阵补全的游戏,矩阵补全是推荐系统的任务,矩阵分解是其达到目的的手段。因此,矩阵分解是为了更好的完成矩阵补全任务(假设UI矩阵是低秩的)

例子

MF方法的局限性:
在低维的隐式空间中建模用户、项目的embedding,而且使用简单、不够灵活的内积的方式来估计复杂的用户-项目之间的关系(内积的方式是对用户、项目向量中元素的简单的线性组合)。虽然可以通过增加隐式空间的维度来提升推荐效果,但是在数据稀疏(Sparse)的情况下,会导致过拟合。

2. SVD奇异值分解

SVD分解的形式为3个矩阵相乘,左右两个矩阵分别表示用户/项目隐含因子矩阵,中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小。因此我们可以只需要前 k 个因子来表示它。

如果想运用SVD分解的话,有一个前提是要求矩阵是稠密的,即矩阵里的元素要非空,否则就不能运用SVD分解。很显然我们的任务还不能用SVD,所以一般的做法是先用均值或者其他统计学方法来填充矩阵,然后再运用SVD分解降维。 

3. FunkSVD算法(LFM)

SVD首先需要填充矩阵,然后再进行分解降维,同时由于需要求逆操作(复杂度O(n^3)),存在计算复杂度高的问题。那么我们能不能避开稀疏问题,同时只分解成两个矩阵呢?

这种简化的矩阵分解不再是分解为三个矩阵,而是分解为两个低秩的用户和物品矩阵,其实就是把用户和物品都映射到一个 k 维空间中,这个 k 维空间对应着 k 个隐因子,我们认为用户对物品的评分主要是由这些隐因子影响的,所以这些隐因子代表了用户和物品一部分共有的特征,在物品身上表现为属性特征,在用户身上表现为偏好特征。
FunkSVD采用了线性回归的思想将矩阵R分解为P和Q。我们的目标是让用户的评分和用矩阵乘积得到的评分残差尽可能的小,也就是说,可以用均方差作为损失函数,来寻找最终的P和Q。即通过 User-Item 评分信息来学习到的用户特征矩阵 P 和物品特征矩阵 Q通过重构的低维矩阵预测用户对物品的评分

协同过滤 Collaborative Filtering

使用用户历史的行为来做未来的推荐。忽略了关于用户或item的先验信息。

    CF使用与我相似的用户的评分来预测我的评分
    CF是领域无关的,不需要知道现在在对什么评分,谁在评分,评分是多少

一种CF方法称为基于邻域的方法。例如

    定义一个相似度评分,基于用户之间评分的重叠度
    基于相似度评分,使用邻域内的评分来为我喜欢的item打分

过滤方法并不是互斥的。内容信息可以被添加到协同过滤系统来提升性能。

协同过滤的主要缺点:

  • 协同过滤处理稀疏矩阵的能力较弱(共现矩阵稀疏,泛化能力弱)
  • 协同过滤中相似度矩阵维护难度大(维度高)

神经协作过滤 (NCF) Neural Collaborative Filtering

神经协作过滤 (NCF) 模型是一个神经网络,可基于用户和物品交互提供协作过滤。该模型从非线性角度处理矩阵分解。NCF TensorFlow 以一系列(用户 ID、物品 ID)对作为输入,然后分别将其输入到矩阵分解(MF)步骤(其中嵌入成倍增加)并输入到多层感知器 (MLP) 网络中。

然后,将矩阵分解和 MLP 网络的输出将组合到一个密集层中,以预测输入用户是否可能与输入物品交互。

DIEN模型(Deep Interest Evolution Network)

DIEN 整体架构

References

推荐系统之矩阵分解家族 - 知乎

协同过滤的进化--矩阵分解算法(MF)_【敛芳尊】的博客-CSDN博客_协同过滤mf

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

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

相关文章

Windows线程 信号量 CreateSemaphore创建信号量、RelaseSemaphore设置信号量

信号量 相关问题 类似于事件(作用类似),解决通知的相关问题。但提供一个计数器,可以设置次数。 信号量的使用 1.创建信号量 HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,//参数作废,基本用N…

临近期末,这些题不来看看吗?(下)

目录 1、打印1~100之间所有3的倍数(三种方法) 2、写出3给整数从大到小输出 3、给定两个数,求这两个数的最大公约数 4、 递归实现n的k次方 5、写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和 6、编写一个…

二叉树模板套题——相同的树的应用

文章目录力扣100. 相同的树递归展开图力扣572. 另一棵树的子树递归展开图力扣101. 对称二叉树递归展开图力扣100. 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值&#xf…

四、nginx正向代理

一、正向代理 解释:正向代理指的是客户端通过访问目标服务端,再由目标服务端来转发流量访问互联网 结构图如下: 好处:这样做的好处是,当客户端通过服务端访问互联网某个网站时,该网站获得的IP地址是服务…

STEAM上的一款电路模拟神器 — CRUMB Circuit Simulator

摘要:这几天在逛steam商店时,发现了一款有意思的电路仿真软件CRUMB Circuit Simulator(CRUMB电路模拟器),觉得挺有意思的,就下载了玩了一下。 这款模拟电路软件的东西不多,基础的元器件都有&…

关于赚钱这件事,必须做到「金钱场」、「认知场」和「人脉场」三场统一

每周末,我会将我付费星球内的精华文章,在每周六或周日以付费文章的方式在公众号分享给大家,如果你不想加入我的星球,还想看的话,可以在这里付费看。当然,加入星球会更划算,因为星球内内容更多&a…

ArcGIS基础:如何在大量数据里挑选随机样本(创建随机点工具)

【创建随机点】工具位于【采样】工具下,如下所示: 假如我们有一个需求,要在很多数据里随机选择10个数据,就可以使用该工具。 假如我这里有全国的县级数据,我想要在里面随机抽选10个县城。 原始数据如下: …

IPSec 基础介绍

IPSec是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,包括认证头AH(Authentication Header)和封装安全载…

【JavaScript高级】05-JavaScript中with、eval语句及严格模式的使用

with、eval及严格模式的使用with语句的使用(了解)eval函数严格模式了解严格模式开启严格模式严格模式的限制with语句的使用(了解) with语句的作用是将代码的作用域设置到一个特定的对象中。目的主要是为了简化多次编写同一个对象…

【学习笔记50】ES6的新增属性1

一、ES6 * ES6 * 其实就是JS发展过程中的某一个版本而已, 那个版本的版本号叫做ES6* JS* 在最初的时候, 是只有var关键可以声明变量* 随着版本的更新, 在某一个版本内推出了新的变量声明方式* * JS的更新* 在推出ES6的时候, 这个版本推出的新东西比较多…

[附源码]Python计算机毕业设计高校教材网上征订系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

SQL关键字详解

当前市场中,数据库在互联网整个技术链中的重要性是亘古不变的,站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互,而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言,甚至有…

临近期末,这些题不来看看吗?(上)

目录 1、在屏幕上输入9*9乘法表 2、输入一个值,打印对应的乘法口诀表 3、求十个整数的最大值 4、分数求和:计算1/1 - 1/2 1/3 - 1/4 1/5 ... 1/99 - 1/100(3种方法) 5、编写程序数一下,1到100的所有整数中出现多…

ggrcs 包2.4绘图实际操作演示(1)

ggrcs 包2.4版本已经发布一段时间了,大概几个月了吧,收到不少好评, 没听说太大的问题,最主要的问题有两个: 1.是说变量不是数字变量。 2.是说数据超过10万,无法处理 第一个问题非常好处理,这…

【精品】k8s的存储PV与PVC详解

概述 PV(Persistent Volume)一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。 PVC(Persistent Volume Claim)是用户对于存储需求的一种声明。换句话说,PVC其实就是用户向kubernetes系统发出的一种资源需…

vscode开发maven的javaweb项目,并部署到tomcat及配置

1、安装并配置JAVA环境 我的是用的jdk1.8.0_181(安装自行解决,直接可以下载免安装配置环境) 配置JAVA_HOME,设置路径为C:\Program Files\Java\jdk1.8.0_181, 添加bin到path环境变量: 2、安装Maven 1)官网…

垃圾分类小程序系统毕业设计,垃圾分类小程序系统设计与实现,垃圾分类系统毕设参考

功能清单 【管理员功能】 会员管理:查看网站所有注册会员信息,支持删除 资讯录入:录入资讯标题、时间、资讯内容等 管理资讯:查看现有资讯列表,支持修改和删除功能 留言管理:查看小程序留言列表&#xff0…

Azide PEG2 Pyrene|2135330-58-2|Pyrene标记的PEG连接物

Pyrene-PEG2-azide是一种含有叠氮化物基团的Pyrene标记的PEG连接物,它可以用任何含炔分子进行点击化学标记,从而将任何分子转化为含Pyrene的探针。亲水性PEG连接剂可以增加水溶液中生物分子的溶解度并促进其附着。 西安凯新生物科技有限公司azide系列产品…

Python人工智能学习路线(万字长文)

前言 随着全球市场的饱和,以及模式创新的用尽,传统的互联网产业已经进入成熟阶段,不会再有突飞猛进的发展。 (文末送读者福利) 接下来,是人工智能和大数据展露锋芒的时候了,它们在未来 10 年…

欧拉公式-上帝创造的公式

欧拉公式: (1)分式里的欧拉公式:   a^r/(a-b)(a-c)b^r/(b-c)(b-a)c^r/(c-a)(c-b)   当r0,1时式子的值为0   当r2时值为1   当r3时值为abc   (2)复变函数论里的…