导航:首页 > 净水问答 > 协同过滤和内容运力

协同过滤和内容运力

发布时间:2023-04-14 03:35:59

Ⅰ 浅谈内容个性化推荐步骤

现在我们正在处于一个信息爆炸的时代,每天会产生千万量级的信息。但每天的时间也没有变成24+1个小时,加上碎片化时间的消费,让内容能够精准投放是至关重要的。2017年也可以说是人工智能的爆发之年,各个公司也都开始有了人工智能实验室,共同探索属于未来的事情。不管是智能音响还是语音助手,大家的目的都是为了通过了解用户的偏好和兴趣等。帮助用户省下时间,来做更多的事情,像是有一个更懂自己的贴身秘书,可以帮助自己做完筛选的准备工作。

从之前的web1.0时代到3.0时代,给用户推送准确的内容都是重点。根据资料及个人理解整理归纳推荐内容可以分为世禅三个步骤:初步建立用户画像、根据策略推荐内容、合理高效的方式展现。

在一个新用户进入APP后,处于冷启动阶段,通过获得用户的基础信息进行用户模型初步建立,如性别、年龄、职业、城市、喜好类型等等,用户属性数据。获取的步骤称之为新手引导,通过给用户进行首次标记,进行初步内容推荐,降低冷启动时推荐内容的无关性。

这一步,大概了解用户喜欢什么,距离准确的推送给用户需要的内容,只是迈出了第一步。举个例子,在给用户推荐手机的时候,有惊艳的亮蓝色、也有稳重的亮黑色,用户可能会说,蓝色真的是太好看了。但是,在最后带走的却是一步黑色的手机。所以用户在最终行为动作前,所产生的行为具有一定的偏差性。放在内容筛选上来说,以音乐APP为例,当用户选择90后、男生、国语的属性后,推送的内容在实际使用场景中,不一定能达到预期效果。

此时,需要进行第二步,根据用户行为数据不断完善用户模型。包括不限于用户使用APP过程中前端埋点数据、后端日志数据、行为偏好等。

通过这两步,就能大体上刻画出用户画像,但是用户画像具有很强的动态性,所以用户画像也需要不断学习,不断的完善,具体刻画用户画像的步骤可查看用户画像构建相关资料。

给不同的用户推荐不同内容的策略常用的有多种方式,在不同的产品类型中,应用的组合方式也有差异,下面介绍几种常见的推荐方法。

基于人口统计学的推荐(Demographic-based Recommendation)是一种实现成本较低的推荐方法,根据用户属性的基本信息发现用户之间的相似程度,然后将相似用户喜爱的内容进行推荐。

在这个过程中,根据每个用户自己的用户属性,系统建立每个用户的模型。然后根据用户属性计算相似度。若看到用户A的和用户C相似,那么会认为用户A和C是相似用户,可以称他们是“邻居”;最后,基于“邻居”用户群的喜好推荐给当前用户对应的内容。

优点:因无需使用用户的喜好历史数据,可以解决新用户来“冷启动”的问题。这个方法不依赖于项目本身的数据,所以这个方法在不同项目的领域都可以使用,它是领域独立的。

缺点:基于用户属性信息对用户进行分类的方法过于粗糙,尤其在对于更为垂直的的领域,比如图书,电影和音乐等,无法得到很好的推荐效果。在首批用户进行推荐时,对内容项目进行分类的基础数据,都是依靠运营进行人为划分,在精度方面存在较大影响。另外,在涉及到过于敏感或隐私的内容信息,获取成本比较高,旦碰就会导致低于用户期望值。

基于内容的推荐(Content-based Recommendation),核心思想是根据内容的元数据,建立关键词或Tag等标记,并根据其相关性建立对应关系。在内容分发过程中,再利用用户画像中的属性,进行匹配推荐。这个方法虽过于主观性,但可以很好的在内容层面建模用户的偏好,不会出现喜欢摇滚的用户,被推荐民谣。此推荐方法多用于一些资讯内容类的应用上。

优点:易于实现,不需要用户属性数据,减少冷启动的问题。根据内容的相关度匹配,维度单一,不会出现热门过热,冷门无人的情况。

缺点:人为分类进行标注,在推荐搜迟尘的精度及广度方面难免有缺陷,导致推荐的内容不够准确;

系统抽取的特征标注,需要保证准确性又要具有一定的实际意义,都则推荐结果相关性会降低。

协同过滤(Collaborative Filtering-based Recommendation)是一种在推荐系统中广泛采用的推荐方法,被视为利用集体智慧的典范,是基于“物以类聚,人以群分”的假设。主要包括三个推荐维度,基于用户的推荐、基于项目的推荐和基于模型的推荐。

基于用户的协同过滤推荐的基本原理是,根据所有用户对内容的偏好,发现与当前用户偏好相似的“邻居”用户群,基于这些邻居的的历史偏好信息,为当前用户进行推荐。

优点:推荐内容可能完全不相关,因此可以发现用户的潜在兴趣,并且针对每个用户生成其个性化的推荐结果。

缺点:用户的增长速度都远大于项目的增长速度,因此其计算量的增长巨大,系统性能容易成为瓶颈,一般基于用户的协同过滤系统与其他机制配合使用。

基于用户的协同过滤推荐和基于人口统计学的推荐对比:

相同点:都是计算用户的相似度,并基于“邻居”用户群计算推荐;

