文章目录
1、推荐算法相关概念
1.1 推荐算法的发展
随着信息化的不断发展,人们从信息匮乏时代走入了信息过载时代,在这个时代,如何从大量的数据信息中获取有价值的信息成为关键问题。当用户存在明确的需求,面对大量的信息,可以直接从网络上筛选获得,但是当用户没有明确的需求,面对大量的信息则会显得有点手足无措。
由此,推荐系统便应运面生。一方面,推荐系统可以为信息消费者提供服务,帮助筛选他们潜在可能感兴趣的信息。另一方面,推荐系统同时也给信息生产者提供了途径去挖掘潜在的消费者,帮助他们实现更有效率的信息推送。推荐算法属于推荐系统中的基础算法部分,主要通过对用户信息进行分析,从而帮助用户获取倾向性更高的信息内容。
1.2 推荐系统
目前大型电子商务网站(如淘宝)、音乐播放软件(如网易云音乐)以及大型视频网站等都有内置的推荐系统。在购物网站上,当用户浏览或购买了某些物品后,经常会弹出新的物品供选择。一位客户刚在淘宝上浏览了乐高积木,马上看到系统推荐给他相关产品。为什么电子商务平台那么了解人们的行为?人们也总是很容易看到感兴趣的新闻,听到符合自己风格的音乐呢?这背后就是推荐系统平台在工作。推荐系统首先收集、处理客户的数据,通过分析客户的特征,为客户推荐最合适的商品。
推荐系统的核心工作是使用特定的信息分析技术,将项目推荐给可能感兴趣的用户。因此,了解用户的兴趣爱好是推荐系统最重要的一个环节,如何把用户的行为进行量化,得到每个用户的特征偏好,也是一个难题,IBM在研究中有提到一些可以参考的用户偏好统计方法。
用户行为 | 类型 | 特征 | 作用 |
---|---|---|---|
评分 | 显式 | 偏好,整数,取值是[0,n],n一般是5或10 | 通过对物品的评分,可以精确地得到用户的偏好 |
投票 | 显式 | 偏好,布尔值,0或1 | 通过对物品的投票,可以精确地得到用户的偏好 |
转发 | 显式 | 偏好,布尔值,0或1 | 通过对物品的转发,可以精确地得到用户的偏好,也可以通过推理获得偏好信息 |
标记标签 | 显式 | 单词,需要进行分析获得偏好 | 通过分析用户标签分析出用户的情感偏好 |
评论 | 显式 | 一段文字内容,需要进行文本分析获得偏好 | 通过分析文本获取用户的情感偏好 |
单击、查看 | 隐式 | 一组用户可能感兴趣的单击、查看信息 ,分析后获得偏好 | 单击与查看一定程度反映了用户的偏好程度 |
页面停留时间 | 隐式 | 时间信息,去噪分析后获得偏好 | 页面停留时间一定程度反映了用户的注意力和偏好 |
购买 | 显式 | 偏好,布尔值,0或1 | 用户的购买明确说明用户的偏好 |
由于推荐所针对的需求是潜在的、隐性的,所以如何评价推荐系统的性能是比较复杂的问题。在推荐系统进行推荐后,用户进行了购买,是否就能判断它是一个效能良好的推荐系统?答案是不一定。因为用户的购买行为受很多因素影响,可能来自商家广告、搜素引擎,以及推荐系统没有发现的用户实际需求。
此外,好的推荐系统不仅要准确预测用户的喜好,而且要能扩展用户视野,帮助用户发现那些他们可能感兴趣,但不那么容易被发现的物品。同时,推荐系统要将那些被埋没的长尾商品(那些原来不受到重视的销量小但种类多的产品或服务),推荐给可能会感兴趣的用户。推荐系统可以提高长尾商品的销售,这是搜索引擎无法办到的。
因此,推荐系统的性能评价需要从多个方面进行考虑,下面列出几种常见的评价方法,在实际使用时需要根据具体的应用场景进行设计。
- 用户信任度
测量用户对推荐系统的信任程度非常关键,只有用户充分信任推荐系统,才会增加与推荐系统的互动,从而获得更好的个性化推荐。 - 预测准确度
预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力,这个指标是最重要的推荐系统评测指标。预测的准确度可以通过用户对物品的预测值与用户实际的评分、购买等行为之间的误差进行计算。 - 覆盖率
覆盖率是指推荐出来的结果能不能很好地覆盖所有的商品,是不是所有的商品都有被推荐的机会。描述一个推荐系统对长尾商品的发掘能力,最简单的依据是被推荐的商品占物品总数的比例。 - 多样性
良好的推荐系统不但要捕捉用户的喜好,还要能扩展用户视野,帮助用户发现那些他们可能会感兴趣的物品。 - 实时性
推荐系统的实时性包括两方面:一是实时更新推荐列表满足用户新的行为变化;二是需要将新加人系统的物品推荐给用户。
由于推荐系统要解决的是非确定性的复杂问题,因此也会面临很多挑战,系统在运行过程中的常见困难如下:
-
冷启动问题
冷启动问题是推荐系统最突出的问题。冷启动是指推荐系统在没有足够历史数据的情况下进行推荐。推荐系统开始运行时缺乏必要的数据,这时要求推荐系统给出让用户满意的推荐结果比较困难。
冷启动问题主要分为以下三类。
(1)用户冷启动:指新用户情况下,如何给新用户做个性化推荐的问题。
(2)系统冷启动:指新系统情况下,只有物品的信息没有用户及行为,如何进行推荐。
(3)物品冷启动:指新物品情况下,如何将新推出的物品推荐给可能感兴趣的用户。
对于不同的冷启动同题,有不同的解决思路。
(1)对新用户或不活跃用户,提供标准化的推荐,例如推荐热门产品,等收集足够多的用户数据后,再更换为个性化推荐。
(2)对新注册用户,在注册时要求提供年龄、性别等个人信息,或进一步要求用户在首次登录时选择一些兴趣标签,或者请用户对一些物品进行评,。根据用户的个人信息、兴趣标签、对物品的打分,给用户推荐相关物品。
(3)对于新访问用户,可以根据用户关联的社交网络账号,在授权的情况下导入用户在社交网站上的好友,然后给用户推荐其好友感兴趣的物品。
(4)对于新物品,可以利用物品的名称、标签、描述等信息,将它们推荐给对相似物品感兴趣的用户。
(5)对于系统冷启动问题,可以引人经验模型,根据已有的知识预先建立相关性矩阵。 -
多目标优化问题
影响推荐系统性能的因素非常多,因此推荐系统可以看作一个多目标优化问题。怎样能综合考虑这些繁杂的影响因素,达到理想的推荐效果,也是一个有挑战的问题。 -
多源的异构数据
推荐系统的数据来自于各种数据源、各种格式,例如用户信息、物品信息、用户和用户的关系,以及用户和物品的关系。数据源还经常是异构的,存在文字、网页、图片、声音、视频等丰富的格式。内容的多源和异构性都是需要解决的问题。 -
时效问题
像新闻这样的产品,有时效性要求,另一方面,用户的兴趣会改变,也要进行跟踪更断,用户已经消费过的类似商品不需要再次推荐,因此推荐的结果需要保证实时性,要及时,准确,并且会依据最新的数据进行迭代更新。
1.3 常见的推荐算法
自首次提出协同过滤技术以来,推荐系统成一门独立的学科并受到广泛关注。推荐系统的核心是推荐算法,它认为用户的行为并不是随机的,而是蕴含着很多模式。因此,通过分析用户与项目之间的二元关系,基于用户历史行或相似性关系能够发现用户可能感兴趣的项目。
随着推荐系统的广泛应用,推荐算法也不断发展。目前来说,推荐算法可以粗略分为几个大类:协同过滤推荐算法、基于内容的推荐算法、基于图结构的推荐算法和混合推荐算法。
下面主要介绍协同过滤推荐算法以及基于内容的推荐算法。
2、协同过滤推荐算法
2.1 基于用户的协同过滤推荐算法
在日常中可以观察一个人朋友的喜好,从而进一步推测出此人的喜好,基于用户的协同过滤推荐算法就是基于此思想,算法基于假设:如果两个用户对一些项目的评分相似,那么他们对其他项目的评分也具有相似性,因此首先使用特定的方式找到与一个用户相似的用户集合,即“他的朋友们”,然后分析用户集合对某个项目的评分信息,从而推测出该用户对这个项目的偏好程度。
算法流程思路如下:
- 获取用户对物品的评分矩阵;
- 计算用户之间的相似度;
- 找出与用户U最相似的k个用户;
- 获取k个用户对物品i的评分;
- 根据相似度以及评分信息计算得到用户U对物品i的评分信息。
结合上述算法思路,基于用户的协同过滤推荐算法步骤可以归纳如下:
1、假设用户对物品的评分矩阵如下,中间部分为不同用户对不同商品的评分。
物品1 | 物品2 | … | 物品N | |
---|---|---|---|---|
用户l | el1 | el1 | … | elN |
… | … | … | … | … |
用户U | eU1 | eU2 | … | eUN |
… | … | … | … | … |
用户V | eV1 | eV2 | … | eV3 |
… | … | … | … | … |
用户M | eM1 | eM2 | … | eMN |
2、用户之间的相似度可以通过计算距离获得,常见的距离计算方式有欧氏距离、余弦距离等。
若使用欧式距离计算,则上表中用户U和用户V的欧氏距离计算结果为:
欧氏距离的计算结果是一个非负数,取值为0到正无穷,距离越大,相似度越小。有时为了让相似度控制在某个范围以内,还会使用以下公式对上述欧氏距离进行转换,转换后的范围为(0,1]。
若使用余弦相似度作为相似度的计算方式,计算结果的取值范围为[-1,1]。上表中用户U和用户V的余弦距离计算结果为:
3、对用户U与其他用户之间计算得到的相似度进行排序,找出和用户U最相似的k个用户,用集合P(u,k)表示,假设目前有n个候选物品,则用户U对于候选物品i的评分可以利用相似度计算得到,计算公式如下:
其中N(i)表示对物品i进行评分的用户集合,v表示对物品i评分过,且和用户U相似度排名为前k的用户,r表示用户v对物品i的评分,sim表示用户u和用户v的相似度。
使用上述计算方式会计算前k个用户并取其和,有时希望计算结果和r的取值范围相同,因此会对上述计算结果进行求均值,即用户U对于候选物品i的评分计算如下:
最后根据计算得到的评分判断用户U对物品i的感兴趣程度,之后可做出是否推荐的行为。
下面使用具体的实例进行讲解。假设用某些用户对某些商品的评分数据如下所示,要求提取与用户U1最相似的两个用户,从而预测用户U1对商品I2的评分。
商品I1 | 商品I2 | 商品I3 | 商品I4 | |
---|---|---|---|---|
用户U1 | 5 | – | 4 | 4 |
用户U2 | 3 | 2 | 3 | 2 |
用户U3 | 2 | 5 | 2 | 1 |
用户U4 | 4 | 3 | 5 | 4 |
首先使用欧式距离计算每个用户之间的相似度:
根据排序,和U1最相似的两个用户分别是U2和U4,然后利用他们对物品I2的评分计算U1对物品I2的评分:
上述通过计算获得了用户U1对物品I2的评分,但是有些时候用户的打分受到个人习惯的影响,因此在实际操作中,可以用评分减去用户打分的平均分,以减少用户评分的高低习惯对结果的影响,添加平均分思路后计算方式如下:
其中加号左边表示用户U的评分均值,分子部分减去的是用户v的评分均值。
之后可以先计算出U1、U2、U3以及U4的评分均值: