推荐系统简介

115 阅读11分钟

我正在参加「掘金·启航计划」

1.推荐系统

    推荐系统是信息过载所采用的措施,面对海量的数据信息,从中快速推荐出符合用户特点的物品。
    解决一些人的“选择恐惧症”,主要面对没有明确需求的人。

    1.1 所解决的问题

    1.解决如何从大量信息中找到自己感兴趣的信息。

    2.解决如何让自己生产的信息脱颖而出,受到大众的喜爱。

2.推荐系统的目的

    1.让用户更快更好的获取到自己需要的内容

    2.让内容更快更好的推送到喜欢它的用户手中

    3.让网站(平台)更有效的保留用户资源

    好的推荐系统应该让这三方共赢。

3.推荐系统的应用

    1.个性化音乐

    2.电子商务

    3.电影视频

    4.社交网络

    5.个性化阅读

    6.位置服务

    7.个性化邮件

    8.个性化广告

    9.个性化旅游

    10.证券、理财

4.推荐系统的基本思想

image.png

    4.1.知你所想,精准推送

    利用用户和物品的特征信息,给用户推荐那些具有用户喜欢的特征的物品。

    4.2.物以类聚

    利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品。

    4.3.人以群分

    利用和用户相似的其他用户,给用户推荐那些和他们兴趣爱好相似的其它用户喜欢的物品。

5.推荐系统的数据分析

    5.1 信息收集

    从用户中收集信息:个人信息、喜好标签、上下文信息等。

    从物品中收集信息:内容信息、分类标准、关键词等

image.png

     5.2 数据分析

    · 要推荐物品或内容的元数据,例如关键字,分类标签,基因描述等。

    · 系统用户的基本信息,例如性别,年龄,兴趣标签等。

    · 用户的行为数据,可以转化为对物品或者信息的偏好,根据应用本身的不同,
    可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。
    这些用户的偏好信息可以分为两类:

     - 显式的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,
     显式的提供反馈信息,例如用户对物品的评分,或者对物品的评论。

    - 隐式的用户反馈:这类是用户在使用网站是产生的数据,
    隐式的反应了用户对物品的喜好,例如用户购买了某物品,
    用户查看了某物品的信息等等。

6.推荐系统的分类

    6.1 根据实时性分类

    离线推荐

    实时推荐

    6.2 根据推荐是否个性化分类

    基于统计的推荐

    个性化推荐

    6.3 根据推荐原则分类

    基于相似度的推荐:即人以类聚、人以群分的方式,打上不同的标签,
    提取各种各样的特征,然后去做一个匹配。

    基于知识(规则)的推荐:没有任何原因,根据特征直接制定规则来推荐。
    如定义程序员一定秃头,则输入程序员则会推荐各种生发膏。

    基于模型的推荐:训练一个模型,使其去发现这个知识(规则),及这是一个机器学习的问题。

    6.4 根据数据源分类

    基于人口统计学的推荐:数据来源主要是用户。用户信息 --> 贴标签 --> 用户划向。
    但是用户的信息比较难以获得,在开发推荐系统时刚开始并不适用。

    基于内容的推荐:数据来源主要是物品。

    基于协同过滤的推荐:数据来源主要是行为信息(评价/评分、点击/浏览、收藏/购买、打标签)。

    6.5 推荐系统的层次结构
    

image.png

注意:根据推荐原则分类和根据数据源分类都是个性化推荐的内容。因为基于统计的推荐不存在基于用户的数据和基于物品的数据,而是进行一个整体的统计,分析出热门然后推送。

7.推荐算法简介

    7.1 基于人口统计学的推荐算法

image.png

     上图中用户A和用户C都是男性,且年龄都在25~30岁之间,那么我们就认为用户A和用户C相似,用户A喜欢物品a,我们根据人以群分,将物品a推荐给用户C。

    这里我们需要知道用户的信息

    7.2 基于内容(Content based, CB)的推荐算法

image.png

     上图中电影A和电影C的类型都有爱情、动作,因此我们认为电影A和电影C相似。用户A喜欢电影A,我们根据物以类聚,把和电影A相似的电影C推荐给用户。

    这里我们需要知道物品的信息

    7.3 基于协同过滤(Collaborative Filtering, CF)的推荐算法

image.png

    这里我们收集了用户(user)对物品(ITEM)的评价,满分是五分,
    这样我们就收集了一个表格,我们可以将它转化成矩阵(稀疏矩阵)进行处理。


    我们可以分为两大类

            7.3.1 基于近邻的协同过滤

                    7.3.1.1 基于用户(User-CF)

image.png

     由图我们可以看到,用户A喜欢物品A和物品C,用户B喜欢物品B,用户C喜欢物品A、物品C和物品D,由于用户A和用户C都喜欢物品A和物品C,我们按照人以群分的方法,认为用户A和用户C相似。于是我们便把用户C喜欢的物品D推荐给用户A

    我们可以看到,我们没有用户的信息,也没有物品的信息,我们的推荐是基于用户对物品的行为的,从用户的角度出发的。

                    7.3.1.2基于物品(Item-CF)