不同点:基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似项目的用户可能有相同或者相似的口味和偏好。

基于项目的协同过滤和基于用户的协同过滤相似,其使用的是所有用户对项目的偏好信息,发现Item之间的相似度,然后根据用户的历史偏好信息,将Item推荐给用户。

基于项目的协同过滤推荐和基于内容的推荐对比:

相同点:都是基于项目相似度预测推荐,只是相似度计算的方法不一样;

不同点:前者是从用户历史的偏好推断,而后者是基于项目本身的属性特征信息。

在基于用户和基于项目两个协同过滤策略中应如何选择?

同基于用户的推荐相比,基于项目的推荐应用更为广泛,扩展性和算法性能更好。由于项目的增长速度一般较为平缓,因此性能变化不大。缺点就是无法提供个性化的推荐结果。在用户数与项目数的比例不同时,选择的主要推荐方式不同。项目数>用户数,优先采用基于用户协同过滤;项目数<用户数,优先采用项目协同过滤。

项目的个数是远远小于用户的数量的,而且项目的个数和相似度相对比较稳定;同时基于项目的机制比基于用户的实时性更好。但也不是所有的场景都是这样的情况,在一些新闻推荐系统中,也许项目,也就是新闻的个数可能大于用户的个数,而且新闻的更新程度也有很快,所以它的相似度依然不稳定。所以,推荐策略的选择其实也和具体的应用场景有很大的关系。

因为基于协同过滤的推荐机制不需要对项目或用户进行严格的建模,直接对比项目之间的相似度,不要求机器可理解项目描述。这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。因此,也是现在应用广泛的推荐机制。

不足之处在于核心是基于历史数据,所以对新项目和新用户都有“冷启动”的问题;推荐的准确性,依赖于用户历史偏好数据与用户总数的量级;

基于关联规则的推荐更常见于电商中,并且转换率较高。其实际的意义为购买了一些产品的用户更倾向于购买另一些产品。基于关联规则的推荐的首要目标是挖掘出不同产品之间的关联规则,也就是同时被很多用户购买的产品组合集,这些集合内的产品可以相互进行推荐。

在计算出用户可能喜欢的内容的时候,用什么样的方式展现给用户,从而进一步提升用户体验,提高推荐内容的二次消费,就是第三步需要做的事情。

在众多APP中,每一个都有多个页面,每个页面里面有多种多样的推荐位置。根据产品的功能定位、用户的操作习惯、用户行为的相关程度等维度进行筛选。将适合的内容放在更适合的位置,并根据用户的使用行为不断的完善用户画像,调整投放策略,才能让用户使用效率得到保障。

在刚过去的双十一中,我们每个人的天猫APPbanner图可能都是完全不一样的。因为只需要输入主题类型,阿里的人工智能设计系统“鲁班”就会生成上万张不同的素材,根据主题和消费者特征进行个性化呈现,真正的实现了千人千面。这也让资源位点击率翻了一倍多。

推荐方法有很多种,不同的推荐机制适用的场景都会有所差异,在推荐准确性方面也会有差距。因此一般情况下在搭建推荐系统的时候,不会单纯的采用某一种推荐机制,常常将各种方法混合在一起,互相弥补短板,从而达到更好的推荐效果。

在知道了给用户推荐什么样的内容后,随着时间的增长,符合用户偏好的的内容会越来越多,这些内容需要结合时间维度、内容热度等更多的自然维度进行筛选排序,再投放在合适的位置,才能让让用户无感知的情况下帮助用户解决问题。

在信息十分庞大的现在,人工智能的发展也已开始爆发,更先进的方案需要不断的学习和探索。相信在未来的时候,每一个手机ROM就是一个大的APP,在一定程度上可以开放共赢,手机上任何一个软件中使用的信息都可以共享,成为帮助用户的数据,共同让手机变成一个真正的移动助手。

Ⅱ 推荐系统论文阅读(二十三)-神经图协同过滤NGCF

论文:

论文题目:《Neural Graph Collaborative Filtering》

论文地址: https://arxiv.org/pdf/1905.08108.pdf

本论文是关于图结构的协同过滤算法,在原始的矩阵分解和基于深度学习的方法中,通常是通过映射描述用户(或物品)的现有特征(例如ID和属性)来获得用户(或物品)的嵌入。从而利用user和item的embedding进行协同召回。但是作者认为这种方法的固有缺点是:在user与item的interaction数据中潜伏的 协作信号(collaborative signal) 未在嵌入过程中进行编码。这样,所得的嵌入可能不足以捕获协同过滤效果。

让我们一起来看一下本论文是怎么利用数据中潜伏的协作信号的吧。

推荐算法被广泛的运用在各个领域中,在电商领域,社交媒体,广告等领域都发挥着至关重要的作用。推荐系统的核心内容就是根据用户以前的购买和点击行为来评估用户对一个物品的喜爱程度,从而针对每个用户进行个性化推荐。协同过滤算法认为历史行为相似的用户之间的兴趣是相同的,所以给用户推荐的是同类型用户的爱好,也就是UserCF,而ItemCF给用户推荐的是跟历史行为相近的物品。

传统的协同过滤方法要么是基于矩阵分解,要么是基于深度学习的,这两种方法都忽略了一个非常关键的信息---user和item交互的协作信号,该信号隐藏在user和item的交互过程中。原始的协同过滤方法忽略了这种信息,所以在进行user 和 item representation时就不足以较好的进行embedding。

