1. 推荐系统(一):基于物品的协同过滤算法
协同过滤(collaborative filtering)算法是最经典、最常用的推荐算法。其基本思想是收集用户偏好,找到相似的用户或物品,然后计算并推荐。
基于物品的协同过滤算法的核心思想就是:给用户推荐那些和他们之前喜欢的物品相似的物品。主要可分为两步:
(1) 计算物品之间的相似度,建立相似度矩阵。
(2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。
相似度的定义有多种方式,下面简要介绍其中几种:
其中,分母 是喜欢物品 的用户数,而分子 是同时喜欢物品 和物品 的用户数。因此,上述公式可以理解为喜欢物品 的用户中有多少比例的用户也喜欢物品 。
上述公式存在一个问题。如果物品 很热门, 就会很大,接近1。因此,该公式会造成任何物品都会和热门的物品有很大的相似度,为了避免推荐出热门的物品,可以用下面的公式:
这个公式惩罚了物品 的权重,因此减轻了热门物品会和很多物品相似的可能性。
另外为减小活跃用户对结果的影响,考虑IUF(nverse User Frequence) ,即用户活跃度对数的倒数的参数,认为活跃用户对物品相似度的贡献应该小于不活跃的用户。
为便于计算,还需要进一步将相似度矩阵归一化 。
其中 表示用户 对物品 的评分。 在区间 内,越接近1表示相似度越高。
表示空间中的两个点,则其欧几里得距离为:
当 时,即为平面上两个点的距离,当表示相似度时,可采用下式转换:
距离越小,相似度越大。
一般表示两个定距变量间联系的紧密程度,取值范围为[-1,1]
其中 是 和 的样品标准差
将用户行为数据按照均匀分布随机划分为M份,挑选一份作为测试集,将剩下的M-1份作为训练集。为防止评测指标不是过拟合的结果,共进行M次实验,每次都使用不同的测试集。然后将M次实验测出的评测指标的平均值作为最终的评测指标。
对用户u推荐N个物品(记为 ),令用户u在测试集上喜欢的物品集合为 ,召回率描述有多少比例的用户-物品评分记录包含在最终的推荐列表中。
准确率描述最终的推荐列表中有多少比例是发生过的用户-物品评分记录。
覆盖率反映了推荐算法发掘长尾的能力,覆盖率越高,说明推荐算法越能够将长尾中的物品推荐给用户。分子部分表示实验中所有被推荐给用户的物品数目(集合去重),分母表示数据集中所有物品的数目。
采用GroupLens提供的MovieLens数据集, http://www.grouplens.org/node/73 。本章使用中等大小的数据集,包含6000多用户对4000多部电影的100万条评分。该数据集是一个评分数据集,用户可以给电影评1-5分5个不同的等级。本文着重研究隐反馈数据集中TopN推荐问题,因此忽略了数据集中的评分记录。
该部分定义了所需要的主要变量,集合采用字典形式的数据结构。
读取原始CSV文件,并划分训练集和测试集,训练集占比87.5%,同时建立训练集和测试集的用户字典,记录每个用户对电影评分的字典。
第一步循环读取每个用户及其看过的电影,并统计每部电影被看过的次数,以及电影总数;第二步计算矩阵C,C[i][j]表示同时喜欢电影i和j的用户数,并考虑对活跃用户的惩罚;第三步根据式\ref{similarity}计算电影间的相似性;第四步进行归一化处理。
针对目标用户U,找到K部相似的电影,并推荐其N部电影,如果用户已经看过该电影则不推荐。
产生推荐并通过准确率、召回率和覆盖率进行评估。
结果如下所示,由于数据量较大,相似度矩阵为 维,计算速度较慢,耐心等待即可。
[1]. https://blog.csdn.net/m0_37917271/article/details/82656158
[2]. 推荐系统与深度学习. 黄昕等. 清华大学出版社. 2019.
[3]. 推荐系统算法实践. 黄美灵. 电子工业出版社. 2019.
[4]. 推荐系统算法. 项亮. 人民邮电出版社. 2012.
[5]. 美团机器学习实践. 美团算法团队. 人民邮电出版社. 2018.
2. 推荐系统论文阅读(二十三)-神经图协同过滤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:
3. 协同过滤之冷启动
协同过滤是利用集体智慧的一个典型方法,首先想一个简单的场景,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想
下图以用户对电影的推荐为例,表1 是用户对电影评分数据的一个简单矩阵的例子,其中每一行代表一个用户,每一列代表一部电影,矩阵中的元素表示用户对所看电影的评分,评分值一般是从1到5 的整数,评分值越大表明用户喜欢该电影。
对表1 中的数据利用协同过滤推荐算法,系统查找到用户Alice、Bob 和Chris 具有相似的兴趣爱好,因为他们对后3 部电影的评分相同,那么系统会推荐电影Snow white 给Chris,因为与其兴趣偏好相似的用户Alice 和Bob 对该电影的评分值较高。在表2 中,对于新用户Amy,没有评分信息,根据协同过滤推荐算法,无法根据评分信息查找与其兴趣偏好相似的用户,所以系统无法为该用户推荐电影,同样对于新电影Shrek,因缺乏评分信息系统无法感知它的存在,所以也无法将其推荐出去。这就是 协同过滤推荐算法所存在的新用户和新项目问题,即冷启动问题
「冷启动」包含两个层面:
1. 用户的冷启动 ,新的用户因为没有在产品上留下行为数据,自然无法得知他/她的喜好,从而做出靠谱的推荐。这时一般需要借助用户的背景资料,或者引导性地让用户选择,或者暂时用热门启动替代个性化推荐来解决,在线推荐系统可以做到在用户产生行为数据后立马更新推荐列表。
2. 物品的冷启动 ,主要适用于ItemBased的场景,即对一个物品推类似的物品,因为新物品还没有用户行为数据,自然也就没有办法通过协同过滤的方式进行推荐,这时一般会利用物品属性的相关程度来解决。
现实生活中对于电子商务推荐系统,每天都有大量的新用户访问系统,每天都有相当数量的新项目添加到系统中,一方面,如果推荐系统能够为新用户推荐比较喜欢的商品,推荐系统会赢得更多用户的信任,对商家来说增加了客源,提高用户对系统的忠诚度,对用户来说,可以随时得到高质量的个性化服务; 另一方面,如果新商品能够及时地被推荐出去,可以提高产品的销售量,为商家赢得更大的经济利益,促进电子商务的健康发展。
目前针对冷启动问题提出了一些解决方法,如随机推荐法、平均值法、众数法、信息熵法、相似度度量改进法和结合内容信息的方法等。
此文选摘至 http://ke..com/item/%E5%86%B7%E5%90%AF%E5%8A%A8 , http://blog.sina.com.cn/s/blog_7f9bc9990102w81l.html
4. 协同过滤与分类
[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。
5. 为何说大数据精准广告并不靠谱
为何说大数据精准广告并不靠谱
一、大数据精准广告内涵
大数据目前已经成为整个IT界(包含Internet Technology 以及Information Technology)最热的词汇之一,似乎任何一个话题,只要提到大数据,瞬间变得高大上。一夜之间,大数据已经代替主观的理性思考,成为智慧洞察的代名词。
但是当我们走过对大数据的顶礼膜拜阶段,揭开大数据实际应用的面纱,反而逐渐对充斥着话语世界的大数据进行反思。因为大数据在经济发展中的巨大意义并不代表其能取代一切对于社会问题的理性思考,科学发展的逻辑不能被湮没在海量数据中。著名经济学家路德维希·冯·米塞斯曾提醒过:“就今日言,有很多人忙碌于资料之无益累积,以致对问题之说明与解决,丧失了其对特殊的经济意义的了解。
以大数据的广告应用为例,精准广告投放应该是大数据最早的也是最容易产生直接收益的应用,如今少有广告公司没有宣称自己是大数据科技公司。大数据精准广告的核心内涵是什么?一言以蔽之,那就是程序化定向投放。其中定向是核心,程序化是手段。
以微信朋友圈为例,不定向区域,年初的公开价格CPM(每千次曝光成本,朋友圈广告价格远超一般媒体)40元,定向核心城市140元,定向重点城市90元,如果叠加定向性别,附加10%,再叠加H5外链(流量引导效果更好),再附加20%。就像进口化妆品一样,先按一定比例征收关税,后按含税价格再征收增值税,再按含税价格征收消费税。
对于微信来说,客户地域、性别虽然也需要数据分析解读,但确认相对比较容易。对于其它数据公司来说,地域依然可以通过IP或手机终端GPS获取,但性别更可能就是一个数据分析出的可能属性。当然大数据并不仅仅分析如此简单的标签,对于媒体联盟而言,媒体选择项目众多,还会分析客户媒体偏好标签,还有时间段、人群属性、设备类型、偏好类型等多种定向组合方式。
好了,上面对于精准广告有了一个粗浅的介绍。那么大数据精准广告能带来什么样的价值?通常如下的故事是大数据广告公司经常提及的。
假如一个网站的广告位,每小时有1万人来浏览,则一小时曝光量为1万,之前的CPM为5元,那么一个手机广告主投放一小时广告,成本50元。这是传统广告投放的结果。现在有个大数据公司,来帮助该广告媒体更好的运营。该公司宣称它能够精准识别浏览客户的属性,告诉手机广告主,虽然1万人浏览该广告位,但真正适合投放手机的只有6千人次,剩下4千人次的曝光为无效曝光,因为剩下的人群只对服装感兴趣。
大数据公司建议广告主按照程序化投放,过滤掉不适合投放手机的4千人,仅对适合投放手机的6千人付费,假如单价不变,那么在保证相同效果的前提下,成本降低至30元。剩下的4千人大数据公司将其销售给服装广告主,成本为20元。由此,在相同的效果情况下,大数据广告大幅降低广告主的成本。当然事实上,由于RTB(实时竞价)机制的存在,当价格(效果相同)低到一定程度,不同手机广告主的相互竞价,使得真实价格一般高于30元,但肯定介于30元到原有预期成本50元之间,由此形成多方共同获益的理想局面。
这样的案例看上去Perfect,无懈可击。因为它解决了传统广告的低效问题,比如看起来有用,但又说不清楚到底有用在哪里,这个正是各公司财务总监所深恶痛绝的。是的,通过大数据广告,让一切花在广告上的钱更有依据,可以在线评估一条广告到底造成多少的印象(Impressions),甚至多少点击,多少因此而下载使用,多少因此产生交易。
有问题吗?没问题。有问题吗?你什么意思,难道你要怀疑真理?
二、大数据精准广告没有看上去那么美好
本着证伪的原则,真理只有被证明为谬误的时候(理解其应用的局限及条件),才算真理。因此我们必须先回答一个问题,广告是用来做什么的?
按照以前的共识,广告被视为品牌用来向那些无法面对面沟通的消费者去传达品牌的特性。因此广告虽然对销售有促进作用,但通常时候,广告的内容并不直接说服消费者去购买,就如中国移动曾经的获奖广告“沟通从心开始”一样。2010年出版的《品牌如何增长》(How Brands Grow)一书(说明,笔者未读过,希望将来能读到),作者南澳大利亚大学教授拜伦在书中指出,广告要达到最好的效果,往往不需要去说服或灌输,只要让人在购买的时候回想起品牌的名字就可以了。市场研究机构Milward Brown创始人高登(Gordon Brown)就指出,广告的功能就是让一个摆在货架上的品牌变得“有趣”。
好吧,再回到大数据精准广告案例,其中一个最为关键的问题在于,大数据如何分析出这6千个浏览用户适合投放手机广告?对于这个问题,广告公司早有准备,给出如下的种种答案。
第一,从历史记录中寻找曾经使用过同类产品的客户进行匹配。通常使用的算法叫“协同过滤”,即由某些经验的相关性,找到潜在的适合用户。比如你玩过某款游戏,因此可认为你对该类型的其它游戏也有相同的需求。笔者并不否认该算法对某些领域确实有作用,比如游戏付费用户基本就是之前重度游戏使用用户。
但是抛开这些特殊领域,该算法内涵思想“品牌依靠忠诚的消费者发展壮大”与拜伦的理论完全矛盾。拜伦通过对销售数据进行统计学分析,他指出在所有成功的的品牌当中,大量的销售来自“轻顾客”(Light buyer):也就是购买产品相对不那么频繁的顾客。可口可乐的生意并非依靠每天都喝可乐的人,而是数百万每年喝一次或两次的顾客。这种消费者模式在各个品牌、商品品类国家和时期都适用。无论是牙刷还是电脑,法国汽车或是澳大利亚银行,品牌依靠的是大规模人口——换句话说,大众——那些偶尔购买他们的人。
这个理论意义十分深远。这意味着你永远无法通过精准营销现有顾客来增加品牌的市场份额。而对现有顾客的精准营销,正是数字媒体所擅长的。
本着批判的精神来看待新出现未经检验的思想,笔者希望引用一下广东移动最近公布的用户换机特征数据。广东移动对旗下用户的终端迁移分析表明,使用苹果的用户升级终端,继续使用苹果手机的占比64%,忠诚度最高。但除苹果以外,其余忠诚度表现最好的华为、小米手机,更换4G后持续使用同品牌的占比不到30%。
这说明,你向苹果4或5用户推广苹果6是可行的,果粉效应推翻拜伦的理论,证实在部分领域依靠忠诚的消费者发展壮大是可行的。但除此以外,你向任何一个当前品牌的用户推广同品牌的手机终端都是不合时宜的。
因此,希望通过历史的电商数据分析推断用户下一步可能需要是无效的。就如向曾经购买过服装的用户推广服装,或许不如推广一卷纸或一桶油更为有效。
相反,成功的品牌需要找到一种方式来到达目标市场之外的群体。品牌的广告一定要用某种方式获得这部分人的兴趣——只有这样,当他们在准备购买的时候,该品牌才能自动出现在消费者的脑海中。
第二,如果“协同过滤”存在局限,广告公司会告诉你还有第二种算法,并不基于客户的历史行为记录,而是客户本身特征相似性,来找到与种子客户最为相似的客户群体。简称“Lookalike”。先需要广告主提供本则广告起到作用的典型用户,以手机为例,受广告影响感兴趣点击浏览或预购某手机的用户,大约几百或几千个。大数据公司通过Lookalike算法(专业的术语更可能是稀疏矩阵),寻找与这几百/千个用户高度相似的其它数十万/百万客户群进行投放。
这类算法真正考验大数据平台的计算能力,因为并不是经验性的协同过滤,而是利用数十数百甚至上千个变量进行回归计算。最后按照相似性的概率打分,按照由高到低选择合适的用户群。
该模型的内涵其实很简单,就是广告要传达给应该传达的客户。比如奶粉广告目标用户就是养育0-3岁孩子的父母。如果知道要到达用户的具体身份,一切问题迎刃而解。但是对于网站或APP应用来说,并不清楚用户身份,唯一清楚的是客户的历史行为数据。而且由于数据本身的分割,有的专注于运营商,有的专注于APP联盟采集,有的专注于电商,有的专注于银行,要从分割的数据中推断出客户的身份信息,Lookalike就是不可避免的手段。
唯一的问题是,如果由几百个种子用户推断出新的几百个目标用户,准确性可能高达9成,但如果如某广告公司宣称,对康师傅辣味面进行移动DSP投放时,根据历史投放数据分析挖掘,形成样本库,再通过Lookalike技术进行人群放大,找到与目标受众相似度最高的潜在客户,扩展人群1367万,实际投放受众ID2089万。广告效果投放是最大化了,那么效果呢?在此,请允许我杜撰一个数字,很可能点击率由0.2%上升至0.3%,精准度提升50%。有意义吗?或许有,但绝对没有想象的那么明显。
第三,如果你们持续怀疑我们算法的有效性,那么我们可以就效果来谈合作,你们可以按照点击量(CPC)或者激活量(CPA)付费,如果达不到既定效果,我们会补量。这是大数据广告的终极武器。
终极武器一出,意味着广告的投放彻底沦陷为做点击、做激活的渠道,广告的“沟通消费者”初衷早被抛弃得一干二净。
通常一般消费决策遵行S(Solution)、I(Information)、V(Value)、A(Access)规则,意思是当用户产生一个需求,内心先就满足这个需求形成一个解决方案。比如说3G手机不好用,速度很慢覆盖不好,需要换一个4G终端就成为一个Solution。那么4G终端有哪些,重点考虑那些终端?消费者还是搜集信息,并非从网上搜索,而是根据以往的经历、品牌效应、周边朋友口碑自动回想那些品牌、哪些款式。传统广告的最重要功效应该就是这个阶段,当用户需要的时候,自动进入到用户视线。然后从多维度比较选择,确定首选购买品牌。最后就是去哪儿买,搜索哪儿有促销活动,哪里优惠力度最大。
根据SIVA模型,真正的以效果为导向的广告本质解决的是Access问题,最后的临门一脚。在这方面,搜索广告是真正的效果导向广告,比如淘宝的每一款商品后面都有超过1万家商户提供,到底用户去哪里购买,得付钱打广告,这就是效果广告。曾有报告对比过,搜索广告点击率高达40%以上。想一想网络、阿里靠什么为生,临门一脚的广告价格自然高到没边,据说一些医院购买网络性病、人流之类的搜索广告,单次流量价格高达数十或数百元。
搜索广告只有少数垄断接入公司才有的生意,大部分广告仍为展示类广告。如果展示类广告也朝效果类靠拢,从商业规律上属于本末倒置。
最后结果是,一方面,广告的内容充满人性的贪婪(优惠/便宜)与色欲(大胸美女),被改造得不伦不类,上过一次当后,在沟通消费者方面反而起到负面作用。另一方面,广告公司沦落为做流量、做点击的公司,与北京望京、中关村著名的刷流量一条街没有本质的差异,最后谁真正点击了这些有效流量?曾有大数据公司分析过某款高端理财软件的阶段性用户群,与刷机、贪图小便宜的极低端用户高度相似。
三、多用靠谱的身份识别可能更有利于提升广告效果
写了这么多,大数据精准广告一无是处吗?不,怀疑真理是为了更好的应用真理。大数据广告的核心“程序化”与“定向投放”没有错,这代表移动互联网发展的趋势,也与满足特定市场、特定用户群的商品或服务广告传播需求完全匹配。问题在于目前的大数据实际能力与宣称的雄心还有巨大的差距。也就是说没有看上去的那么好。
所以,我们更应该回归广告的本来目的——更好的沟通消费者,来看待精准投放,而不是迷信大数据精准投放这样的噱头。那么什么最重要?显然不是不靠谱的协同过滤规则,也不是根本不知道原因的Lookalike,既然最重要的就是到达目标消费者,那么靠谱的身份识别应该就是精准广告的核心。
什么是靠谱的身份识别?对微信而言,判断重点活动城市是靠谱的,分析性别也相对靠谱,但如果微信告诉你说能够通过社交判断该用户是中产白领还是乡村农民,那一定是不靠谱的。因为朋友圈里宣称正在法国酒庄旅游的优雅女人或许正在出门买油条豆浆。
有时候用户使用的媒体本身就透露客户的身份特征。比如经常使用理财软件的在支付能力上较为靠谱,而使用孕宝APP的80%以上应该就是准妈妈,经常使用蜜芽的一定是宝宝出生不久的妈妈。有大数据公司给出过案例,对媒体本身进行定向和综合分析定向的效果相差无几,这就说明媒体定向是有效的,但是其它需求定向都等同于随机选择。
由于大数据本身就是不关注因果,只关注相关性,如果经过大数据洞察证实的协同规则,也可以算作靠谱的规则。比如游戏付费用户群基本上可以确定为一两千万ID的重度使用用户。
而要准确识别客户身份,多数据源的汇集与综合不可避免,围绕客户身份的各种洞察、相关性分析也是能力提升的必修功课,这或许更应该是大数据广告公司应持续修炼的核心能力。
6. 基于物品的协同过滤
参考书本: 项亮, 推荐系统实践. 2012
本文系阅读笔记
1.网站用户基数增多,矩阵难以构造,时空复杂度增加。
2.难以对推荐结果做出解释。
该算法会因为你购买过《数据挖掘导论》而给你推荐《机器学习》。不过, ItemCF 算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。 该算法认为,物品 A 和物品 B 具有很大的相似度是因为喜欢物品 A 的用户大都也喜欢物品B 。
基于物品的协同过滤算法可以利用用户的历史行为给推荐结果提供推荐解释,比如给用户推荐《天龙八部》的解释可以是因为用户之前喜欢《射雕英雄传》。
基于物品的协同过滤算法主要分为两步。
(1) 计算物品之间的相似度。
(2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。
具体公式(ij直接的相似度):
N(i)表示喜欢物品i的用户数。
但是如果物品j很热门,几乎每个人都喜欢,则关系度会接近于1。(如可能很多人都会买《新华字典》或《哈利波特》)
为了避免推荐热门物品,则有公式:
这个公式惩罚了物品j的权重,减轻了热门物品会和很多物品相似的可能性。
尽管上面的公式分母已经考虑到了 j 的流行度,但在实际应用中,热门的 j 仍然会获得比较大的相似度。因此可在分母上进行惩罚。
但不能完全解决,两个不同领域的最热门物品之间往往具有比较高的相似度。这个时候,仅仅靠用户行为数据是不能解决这个问题的,因为用户的行为表示这种物品之间应该相似度很高。此时,我们只能依靠引入物品的内容数据解决这个问题,比如对不同领域的物品降低权重等。这些就不是协同过滤讨论的范畴了。
可以首先建立用户-物品倒排表,即每一个用户建立一个包含他喜欢的物品的列表。
比如电影,一般来说,同系列的电影、同主角的电影、同风格的电影、同国家和地区的电影会有比较大的相似度。
在得到物品之间相似度后,itemCF运用以下公式计算用户u对一个物品j的兴趣:
S(j,K) 与物品j最相似的K个物品的集合
为物品相似度。 即用户u对物品i的兴趣程度,这里可看做有过行为为1。
对既属于用户喜欢的物品,又在与j物品相似的物品集合内的每一个物品,得到权重相加和(即相似度乘感兴趣程度)。
精度(准确率和召回率) 可以看到 ItemCF 推荐结果的精度也是不和 K 成正相关或者负相关的,因此选择合适的 K 对获得最高精度是非常重要的。
流行度 和 UserCF 不同,参数 K 对 ItemCF 推荐结果流行度的影响也不是完全正相关的。
随着 K 的增加(流行物品相对增多),结果流行度会逐渐提高,但当 K 增加到一定程度,流行度就不会再有明显变化。
覆盖率 K 增加会降低系统的覆盖率(流行率增加)。
A.
假设有这么一个用户,他是开书店的,并且买了当当网上 80% 的书准备用来自己卖。那么,他的购物车里包含当当网 80% 的书。假设当当网有 100 万本书,也就是说他买了 80 万本。从前面对 ItemCF 的讨论可以看到,这意味着因为存在这么一个用户,有 80 万本书两两之间就产生了相似度,也就是说,内存里即将诞生一个 80 万乘 80 万的稠密矩阵。
John S. Breese 在论文中提出了一个称为 IUF ( Inverse User Frequence ),即用户活跃度对数的倒数的参数,他也认为活跃用户对物品相似度的贡献应该小于不活跃的用户,他提出应该增加 IUF参数来修正物品相似度的计算公式:ItemCF-IUF算法
同ItemCF相比,降低了流行度,提高了推荐结果的覆盖率。
B.
物品相似度归一化。
Karypis 在研究中发现如果将 ItemCF 的相似度矩阵按最大值归一化,可以提高推荐的准确率。
其研究表明,如果已经得到了物品相似度矩阵 w ,那么可以用如下公式得到归一化之后的相似度矩阵 w' :
相似度的归一化可以提高推荐的多样性。[解释看原书]
7. 协同过滤(2): KDD2020- HyperGraph CF 基于超图
协同过滤推荐系统是当今众多推荐系统中最流行和最重要的推荐方法之一。
尽管已经被广泛采用,但是现有的基于 cf 的方法,从矩阵分解到新兴的基于图的方法, 在训练数据非常有限的情况下表现不佳 (数据稀疏问题)。
本文首先指出了造成这种不足的根本原因,并指出现有基于 CF 的方法固有的两个缺点,即: 1)用户和物品建模不灵活; 2)高阶相关性建模不足。
在这种情况下,文中提出了一个双通道超图协同过滤(DHCF)框架来解决上述问题。
首先,引入 双通道学习策略 (Dual-Channel),全面利用分治策略,学习用户和物品的表示,使这两种类型的数据可以优雅地相互连接,同时保持其特定属性。
其次, 利用超图结构对用户和具有显式混合高阶相关性的物品进行建模 。提出了跳跃超图卷积(JHConv)方法,实现高阶关系嵌入的显式和有效传播。
推荐系统的核心是一系列的推荐算法,这些算法能够**根据用户的个人特征有效地从爆炸式信息筛选出信息。协同过滤是目前最受欢迎和广泛采用的方法之一。
CF 持有一个基本的假设,当向用户提供推荐时: 那些行为相似的人(例如,经常访问同一个网站)很可能在物品(例如,音乐、视频、网站)上分享相似的偏好。
为了实现这一点,一个典型的基于 CFbased 方法执行一个两步策略: 它首先利用历史交互区分相似的用户和项目; 然后基于上面收集的信息,向特定用户生成推荐。
现有的 CF 方法可以分为三类。
虽然 CF 方法已经研究了多年,但仍然存在局限性,特别是在训练的先验知识非常有限的情况下。为了理解这些缺陷,深入挖掘现有 CF 方法的内在机制得到以下局限性:
基于这些生成的连接组,即超边,可以分别为用户和物品构造两个超图,即两个通道的表示。本文提出了一种新的跳跃超图卷积算法(JHConv) ,该算法通过聚合邻域的嵌入并引入先验信息,有效地在超图上进行信息传播。(与传统的基于图的方法对比,用户超图和项目超图,可以更灵活地进行复杂的数据关联建模,并与不同类型的数据结合。)
超图定义为 ,V表示图节点, 表示超边集合,超图邻接矩阵 描述节点与超边的关系
在高层次上,DHCF 首先通过一个双通道超图框架学习用户和物品的两组嵌入,在此框架上,DHCF 通过计算用户和物品嵌入查找表的内积,进一步计算出用户-项目偏好矩阵。基于这样的偏好矩阵,DHCF 估计用户对某个商品感兴趣的可能性。
总体分为三步:
构建用户和物品嵌入矩阵:
为了在预定义的混合高阶关系上聚合相邻消息,执行以下高阶消息传递:
为了提取有区别的信息,我们对用户和物品定义为
综上所述,上述两个过程构成了一个集成的DHCF 层,允许对用户和物品进行明确的建模和编码,并通过强大的嵌入功能进一步更新和生成更精确的嵌入超图结构。这种精细嵌入可以进一步应用于推荐系统中的各种下游任务。
与 传统 HGNNConv 相比,JHConv 允许模型同时考虑其原始特征和聚合相关表示,在另一方面,这样的 resnet结构的跳跃连接使模型能够避免由于集成了许多其他连接而导致的信息稀释。
引入高阶关联来实现构建超边,根据自定义的规则分别对用户和物品进行高阶关联提取
定义1: 物品的 k 阶可达邻居。在用户-物品交互图,更具体地说是二部图中,如果在 itemi 和 itemj 之间存在一个相邻顶点序列(即一条路) ,且该路径中的用户数小于 k,itemi (itemj)是 itemi (itemi)的 k 阶可达邻居。
定义2: 物品的 k阶可达用户。在物品-用户二部图中,如果用户 j 和物品 k 之间存在直接交互作用,则用户 j 是 itemi 的 k 阶可达邻居,而物品 k 是 itemi 的 k 阶可达邻居。
对于 itemi,其 k 阶可达用户集称为 。从数学上讲,超图可以定义在一个集簇上,其中每个集代表一个超边。因此,这里可以通过物品的 k 阶可达用户集构建超边。
然后在用户 k 阶可达规则的基础上构造高阶超边组,该超边组可表示为:
假设通过K阶可达规则,构造a个超边组,最后的超图需要将这a个超边组做融合,见上面的总体框架中的描述。
同理,按照相似的K阶可达的规则,对物品进行分析,构成物品的超边(N个用户,M个物品)
在实验中,每个用户观察到的交互中的10% 被随机选择用于训练,其余的数据用于测试。这样的设置增加了 CF 任务的难度,因为模型只能获取非常有限的观察到的交互。此外,由于数据的高度稀疏性,它可以很好地评价模型从有限的隐式数据集中挖掘有用信息的能力。对于所有四个数据集,每个用户至少有两个用于训练的交互。
这篇工作基于超图结构,提出了一种新的CF框架,与基于图神经网络的CF相比,超图结构更符合实际情况;此外,双通道的思路也值得借鉴,之前也分析的一篇双通道BPR的论文。近年来,基于图神经网络的推荐已经成为研究主流,而其中超图相关的工作少之又少,最近看到的另一篇是SIGIR2020上的一篇Next Item Recommendation with Sequential Hypergraphs,在超图神经网络上并没多大的改进,重点仍然在于如何用这种结构去解决存在的问题。
如果觉得有用,欢迎点赞关注赞赏,若对推荐感兴趣欢迎评论区/私信交流~~~
8. 协同过滤算法
用户行为数据在网站上最简单的存在形式就是日志,比如用户在电子商务网站中的网页浏览、购买、点击、评分和评论等活动。 用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈 行为(implicit feedback)。显性反馈行为包括用户明确表示对物品喜好的行为。网站中收集显性反馈的主要方式就是评分和喜欢/不喜欢。隐性反馈行为指的是那些不能明确反应用户喜好 的行为。最具代表性的隐性反馈行为就是页面浏览行为。 按照反馈的明确性分,用户行为数据可以分为显性反馈和隐性反馈,但按照反馈的方向分, 又可以分为正反馈和负反馈。正反馈指用户的行为倾向于指用户喜欢该物品,而负反馈指用户的 行为倾向于指用户不喜欢该物品。在显性反馈中,很容易区分一个用户行为是正反馈还是负反馈, 而在隐性反馈行为中,就相对比较难以确定。
在利用用户行为数据设计推荐算法之前,研究人员首先需要对用户行为数据进行分析,了解 数据中蕴含的一般规律,这样才能对算法的设计起到指导作用。
(1) 用户活跃度和物品流行度
(2) 用户活跃度和物品流行度的关系
一般认为,新用户倾向于浏览热门的物品,因为他 们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。如果用横坐标表示用户活跃度,纵坐标表示具有某个活跃度的所有用户评过分的物品的平均流行度。图中曲线呈明显下 降的趋势,这表明用户越活跃,越倾向于浏览冷门的物品。
仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。学术界对协同过滤算法进行了深入研究,提出了很多方法,比如基于邻域的方法(neighborhood-based)、隐语义模型 (latent factor model)、基于图的随机游走算法(random walk on graph)等。在这些方法中, 最著名的、在业界得到最广泛应用的算法是基于邻域的方法,而基于邻域的方法主要包含下面两种算法。
基于用户的协同过滤算法 :这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品
基于物品的协同过滤算法: 这种算法给用户推荐和他之前喜欢的物品相似的物品
基于邻域的算法是推荐系统中最基本的算法,该算法不仅在学术界得到了深入研究,而且在 业界得到了广泛应用。基于邻域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是 基于物品的协同过滤算法。现在我们所说的协同过滤,基本上就就是指基于用户或者是基于物品的协同过滤算法,因此,我们可以说基于邻域的算法即是我们常说的协同过滤算法
(1) 基于用户的协同过滤算法(UserCF)
基于用户的协同过滤算法的基本思想是:在一个在线个性化推荐系统中,当一个用户A需要个性化推荐 时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。
Ø 从上面的描述中可以看到,基于用户的协同过滤算法主要包括两个步骤。 第一步:找到和目标用户兴趣相似的用户集合。 第二步: 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
这里,步骤1的关键是计算两个用户的兴趣相似度,协同过滤算法主要利用行为的相似度计算兴趣的相似度。给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v) 为用户v曾经有过正反馈的物品集合。那么我们可以通过以下方法计算用户的相似度:
基于余弦相似度
(2) 基于物品的协同过滤算法(itemCF)
与UserCF同理
(3) UserCF和itemCF的比 较
首先我们提出一个问题,为什么新闻网站一般使用UserCF,而图书、电商网站一般使用ItemCF呢? 首先回顾一下UserCF算法和ItemCF算法的推荐原理。UserCF给用户推荐那些和他有共同兴 趣爱好的用户喜欢的物品,而ItemCF给用户推荐那些和他之前喜欢的物品类似的物品。从这个算 法的原理可以看到,UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,而ItemCF 的推荐结果着重于维系用户的历史兴趣。换句话说,UserCF的推荐更社会化,反映了用户所在的小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。 在新闻网站中,用户的兴趣不是特别细化,绝大多数用户都喜欢看热门的新闻。个性化新闻推荐更加强调抓住 新闻热点,热门程度和时效性是个性化新闻推荐的重点,而个性化相对于这两点略显次要。因 此,UserCF可以给用户推荐和他有相似爱好的一群其他用户今天都在看的新闻,这样在抓住热 点和时效性的同时,保证了一定程度的个性化。同时,在新闻网站中,物品的更新速度远远快于新用户的加入速度,而且 对于新用户,完全可以给他推荐最热门的新闻,因此UserCF显然是利大于弊。
但是,在图书、电子商务和电影网站,比如亚马逊、豆瓣、Netflix中,ItemCF则能极大地发 挥优势。首先,在这些网站中,用户的兴趣是比较固定和持久的。一个技术人员可能都是在购买 技术方面的书,而且他们对书的热门程度并不是那么敏感,事实上越是资深的技术人员,他们看 的书就越可能不热门。此外,这些系统中的用户大都不太需要流行度来辅助他们判断一个物品的 好坏,而是可以通过自己熟悉领域的知识自己判断物品的质量。因此,这些网站中个性化推荐的 任务是帮助用户发现和他研究领域相关的物品。因此,ItemCF算法成为了这些网站的首选算法。 此外,这些网站的物品更新速度不会特别快,一天一次更新物品相似度矩阵对它们来说不会造成 太大的损失,是可以接受的。同时,从技术上考虑,UserCF需要维护一个用户相似度的矩阵,而ItemCF需要维护一个物品 相似度矩阵。从存储的角度说,如果用户很多,那么维护用户兴趣相似度矩阵需要很大的空间, 同理,如果物品很多,那么维护物品相似度矩阵代价较大
下表是对二者的一个全面的表较:
9. 现有推荐系统及优缺点
以满足不同用户的不同推荐需求为目的,不同人可以获得不同推荐为重要特征的个性化推荐系统
输入:用户(User)、物品(Item)、评价(Review)
输出: 推荐列表、(推荐理由)
User Profile: 1. 性别、年龄、职业等 2. 将User所有打过分的Item Profile的每一项进行加权平均,得到一个综合的Profile
核心问题:预测和推荐(排序)
一、 基于人口统计学的推荐
当我们需要对一个User进行个性化推荐时,利用第一种User Profile计算其他用户与其之间的相似度,然后挑选出与其最相似的前K个用户,之后利用这些用户的购买和打分信息进行推荐。
二、 基于内容的推荐
构建User Profile,例如将该User曾经打过份的所有Item的Item Profile做一个加权平均,作为该User的profile。计算该用户未尝试过的Item与该用户的User Profile之间的相似度,并按照相似度由大到小的顺序生成推荐列表。
三、基于协同过滤的推荐
(一)、 memory-based推荐
1、 基于用户的推荐(User-Based)
第一步是执行最近邻搜索(相似偏好),把每一个User看成一个行向量,计算其他所有的User行向量与他的相似度。(Pearson相关性系数、余弦相似度等),选取与该用户相似度最高的前K个用户。推荐方法有两种:Top-N推荐和关联推荐
2、基于物品的推荐( Item-Based)
Item-Based 方法是亚马逊网络商城的专利算法。第一步执行临近搜索,把每一个Item看成一个列向量,对于一个Item,我们计算其他所有的Item列向量与它的相似度。有了Item之间的两两相似度之后,就可以进行预测和推荐了。
(二)、基于模型的推荐(Model-Based Recommendation)
User-Based 或 Item-Based 方法共有的缺点是资料稀疏,难以处理大数据量下的即时结果,因此发展出以模型为基础的协同过滤技术:先用历史数据训练得到一个模型,再用此模型进行预测。
(三)、混合型推荐方法(Hybrid-Based Recommendation)
指将多种推荐技术进行混合相互弥补缺点,从而可以获得更好的推荐效果。最常见的是将协同过滤技术和其他技术相结合,以克服
Cold-Start 的问题。
常见混合方法:
加权融合(Weighted):将多种推荐技术的计算结果加权混合产生推荐。
切换(Switch):根据问题背景和实际情况采用不同的推荐技术。
混合(Mix):将多种不同的推荐算法推荐出来的结果混合在一起,其难点是如何重排序。
特征组合(Feature Combination):将来自不同推荐数据源的特征组合起来,由另一种推荐技术采用。
级联型(Cascade):用后一个推荐方法优化前一个推荐方法。
特征递增(Feature Augmentation):前一个推荐方法的输出作为后一个推荐方法的输入,它与级联型的不同之处在于,这种方法上一级产生的并不是直接的推荐结果,而是为下一级的推荐提供某些特征。
元层次混合(Meta-level hybrid):将不同的推荐模型在模型层面上进行深度的融合,而不仅仅是把一个输出结果作为另一个的输入。
10. 协同过滤算法属于自然语言处理方向吗
协同过滤算法是这一领域的主流。作为基于内容的算法执行方式,协同版过滤在准确性上具有相权当的优势,但无法冷启动、推荐同质化和运算效率低使其依然存在很多不足。
协同过滤算法的名称来源于化学上的过滤操作。
原理
利用物质的溶解性差异,将液体和不溶于液体的固体分离开来的一种方法。如用过滤法除去粗食盐中少量的泥沙
过滤实验仪器
漏斗、烧杯、玻璃棒、铁架台(含铁圈)、滤纸。
过滤操作要领
要做到“一贴、二低、三靠”。
一贴
即使滤纸润湿,紧贴漏斗内壁,中间不要留下气泡。(防止气泡减慢过滤速度。)
二低
1.滤纸边缘略低于漏斗边缘。
2.液面低于滤纸边缘。(防止液体过滤不净。)
三靠
1.倾倒时烧杯杯口要紧靠玻璃棒上。
2.玻璃棒下端抵靠在三层滤纸处。
3.漏斗下端长的那侧管口紧靠烧杯内壁。
过滤注意事项
1.烧杯中的混合物在过滤前应用玻璃棒搅拌,然后进行过滤。
2.过滤后若溶液还显浑浊,应再过滤一次,直到溶液变得透明为止。
3.过滤器中的沉淀的洗涤方法:用烧瓶或滴管向过滤器中加蒸馏水,使水面盖没沉淀物,待溶液全部滤出后,重复2~3次。
希望我能帮助你解疑释惑。