image.png

     由图我们可以看到,用户a喜欢物品A和物品C,用户b喜欢物品A、物品B和物品C,用户c喜欢物品A。由于喜欢物品C的人都喜欢物品A,按照物以类聚的方法,认为物品A和物品C相似。用户c喜欢物品A,啧会把物品C推荐给用户c

    我们可以看到,我们没有用户的信息,也没有物品的信息,我们的推荐是基于用户对物品的行为,从物品的角度出发的。

            7.3.2 基于模型的协同过滤

    奇异值分解(SVD)

    潜在语义分析(LSA)

    支撑向量机(SVM)

    这里我们需要知道行为信息

    基于内容的推荐方法主要利用的是用户评价过的物品的内容特征,而CF方法还可以利用其他用户评分过的物品内容

CF可以解决CB的一些局限

  • CF方法不需要上来就收集用户的信息,也不需要上来就收集物品的信息,什么信息没有都可以,只需要用户和物品之间有关联。在推荐时有很大的自由度。

  • 物品内容不完全或者难以获得时,依然可以通过其他用户的反馈给出推荐

  • CF基于用户之间对物品的评价质量,避免了CB仅依赖内容可能造成的对物品质量判断的干扰

  • CF推荐不受内容限制,只要其他类似用户给出了对不同物品的兴趣,CF就可以给用户推荐出内容差异很大的物品(有某种内在的联系)

      7.4 混合推荐
    

实际网站的推荐系统往往都不是单纯只采用了某一种推荐的机制和策略,往往是将多个方法混合在一起,从而达到更好的推荐效果。比较流行的组合方法有:

加权混合:用线性公式将集中不同的推荐按照一定的权重组合起来,具体权重的值需要再测试数据集上反复实验,从而达到最好的推荐效果。

切换混合:切换的混合方式,就是允许在不同的情况(数据量、系统运行状况、用户和物品的数目等)下,选择最为合适的推荐机制计算推荐

分区混合:采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。

分层混合:采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。

8.推荐系统评测

    8.1 推荐系统的实验方法

            8.1.1 离线实验

    1.通过体制系统获得用户行为数据,并按照一定格式生成 一个标准的数据集

    2.将数据集按照一定的规则分成训练集和测试集

    3.在训练集上训练用户兴趣模型,在测试集上进行预测

    4.通过事先定义的离线指标评测实验法在测试集上的预测结果

    在整个过程中,都在我们已经获取到的数据集上进行的。

    优点:方便。我们不需要有一个单独的业务系统去做测试,只需要一个数据集去跑一跑就行了。在测试算法的优劣时,只需要将其放入另一个算法中测评即可。

    缺点:自己定义指标/标准,没有办法去获取到业务真正关注的指标。

            8.1.2 用户调查

    用户调查需要有一些真实用户,让他们在需要测试的推荐系统上完成一些任务;我们需要记录他们的行为,并让他们回答一些问题;最后进行分析。

    优点:数据很真实,可以获得用户的真实感受。

    缺点:找到靠谱的用户比较难,并且用户数量有限,取样较难。

            8.1.3 在线实验

                    8.1.3.1 AB测试

    根据一定的规则将用户随机分为两组,分别倒入两套不同的推荐系统,我们收集用户的行为数据,统计不同的评测指标,最后考察推荐系统的优劣。

    优点:数据非常的真实,跟实际上线差不多。

    缺点:在线收集用户行为数据较难,周期较长。

    8.2 推荐系统的评测指标

    - 预测准确度

    - 用户满意度

    - 覆盖率:不能总是推荐一些热门,而是要挖掘一些比较小众的、冷门的产品。

    - 多样性

    - 惊喜度

    - 信任度

    - 实时性

    - 健壮性

    - 商业目标 

    8.3 推荐准确度评测

            8.3.1 评分预测

    很多网站都有让用户给物品打分的功能,如果知道用户对物品的历史评分,就可以从中学习一个兴趣模型,从而预测用户对物品的评分。

    评分预测的准确度一般用均方根误差(RMSE)或平均绝对误差(MAE)计算

image.png

T代表评分的个数,u代表用户(user),i代表物品(item),r代表评分(rating),那么rui代表的就是用户评分,rui跋表示的是预测评分,那么公式计算的就是预测的误差。

            8.3.2 Top-N推荐

    -网站提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做Top-N推荐。

    - Top-N推荐的预测准确率一般用精确率(precision)和召回率(recall)来度量。

                    8.3.2.1 准确率、精确率和召回率

    举个例子,假如某个班级有男生80人,女生20人,共计100人,目标是找出所以女生。现在某人挑选出50个人,其中20人是女生,另外还错误的把30个男生也当作女生挑选出来了。那么怎么评估他的工作?

    将挑选结果用矩阵示意表来表示:定义TP,FN,FP,TN四种分类情况。

image.png

准确率(accuracy)

    正确分类的item数与总数之比

            A = (20 + 50)/ 100 = 70%

我们只关心要推荐出来的女生准确与否,不关心没选出来的男生准确与否,因此我们需要一个精确率的概念

精确率(precision)

    所有被检索到的item中,“应该被检索到”的item占的比例

            P = 20 / (20 + 30) = 40%

从一个角度来看,精确率只有40%,看起来效果不是很好。但是从另一个角度来说,一共20个女生我都推荐出来了,所以效果是很好的。所以有了召回率的概念

召回率(recall)

    所有检索到的item占所有“应该检索到的item”的比例

            R = 20 / (20 + 0) = 100%