本论文通过将用户项交互(更具体地说是二分图结构)集成到embedding过程中,开发了一个新的推荐框架神经图协同过滤(NGCF),该框架通过在其上传播embedding来利用user-item图结构。这种方法在用户项目图中进行高阶连通性的表达建模,从而以显式方式将协作信号有效地注入到embedding过程中。

在介绍模型之前先来讲解一下什么是useritem interaction以及什么是高阶的useritem interaction。

我们先看左边的图,这个图就是useritem interaction,u1是我们待推荐的用户,用双圆圈表示,他交互过的物品有i1,i2,i3。在看右边这个树形结构的图,这个图是u1的高阶interaction图,注意只有l > 1的才是u1的高阶连接。观察到,这么一条路径,u1 ← i2 ← u2,指示u1和u2之间的行为相似性,因为两个用户都已与i2进行了交互。而另一条更长的路径,u1←i2←u2←i4暗示u1可能会点击i4,因为他的相似用户u2之前已经购买过i4。另一方面,用户u1在l = 3这一层会更倾向于i4而不是i5,理由是i4到u1有两条路径而i5只有一条。

当然这种树结构是不可能通过构建真正的树节点来表示的,因为树模型比较复杂,而且结构很大,没法对每个用户构建一个树,这样工作量太大了。那么怎么设计模型结构可以达到跟这个high-order connectivity的效果呢,这个就要运用到神经网络了。通过设计一个embedding propagation layer来表示这种embedding 在每个层之间的传递。

还是拿上面那张图举例子,堆叠两层可捕获u1←i2←u2的行为相似性,堆叠三层可捕获u1←i2←u2←i4的潜在推荐以及信息流的强度(由层之间的可训练权重来评估),并确定i4和i5的推荐优先级。

这个跟传统的embedding是一样的,都是对原始的userID和itemID做embedding,跟传统embedding不同的地方是,在我们的NGCF框架中,我们通过在用户-项目交互图上传播embedding来优化embedding。 由于embedding优化步骤将协作信号显式注入到embedding中,因此可以为推荐提供更有效的embedding。

这一层是本文的核心内容,下面我们来进行详细的解读。

从直观上来看,用户交互过的item会给用户的偏好带来最直接的依据。类似地,交互过某个item的用户可以视为该item的特征,并可以用来衡量两个item的协同相似性。 我们以此为基础在连接的用户和项目之间执行embedding propogation,并通过两个主要操作来制定流程:消息构建和消息聚合。

Message Construction(消息构建)

对于连接的user-item对(u,i),我们定义从i到u的消息为:

其中ei是i的embedding,eu是u的embedding,pui是用于控制每次传播的衰减因子,函数f是消息构建函数,f的定义为:

其中W1和W2用来提取有用的embedding信息,可以看到W2控制的i和u直接的交互性,这使得消息取决于ei和eu之间的亲和力,比如,传递更多来自相似项的消息。

另一个重要的地方是Nu和Ni,pui = 1/ 。Nu和Ni表示用户u和item i的第一跳邻居。 从表示学习的角度来看,pui反映了历史item对用户偏好的贡献程度。 从消息传递的角度来看,考虑到正在传播的消息应随路径长度衰减,因此pui可以解释为折扣因子。

Message Aggregation

聚合方法如下 :

其中 表示在第一嵌入传播层之后获得的用户u的表示。激活函数采用的是leakyrelu,这个函数适合对pos和neg信号进行编码。

另一个重要的信息是 ,它的定义如下:

这个信息的主要作用是保留原始的特征信息。

至此,我们得到了 ,同样的方法,我们也能获得 ,这个都是first order connectivoty的信息。

根据前面的计算方式,我们如果将多个Embedding Propagation Layers进行堆叠,我们就可以得到high order connectivity信息了:

计算方式如下:

当我看到这里的时候,我的脑子里产生了一个大大的疑惑,我们在计算第l层的eu和ei时都需要第l-1层的信息,那么我们怎么知道ei和eu在第l层是否存在呢?也就是说出现u侧的总层数l大于i侧总层数的时候,我们如何根据第l-1层的ei来计算第l层的e呢?经过思考,我感觉应该是这样的,训练样本应该是一条path,也就是这个例子是u1 ← i2 ← u2 ← i4这条path,所以可以保证u1跟i4的层数l是一样的,所以不存在上面那个层数不匹配的问题。

ps:看到后面的实验结果才知道L是固定的所以每一层都不会缺失。

还有一个就是,不同层之间的W是不一样的,每一层都有着自己的参数,这个看公式就知道,理由就是我们在提取不同层信息的时候需要不同的W进行信息提取。

另一个疑惑是pui到底是不是每一个l层都一样?这里看公式好像就是指的是第一跳的Nu和Ni进行就计算的结果。

这部分内容是为了在进行batch训练的时候进行矩阵运算所推导的数学过程,其实跟之前我们讲的那个过程在数学上的计算是完全一样的,你想象一下,如果不用矩阵进行运算,在训练过程中要如何进行这么复杂的交互运算。

当进行了l层的embedding propagation后,我们就拥有了l个eu和l个ei,我们将他们进行concate操作:

这样,我们不仅可以通过嵌入传播层丰富初始嵌入,还可以通过调整L来控制传播范围。

最后,我们进行内积计算,以评估用户对目标商品的偏好:

采用的是pair-wise方式中的bpr loss:

Ⅲ Neo4j 做推荐 (10)—— 协同过滤(皮尔逊相似性)

皮尔逊相似性或皮尔逊相关性是我们可以使用的另一种相似度量。这特别适合产品推荐,因为它考虑到 不同用户将具有不同的平均评分 这一事实:平均而言,一些用户倾向于给出比其他用户更高的评分。由于皮尔逊相似性考虑了 均值的差异 ,因此该指标将解释这些差异。

根据皮尔逊的相似度,找到与Cynthia Freeman最相似的用户

MATCH (u1:User {name:"Cynthia Freeman"})-[r:RATED]->(m:Movie)

WITH u1, avg(r.rating) AS u1_mean

MATCH (u1)-[r1:RATED]->(m:Movie)<-[r2:RATED]-(u2)

WITH u1, u1_mean, u2, COLLECT({r1: r1, r2: r2}) AS ratings WHERE size(ratings) > 10

MATCH (u2)-[r:RATED]->(m:Movie)

WITH u1, u1_mean, u2, avg(r.rating) AS u2_mean, ratings

UNWIND ratings AS r

WITH sum( (r.r1.rating-u1_mean) * (r.r2.rating-u2_mean) ) AS nom,

sqrt( sum( (r.r1.rating - u1_mean)^2) * sum( (r.r2.rating - u2_mean) ^2)) AS denom,

u1, u2 WHERE denom <> 0

RETURN u1.name, u2.name, nom/denom AS pearson

ORDER BY pearson DESC LIMIT 100

Neo4j 做推荐 (1)—— 基础数据

Neo4j 做推荐 (2)—— 基于内容的过滤

Neo4j 做推荐 (3)—— 协同过滤

Neo4j 做推荐 (4)—— 基于内容的过滤(续)

Neo4j 做推荐 (5)—— 基于类型的个性化建议

Neo4j 做推荐 (6)—— 加权内容算法

Neo4j 做推荐 (7)—— 基于内容的相似度量标准

Neo4j 做推荐 (8)—— 协同过滤(利用电影评级)

Neo4j 做推荐 (9)—— 协同过滤(人群的智慧)

Neo4j 做推荐 (10)—— 协同过滤(皮尔逊相似性)

Neo4j 做推荐 (11)—— 协同过滤(余弦相似度)

Neo4j 做推荐 (12)—— 协同过滤(基于邻域的推荐)

Ⅳ 协同过滤与分类

[TOC]

本文是《写给程序员的数据挖掘实践指南》的一周性笔记总结。主要涵盖了以下内容:

所谓推荐系统就是系统根据你的行为操作为你推荐你可能想要的其他物品。这在电商平台、音乐平台、资讯推送平台等多有见到。而协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息。其推荐基础是用户评分。这里可以分为两种用户评分,即显式评分与隐式评分。显式评分即日常见到的为物品打分,如对喜好音乐评级等;隐式评分是通过对用户行为的持续性观察,进而发现用户偏好的一种方法,如新闻网页中的推送你经常阅读过的相关内容等。两种评分方法都有自己的问题。

总体来说,协同过滤其运作机制也可以分为两种:

基于用户的推荐是指通过用户的行为偏好,划分相似用户。在相似用户群体之间互相推送一方喜欢而另一方未有过的物品。核心在于相似用户群体的划分。这种推荐方法有自己的局限:

基于用户的过滤其核心是用户群体的划分,其实也就是分类。

这里的距离函数包括三种:曼哈顿距离和欧氏距离。这里以二维举例,更多维情况下类推即可。

两距离函数可以一般化为:

其中,当r=1时,函数为曼哈顿距离;当r=2时,函数为欧氏距离。

算法实现:

在算出距离函数后,通过比对目标用户与所有用户群体的偏好,找到最近邻的用户并给予推荐。

基于用户距离的推荐有一个明显的问题,就是用户评分体系的差异。比如评分极端的用户给喜欢的评最高分,给不喜欢的评最低分;而有些用户倾向于不出现极端评分。即所谓“分数贬值”( Grade Inflation )问题。这种问题的存在可能让基于距离的评分产生偏差。皮尔逊相关系数可以缓解这种问题。

原皮尔逊相关系数公式在实际运用的时候会出现多次迭代的问题,影响计算效率,这里给出了近似公式:

皮尔逊相关系数的用户判断依据不是单纯的用户距离,而是用户的评分一致性:取值在[-1, 1]之间,越接近1则表示两用户的评分一致性越好;反之则反。
python实现:

基于用户推荐的过程中,另一个存在的问题就是由于大部分人的喜爱物品集合的交集过少,存在大量计算值为0的feature的情况。即所谓 稀疏性 问题。一个较容易理解的例子是对书本内容的挖掘。余弦相似度会忽略这种0-0匹配。
余弦相似度:

python实现:

如此多的评估系数,如何进行抉择呢?根据数据特征:

另外值得考虑的一点是,目前为止的推荐都是基于单用户的。即对一个用户的推荐系统只是基于另一个用户。这会存在一些问题。比如虽然虽然两者相似度很高,但是另外一个人有一些怪癖,怪癖的推荐就是不合理的;又比如,在相似度极高的情况下,你不能确定统一账户下的操作是同一个人做出的或者说操作行为是为了用户自身。比如用户考虑购买某件商品作为礼物送给别人,这就是基于别人喜好的购买行为,这种推荐也是不合适的。
对这种问题的解决可以使用群体划分的方法。原理与单用户类似,但是用户的匹配是k个。在这k位最优匹配的用户之间,以相似度的大小为依据设定权重作为物品推荐的条件。此即协同过滤的k近邻。

