十七、机器学习进阶知识:推荐算法

1、推荐算法相关概念

1.1 推荐算法的发展

随着信息化的不断发展,人们从信息匮乏时代走入了信息过载时代,在这个时代,如何从大量的数据信息中获取有价值的信息成为关键问题。当用户存在明确的需求,面对大量的信息,可以直接从网络上筛选获得,但是当用户没有明确的需求,面对大量的信息则会显得有点手足无措。
由此,推荐系统便应运面生。一方面,推荐系统可以为信息消费者提供服务,帮助筛选他们潜在可能感兴趣的信息。另一方面,推荐系统同时也给信息生产者提供了途径去挖掘潜在的消费者,帮助他们实现更有效率的信息推送。推荐算法属于推荐系统中的基础算法部分,主要通过对用户信息进行分析,从而帮助用户获取倾向性更高的信息内容。

1.2 推荐系统

目前大型电子商务网站(如淘宝)、音乐播放软件(如网易云音乐)以及大型视频网站等都有内置的推荐系统。在购物网站上,当用户浏览或购买了某些物品后,经常会弹出新的物品供选择。一位客户刚在淘宝上浏览了乐高积木,马上看到系统推荐给他相关产品。为什么电子商务平台那么了解人们的行为?人们也总是很容易看到感兴趣的新闻,听到符合自己风格的音乐呢?这背后就是推荐系统平台在工作。推荐系统首先收集、处理客户的数据,通过分析客户的特征,为客户推荐最合适的商品。
推荐系统的核心工作是使用特定的信息分析技术,将项目推荐给可能感兴趣的用户。因此,了解用户的兴趣爱好是推荐系统最重要的一个环节,如何把用户的行为进行量化,得到每个用户的特征偏好,也是一个难题,IBM在研究中有提到一些可以参考的用户偏好统计方法。

用户行为 类型 特征 作用
评分 显式 偏好,整数,取值是[0,n],n一般是5或10 通过对物品的评分,可以精确地得到用户的偏好
投票 显式 偏好,布尔值,0或1 通过对物品的投票,可以精确地得到用户的偏好
转发 显式 偏好,布尔值,0或1 通过对物品的转发,可以精确地得到用户的偏好,也可以通过推理获得偏好信息
标记标签 显式 单词,需要进行分析获得偏好 通过分析用户标签分析出用户的情感偏好
评论 显式 一段文字内容,需要进行文本分析获得偏好 通过分析文本获取用户的情感偏好
单击、查看 隐式 一组用户可能感兴趣的单击、查看信息 ,分析后获得偏好 单击与查看一定程度反映了用户的偏好程度
页面停留时间 隐式 时间信息,去噪分析后获得偏好 页面停留时间一定程度反映了用户的注意力和偏好
购买 显式 偏好,布尔值,0或1 用户的购买明确说明用户的偏好

由于推荐所针对的需求是潜在的、隐性的,所以如何评价推荐系统的性能是比较复杂的问题。在推荐系统进行推荐后,用户进行了购买,是否就能判断它是一个效能良好的推荐系统?答案是不一定。因为用户的购买行为受很多因素影响,可能来自商家广告、搜素引擎,以及推荐系统没有发现的用户实际需求。
此外,好的推荐系统不仅要准确预测用户的喜好,而且要能扩展用户视野,帮助用户发现那些他们可能感兴趣,但不那么容易被发现的物品。同时,推荐系统要将那些被埋没的长尾商品(那些原来不受到重视的销量小但种类多的产品或服务),推荐给可能会感兴趣的用户。推荐系统可以提高长尾商品的销售,这是搜索引擎无法办到的。
因此,推荐系统的性能评价需要从多个方面进行考虑,下面列出几种常见的评价方法,在实际使用时需要根据具体的应用场景进行设计。

  1. 用户信任度
    测量用户对推荐系统的信任程度非常关键,只有用户充分信任推荐系统,才会增加与推荐系统的互动,从而获得更好的个性化推荐。
  2. 预测准确度
    预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力,这个指标是最重要的推荐系统评测指标。预测的准确度可以通过用户对物品的预测值与用户实际的评分、购买等行为之间的误差进行计算。
  3. 覆盖率
    覆盖率是指推荐出来的结果能不能很好地覆盖所有的商品,是不是所有的商品都有被推荐的机会。描述一个推荐系统对长尾商品的发掘能力,最简单的依据是被推荐的商品占物品总数的比例。
  4. 多样性
    良好的推荐系统不但要捕捉用户的喜好,还要能扩展用户视野,帮助用户发现那些他们可能会感兴趣的物品。
  5. 实时性
    推荐系统的实时性包括两方面:一是实时更新推荐列表满足用户新的行为变化;二是需要将新加人系统的物品推荐给用户。

由于推荐系统要解决的是非确定性的复杂问题,因此也会面临很多挑战,系统在运行过程中的常见困难如下:

  1. 冷启动问题
    冷启动问题是推荐系统最突出的问题。冷启动是指推荐系统在没有足够历史数据的情况下进行推荐。推荐系统开始运行时缺乏必要的数据,这时要求推荐系统给出让用户满意的推荐结果比较困难。
    冷启动问题主要分为以下三类。
    (1)用户冷启动:指新用户情况下,如何给新用户做个性化推荐的问题。
    (2)系统冷启动:指新系统情况下,只有物品的信息没有用户及行为,如何进行推荐。
    (3)物品冷启动:指新物品情况下,如何将新推出的物品推荐给可能感兴趣的用户。
    对于不同的冷启动同题,有不同的解决思路。
    (1)对新用户或不活跃用户,提供标准化的推荐,例如推荐热门产品,等收集足够多的用户数据后,再更换为个性化推荐。
    (2)对新注册用户,在注册时要求提供年龄、性别等个人信息,或进一步要求用户在首次登录时选择一些兴趣标签,或者请用户对一些物品进行评,。根据用户的个人信息、兴趣标签、对物品的打分,给用户推荐相关物品。
    (3)对于新访问用户,可以根据用户关联的社交网络账号,在授权的情况下导入用户在社交网站上的好友,然后给用户推荐其好友感兴趣的物品。
    (4)对于新物品,可以利用物品的名称、标签、描述等信息,将它们推荐给对相似物品感兴趣的用户。
    (5)对于系统冷启动问题,可以引人经验模型,根据已有的知识预先建立相关性矩阵。

  2. 多目标优化问题
    影响推荐系统性能的因素非常多,因此推荐系统可以看作一个多目标优化问题。怎样能综合考虑这些繁杂的影响因素,达到理想的推荐效果,也是一个有挑战的问题。

  3. 多源的异构数据
    推荐系统的数据来自于各种数据源、各种格式,例如用户信息、物品信息、用户和用户的关系,以及用户和物品的关系。数据源还经常是异构的,存在文字、网页、图片、声音、视频等丰富的格式。内容的多源和异构性都是需要解决的问题。

  4. 时效问题
    像新闻这样的产品,有时效性要求,另一方面,用户的兴趣会改变,也要进行跟踪更断,用户已经消费过的类似商品不需要再次推荐,因此推荐的结果需要保证实时性,要及时,准确,并且会依据最新的数据进行迭代更新。

1.3 常见的推荐算法

自首次提出协同过滤技术以来,推荐系统成一门独立的学科并受到广泛关注。推荐系统的核心是推荐算法,它认为用户的行为并不是随机的,而是蕴含着很多模式。因此,通过分析用户与项目之间的二元关系,基于用户历史行或相似性关系能够发现用户可能感兴趣的项目。
随着推荐系统的广泛应用,推荐算法也不断发展。目前来说,推荐算法可以粗略分为几个大类:协同过滤推荐算法、基于内容的推荐算法、基于图结构的推荐算法和混合推荐算法。
下面主要介绍协同过滤推荐算法以及基于内容的推荐算法。

2、协同过滤推荐算法

2.1 基于用户的协同过滤推荐算法

在日常中可以观察一个人朋友的喜好,从而进一步推测出此人的喜好,基于用户的协同过滤推荐算法就是基于此思想,算法基于假设:如果两个用户对一些项目的评分相似,那么他们对其他项目的评分也具有相似性,因此首先使用特定的方式找到与一个用户相似的用户集合,即“他的朋友们”,然后分析用户集合对某个项目的评分信息,从而推测出该用户对这个项目的偏好程度。
算法流程思路如下:

  1. 获取用户对物品的评分矩阵;
  2. 计算用户之间的相似度;
  3. 找出与用户U最相似的k个用户;
  4. 获取k个用户对物品i的评分;
  5. 根据相似度以及评分信息计算得到用户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的评分均值:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七层楼的疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值