正如前面提到的基于用户的推荐有复杂度、稀疏性的问题,而基于物品的过滤则可以缓解这些问题。所谓基于物品的过滤是指,我们事先找到最相似的物品,并结合用户对物品的评级结果来生成推荐。前提是要对物品进行相似度匹配,找到一种算法。

这里的调整是指为了减轻用户评分体系的不一致情况(抵消分数贬值),从每个评级结果中减去该用户所有物品的平均分的评级结果。

其中,U表示所有同时对i, j进行评级过的用户的集合。 表示用户u给物品i的评分减去用户u对所有物品的评分的平均值。

在得到所有物品的余弦相似度后,我们就可以通过该指数预测用户对某件物品的偏好程度。方法就是所有相似物品的相似度乘以得分的总和。

其中p(u, i)指的是用户u对物品i评分的预测值。N是用户u的所有评级物品中每个和i得分相似的物品。这里的相似指的是矩阵中存在N和i的一个相似度得分。 是i和N之间的相似度得分。 是u给N的评级结果。公式较好运行的条件是 取值在(-1, 1)之间,这里就要使用归一化概念。

另一种常用的基于物品过滤的算法就是 slope one 算法。它的大概原理是预测用户u对产品j的评分时,预先计算包含所有物品的两物品偏差表;根据u的已评价的所有物品评分与该物品和产品j的偏差( )之和并乘以所有对此两类物品有过评分的用户个数,一一加总,除以所有同时对产品i与u评价过的所有物品有过评分的用户的人数,得到得分。公式如下:

其中, ; 是利用加权s1算法给出的用户u对物品j的预测值。 指的是对所有除j之外u打过分的物品。

python实现:

在前面两节中,基于物品和基于用户的过滤其前提都是用户需要对已有的item进行评分。而实际上,如果一个新的item出现,由于缺乏别人的偏好,他永远不会被推荐。这就是推荐系统中所谓的—— 冷启动 问题。基于用户评价的系统就会出现这种问题。
冷启动 问题的解决方案之一就是 基于物品属性的过滤 来进行推荐:对物品自身的属性进行归纳总结,并以此进行物品推荐。基于物品属性的过滤存在一个问题同样是量纲的不统一。如果量纲不统一极端值将会对推荐系统造成大麻烦。解决方法也很简单:归一化。此章使用的是z-评分。
使用z得分也存在问题,就是极易受到离群值的影响。这里可以使用 改进的标准分数 来缓解这个问题:

什么时候可以进行归一化呢?

这里用曼哈顿距离举例基于物品属性的过滤:

在上一章最后一节对于用户是否喜欢某件item的判别中,实际上包含了分类器的思想:分类器就是利用对象属性判定对象属于哪个组或类别的程序。这里简单用另一个小项目来说明。

简单来说就是根据运动员的某些指标来判断这位运动员属于什么类别的运动员。

准确率有0.8。

Ⅳ 利用 SVD 实现协同过滤推荐算法

奇异值分解(Singular Value Decomposition,以下简称SVD)
是在机器学习领域广泛应用的算法,它不光可以用于 降维算法中的特征分解 ,还可以用于 推荐系统 ,以及自然语言处理等领域。

优点: 简化数据,去除噪声,提高算法的结果。
缺点: 数据的转换可能难以理解。

应用领域: 推荐引擎(协同过滤、相似度计算)、图像压缩等。

SVD定义: 如果我们求出了矩阵A的n个特征值λ1≤λ2≤...≤λn,以及这n个特征值所对应的特征向量{w1,w2,...wn},如果这n个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:A=WΣW−1,其中W是这n个特征向量所张成的n×n维矩阵,而Σ为这n个特征值为主对角线的n×n维矩阵。一般我们会把W的这n个特征向量标准化,即满足||wi||2=1, 或者wiTwi=1,此时W的n个特征向量为标准正交基,满WTW=I,即WT=W−1, 也就是说W为酉矩阵。要进行特征分解,矩阵A必须为方阵。那么如果A不是方阵,则用到SVD。

矩阵A的SVD为:A=UΣVT,其中U是一个m×m的矩阵,Σ是一个m×n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,V是一个n×n的矩阵。U和V都是酉矩阵,即满足UTU=I,VTV=I。

对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。

因此SVD 也是一种强大的降维工具 ,可以利用 SVD 来逼近矩阵并从中获得主要的特征。通过保留矩阵的 80%~90% 的能量,就可以得到重用的特征并去除噪声。

推荐系统 是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。
主要有以下几种推荐算法:
基于内容的推荐(用到自然语言处理), 协同过滤(主流) ,基于规则推荐(基于最多用户点击,最多用户浏览等),混合推荐(类似集成算法,投票决定),基于人口统计信息的推荐(根据用户基本信息)

协同过滤推荐分为三种类型。 第一种是基于用户(user-based)的协同过滤(需要在线找用户和用户之间的相似度关系),第二种是基于项目(item-based)的协同过滤(基于项目的协同过滤可以离线找物品和物品之间的相似度关系), 第三种是基于模型(model based)的协同过滤(用户和物品,主流)。

一般在推荐系统中,数据往往是使用 用户-物品 矩阵来表示的。 用户对其接触过的物品进行评分,评分表示了用户对于物品的喜爱程度,分数越高,表示用户越喜欢这个物品。而这个矩阵往往是稀疏的,空白项是用户还未接触到的物品,推荐系统的任务则是选择其中的部分物品推荐给用户。

对于这个 用户-物品 矩阵,用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

具体基于模型的方法有:
用关联算法做协同过滤(Apriori算法、FP Tree算法)
用聚类算法做协同过滤(针对基于用户或者基于模型,Kmeans,DBSCAN)
用分类算法做协同过滤(设定评分阈值,高于推荐,低于不推荐,逻辑回归和朴素贝叶斯,解释性很强)
用回归算法做协同过滤(Ridge回归,回归树)
用矩阵分解做协同过滤(由于传统的奇异值分解SVD要求矩阵不能有缺失数据,必须是稠密的,而用户物品评分矩阵是一个典型的稀疏矩阵,主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++。这些算法和传统SVD的最大区别是不再要求将矩阵分解为UΣVT的形式,而变是两个低秩矩阵PTQ的乘积形式。)
用神经网络做协同过滤(限制玻尔兹曼机RBM)

在 Python 的 numpy 中,linalg已经实现了SVD

Ⅵ 心理过程包括哪些内容

包括认知过程、情绪情感过程和意志过程三个方面。

认知过程指人以感知、记忆、思维等形式反映客观事物的性质和联系的过程;情绪情感过程是人对客观事物的某种态度的体验;意志过程是人有意识地克服各种困难以达到一定目标的过程。三者有各自发生发展的过程,但并非完全独立,而是统一心理过程中的不同方面。

分类:

1、认知过程(知):人在认识客观世界的活动中所表现的各种心理现象。

简要介绍概念:感觉、知觉、记忆、思维、想象。

2、情感过程(情):人认识客观事物时产生的各种心理体验过程。

3、意志过程(意):人们为实现奋姿好带斗目标,努力克服困难,完成任务的过程。在意志过程中产生的行为就是意志行为(行)。

4、知、情、意、行的关系:认知是产生情、意的基础;行是在认知的基础上和情的推动下产生的,袜没它迹芦能提高认识,增强情感,磨炼意志;行为控制、调节情感,提高认知。

Ⅶ 协同过滤,基于内容推荐有什么区别

举个简单的小例子,我们已知道
用户u1喜欢的电影是A,B,C
用户u2喜欢的电影是A, C, E, F
用户u3喜欢的电影是B,D
我们需要解决的问题是:决定对u1是不是应该推荐F这部电影
基于内容的做法:要分析F的特征和u1所喜欢的A、B、C的特征,需要知道的信息是A(战争片),B(战争片),C(剧情片),如果F(战争片),那么F很大程度上可以推荐给u1,这是基于内容的做法,你需要对item进行特征建立和建模。
协同过滤的办法:那么你完全可以忽略item的建模,因为这种办法的决策是依赖user和item之间的关系,也就是这里的用户和电影之间的关系。我们不再需要知道ABCF哪些是战争片,哪些是剧情片,我们只需要知道用户u1和u2按照item向量表示,他们的相似度比较高,那么我们可以把u2所喜欢的F这部影片推荐给u1。
根据数据源的不同推荐引擎可以分为三类
1、基于人口的统计学推荐(Demographic-based Recommendation)
2、基于内容的推荐(Content-based Recommendation)
3、基于协同过滤的推荐(Collaborative Filtering-based Recommendation)
基于内容的推荐:
根据物品或内容的元数据,发现物品或内容的相关性,然后基于用户以前的喜好记录推荐给用户相似的物品
基于内容推荐的一个典型的例子,电影推荐系统,首先我们需要对电影的元数据有一个建模,这里只简单的描述了一下电影的类型;然后通过电影的元数据发现电影间的相似度,因为类型都是“爱情,浪漫”电影 A 和 C 被认为是相似的电影(当然,只根据类型是不够的,要得到更好的推荐,我们还可以考虑电影的导演,演员等等);最后实现推荐,对于用户 A,他喜欢看电影 A,那么系统就可以给他推荐类似的电影 C。

Ⅷ Neural Collaborative Filtering(神经协同过滤)

论文讨论的主要是隐性反馈协同过滤解决方案,先来明确两个概念:显性反馈和隐性反馈:

显性反馈行为包括用户明确表示对物品喜好的行为
隐性反馈行为指的是那些不能明确反应用户喜好

举例来说:

很多应用场景,并没有显性反馈的存在。因为大部分用户是沉默的用户,并不会明确给系统反馈“我对这个物品的偏好值是多少”。因此,推荐系统可以根据大量的隐性反馈来推断用户的偏好值。

根据已得到的隐性反馈数据,我们将用户-条目交互矩阵Y定义为:

但是,Yui为1仅代表二者有交互记录,并不代表用户u真的喜欢项目i,同理,u和i没有交互记录也不能代表u不喜欢i。这对隐性反馈的学习提出了挑战,因为它提供了关于用户偏好的噪声信号。虽然观察到的条目至少反映了用户对项目的兴趣,但是未查看的条目可能只是丢失数据,并且这其中存在自然稀疏的负反馈。
在隐性反馈上的推荐问题可以表达为估算矩阵 Y中未观察到的条目的分数问题(这个分数被用来评估项目的排名)。形式上它可以被抽象为学习函数:

为了处理缺失数据,有两种常见的做法:要么将所有未观察到的条目视作负反馈,要么从没有观察到条目中抽样作为负反馈实例。

传统的求解方法是矩阵分解(MF,Matrix Factorization),为每个user和item找到一个隐向量,问题变为:

这里的 K表示隐式空间(latent space)的维度。正如我们所看到的,MF模型是用户和项目的潜在因素的双向互动,它假设潜在空间的每一维都是相互独立的并且用相同的权重将它们线性结合。因此,MF可视为隐向量(latent factor)的线性模型。

论文中给出了一个例子来说明这种算法的局限性:

1(a)是user-item交互矩阵,1(b)是用户的隐式空间,论文中强调了两点来理解这张图片:
1)MF将user和item分布到同样的隐式空间中,那么两个用户之间的相似性也可以用二者在隐式空间中的向量夹角来确定。
2)使用Jaccard系数来作为真实的用户相似性。
通过MF计算的相似性与Jaccard系数计算的相似性也可以用来评判MF的性能。我们先来看看Jaccard系数

上面的示例显示了MF因为使用一个简单的和固定的内积,来估计在低维潜在空间中用户-项目的复杂交互,从而所可能造成的限制。解决该问题的方法之一是使用大量的潜在因子 K (就是隐式空间向量的维度)。然而这可能对模型的泛化能力产生不利的影响(e.g. 数据的过拟合问题),特别是在稀疏的集合上。论文通过使用DNNs从数据中学习交互函数,突破了这个限制。

论文先提出了一种通用框架:

针对这个通用框架,论文提出了三种不同的实现,三种实现可以用一张图来说明:

GMF
上图中仅使用GMF layer,就得到了第一种实现方式GMF,GMF被称为广义矩阵分解,输出层的计算公式为:

MLP
上图中仅使用右侧的MLP Layers,就得到了第二种学习方式,通过多层神经网络来学习user和item的隐向量。这样,输出层的计算公式为:

NeuMF
结合GMF和MLP,得到的就是第三种实现方式,上图是该方式的完整实现,输出层的计算公式为:

论文的实验用于回答以下研究问题:

RQ1 我们提出的NCF方法是否胜过 state-of-the-art 的隐性协同过滤方法?

RQ2 我们提出的优化框架(消极样本抽样的log loss)怎样为推荐任务服务?

RQ3 更深的隐藏单元是不是有助于对用户项目交互数据的学习?

接下来,首先介绍实验设置,其次是回答上述三个问题。

数据集使用了两个公开的数据集:MovieLens 和 Pinterest 两个数据集,它们的特征总结在表1中

1.MovieLens :这个电影评级数据集被广泛地用于评估协同过滤算法。论文使用的是包含一百万个评分的版本,每个用户至少有20个评分。 虽然这是显性反馈数据集,但论文有意选择它来挖掘(模型)从显式反馈中学习隐性信号的表现。为此,论文将其转换为隐式数据,其中每个条目被标记为0或1表示用户是否已对该项进行评级。

2.Pinterest :这个隐含的反馈数据的构建用于评估基于内容的图像推荐。原始数据非常大但是很稀疏。 例如,超过20%的用户只有一个pin(pin类似于赞一下),使得难以用来评估协同过滤算法。 因此,论文使用与MovieLens数据集相同的方式过滤数据集:仅保留至少有过20个pin的用户。处理后得到了包含55,187个用户和1,580,809个项目交互的数据的子集。 每个交互都表示用户是否将图像pin在自己的主页上。

评估方案 : 为了评价项目推荐的性能,论文采用了leave-one-out方法(留一法)评估,该方法已被广泛地应用于文献。即:对于每个用户,论文将其最近的一次交互作为测试集(数据集一般都有时间戳),并利用余下的培训作为训练集。由于在评估过程中为每个用户排列所有项目花费的时间太多,所以遵循一般的策略,随机抽取100个不与用户进行交互的项目,将测试项目排列在这100个项目中。排名列表的性能由命中率(HR)和归一化折扣累积增益(NDCG)来衡量。 没有特别说明的话,论文将这两个指标的排名列表截断为10。如此一来,HR直观地衡量测试项目是否存在于前10名列表中,而NDCG通过将较高分数指定为顶级排名来计算命中的位置。论文计算了每个测试用户的这两个指标,并求取了平均分。

−ItemPop 。按项目的互动次数判断它的受欢迎程度,从而对项目进行排名。 这对基于评估推荐性能来说是一种非个性化的方法。
−ItemKNN 。这是基于项目的标准协同过滤方法。
−BPR 。该方法优化了使用公式的MF模型,该模型具有成对排序损失,BPR调整它使其可以从隐式反馈中学习。它是项目推荐基准的有力竞争者。论文使用固定的学习率,改变它并报告了它最佳的性能。
−eALS 。这是项目推荐的 state-of-the-art 的MF方法。

HR(命中率)和 NDCG(归一化折损累计增益),HR直观地衡量测试项目是否存在于前10名列表中,而NDCG通过将较高分数指定为顶级排名来计算命中的位置,重点介绍NDCG

NDCG这个名字可能比较吓人,但背后的思想却很简单.一个推荐系统返回一些item并形成一个列表,我们想要计算这个列表有多好,每一项都有一个相关的评分值,通常这些评分值是一个非负数,这就是gain(增益).此外对于这些没有用户反馈的项我们通常设置起增益为0.

累计增益(CG)

我们将这些增益相加就是Cumulative Gain(累计增益,CG),CG就是将每个推荐结果相关性的分支累加后作为整个推荐列表的得分.

rel i 表示处于位置i的推荐结果的相关性,k表示要考察的推荐列表的大小.

折损累计增益(DCG)

CG的一个缺点是没有考虑每个推荐结果处于不同位置对整个推荐效果的影响,例如我们总是希望相关性高的结果应该排在前面 .显然,如果相关性低的结果排在靠前的位置会严重影响用户的体验,所以在CG的基础上引入位置影响因素,即DCG(Discounted Cumulative Gain),这里指的是对于排名靠后推荐结果的推荐效果进行“打折处理”。假设排序越往后,价值越低。到第i个位置的时候,它的价值是 1/log 2 (i+1),那么第i个结果产生的效益就是 rel i * 1/log 2 (i+1),所以::

从上面的式子可以得到两个结论:
1.推荐结果的相关性越大,DCG越大
2.相关性好的排在推荐列表前面的话,推荐效果越好,DCG越大.

归一化折损累计增益(NDCG)

DCG仍然有不足之处,即 不同的推荐的推荐列表之间,很难进行横向的评估,而我们评估一个推荐系统不可能仅使用一个用户的推荐列表及相应结果进行评估,而是对整个测试机中的用户及其推荐列表结果进行评估 .那么不同的用户的推荐列表的评估分数就需要进行归一化,也即NDCG(Normalized Discounted Cumulative Gain,归一化折损累计增益).
在介绍NDCG之前还需要知道另一个概念,IDCG(Ideal DCG),指推荐系统为某一用户返回的最好推荐结果列表,即假设返回结果按照相关性排序,最相关的结果放在前面,此序列的DCG为IDCG.因此DCG的值介于(0,IDCG],故NDCG的值介于(0,1]。NDCG计算公式:

IDCG为理想情况下最大的DCG值。

其中 |REL| 表示,结果按照相关性从大到小的顺序排序,取前p个结果组成的集合。也就是按照最优的方式对结果进行排序。

实际的例子

假设推荐系统返回来的5个结果,其模型评分分别是 1.2、0.7、0.1、0.2、4.0。

我们首先通过公式4.2计算出DCG值为2.39278,按照公式4.4来计算出iDCG的值为3.6309

最后通过公式4.3计算出NDCG为65%

更多的推荐模型评估方法参考: https://statusrank.coding.me/articles/639f7364.html

图4(Figure 4)显示了 HR@10 和 NDCG@10 相对于预测因素数量的性能。
图5(Figure 5)显示了Top-K推荐列表的性能,排名位置K的范围为1到10。
总的来看论文提出的NeuMF模型(结合GMF和MLP)效果不错,对比其他方法都要好。

Figure 6 表示将模型看作一个二分类任务并使用logloss作为损失函数时的训练效果。
Figure7 表示采样率对模型性能的影响(横轴是采样率,即负样本与正样本的比例)。

上面的表格设置了两个变量,分别是Embedding的长度K和神经网络的层数,使用类似网格搜索的方式展示了在两个数据集上的结果。增加Embedding的长度和神经网络的层数是可以提升训练效果的。

Ⅸ 协同过滤和基于内容推荐有什么区别

协同过滤和基于内容推荐核心思想是不同的:

协同过滤侧重于从大数据(集体智慧)中寻找某些隐含的模式,以物品为核心,它是对基于用户的协同过滤的一种改良。基于内容推荐则侧重于通过对象的属性信息来进行匹配建模进而寻找相似的用户或者商品,本质是“你喜欢某一事物,给你推荐近似的事物。”。

简介:

个性化推荐,是系统的智能推荐。个性化推荐的原理使用较多的是这3种方式:基于内容的推荐、基于用户的协同过滤、基于物品的协同过滤这3种推荐方式的核心则是计算相似度。

Ⅹ 个性化推荐算法——协同过滤

有三种:协同过滤
用户历史行为
物品相似矩阵

阅读全文

与协同过滤和内容运力相关的资料

热点内容
鲜知鲜觉空气净化器怎么样 浏览:672
D152离子交换树脂怎么再生 浏览:751
去除烧水壶里面的水垢 浏览:126
聚丙烯塑料树脂750M 浏览:567
长春净水机多少钱 浏览:525
不锈钢用绿伞除水垢剂弄黑了咋办 浏览:297
蒸馏水与去离子水区别 浏览:103
做豆腐的废水有没有臭味 浏览:949
滤芯废水阀坏了有什么症状 浏览:826
树脂粘度数 浏览:711
硫酸钙离子交换法测溶度积 浏览:358
鱼缸里有鱼屎是不是过滤器不够 浏览:87
什么情况下超滤膜需要化学清洗 浏览:464
杭州电镀污水如何处理 浏览:251
地暖过滤网有几种 浏览:948
空气净化器什么季节是旺季 浏览:164
纯水岸东湖效果怎么样 浏览:878
中国有多少纯净水厂 浏览:714
工业上最常用的间歇蒸馏是 浏览:594
污水检查井基础隐检内容 浏览:52