一、什么是推荐系统?
概念:一种自动化的工具,可以分析你的历史兴趣,从庞大的库中推荐出喜欢的物品。
基本任务:联系用户和物品,解决信息过载的问题。
诞生:早在很多年前,科学家门就提出了很多解决方案,代表性的就是分类目录和搜索引擎。雅虎,谷歌。其中分类目录网站:能方便用户根据类别查找网站,但是只能覆盖少量的热门网站,越来越不能满足客户的需求。因此,搜索引擎诞生了。可以让用户根据搜索关键词来找到自己需要的信息。但是,搜索引擎需要用户主动提供准确的关键词。如果用户不明确,就无能为力了。——>推荐系统,也是一种帮助用户快速发现有用信息的工具,但不同的是,不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动的给用户推荐能够满足他们兴趣和需求的信息。
推荐系统算法通常是某类推荐模型的实现,它负责获取数据,例如用户的喜好和可推荐项的描述,以及预测给定的用户组会对哪些选项感兴趣。通常分为四大类:基于内容、协同过滤、混合、流行度。
步骤:1)以机器学习的方法,生成“用户预测模型”,这一步骤叫:信息学习器;
2)将 结构化过的物品 通过“信息学习器”进行比对,预测用户是否会感兴趣;
3)将用户 可能感兴趣的物品TopN 生成推荐结果集;
/*-------------------------1、基于内容的推荐------------------------------*/
(可理解成建立在用户兴趣正例和负例文本训练集上的“文本分类器”,准确率依赖于大量的训练样本,样本的好坏又依赖于对用户兴趣的句法分析。)
(1)简介:向用户推荐和其过去喜欢项的内容相似的项。(用户喜欢和自己关注过的商品类似的商品。)
(2)输入:仅仅依赖于项和用户的 内容/描述(除了惯用数据)
(3)类型:信息检索,机器学习(朴素贝叶斯、支持向量机、决策树等)
(4)步骤:1)对于要推荐的物品建立一份特征;2)对于用户喜欢的物品建立一份特征;
3)计算相似度;(例如:余弦相似度)
优点:
a)避免冷启动问题(新物品无评分也能获得推荐机会,但协同不能);
b) 不需要惯用数据 ,仅需要基于用户喜欢的物品的属性/内容进行推荐。
c)没有流行度偏见,可以推荐有罕见性质的项 (协同有)
d)用户独立性:仅需分析内容,无需考虑用户与用户之间的关联。(基于自己的喜好构建自己的信息,而协同是获得邻居的喜好物品。)
缺点:
a) 项内容必须是机器可读的和有意义的;要求内容容易抽取成有意义的特征,特征内容具有良好的结构性。 b)过度专业化(会推荐很多相同类型的项,而不会推荐不同的,但用户会感兴趣的项);
c)不能很好的处理一词多义和一义多词带来的语义问题。
d)新颖性低,缺少多样性(一个用户只评价过导演A的作品,则获得的结果均与此作品类似)。
解决办法:利用常识和特定领域知识,提供新的特征, 新用户 可以人工打标签。
/*------------------------2、协同过滤(CF)推荐算法--------------------------*/
(1、2区别:相似度计算方式不同,协同:利用用户的历史数据,内容:利用物品本身的属性信息)
(1)简介:通过在用户的一系列行为中寻找特定模式来产生用户特殊推荐。
(2)输入:仅仅依赖于惯用数据。(例如评价、购买、下载等用户偏好行为)
(3)类型:基于邻域(用户、项)、基于模型(矩阵因子分解、RBM、贝叶斯网络 )
1)基于邻域:使用用户对已有项的评分直接预测该用户对新项的评分。
(分为基于商品和基于用户的推荐方法。
基于商品,即:用户喜欢和自己喜欢的商品类似的商品。
基于用户:用户喜欢那些具有相似兴趣的用户喜欢的商品。
特点:这两种方法都是将用户的所有数据读入到内存中进行运算的。)
优缺点:简单、效率高,但在可扩展性方面存在限制,在用户数量和项的数量增长的情况下,需要一个相似度的计算,复杂度很大。
2)基于模型:使用历史评分数据,基于学习出的预测模型,预测对新项的评分,通常的方式是使用机器学习算法,找出用户与项的相互作用模型,从而找出数据的特定模式。
优缺点:克服邻域方法的局限性,不想邻域方法一样直接用用户项评分预测新的项,而是在使用评分去学习预测模型的基础上,去预测新项。比邻域方法更先进。模型有:贝叶斯网络,聚类,分类,回归,矩阵分解,受限玻尔兹曼机等。
(4)步骤:1)找到和目标用户兴趣相近的用户集合,计算用户的相似度;(或:对于有相同用户交互的物品,计算物品相似度。)2)找到“近邻”,对近邻在新物品的评价或打分来进行加权,推荐。
(5)相似度的度量方法:欧式、余弦、皮尔森
优点:
a)基于用户行为,因此对推荐内容无需先验知识。不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。可以解决机器难以自动进行内容分析的资讯。
b)计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
c)推荐新资讯、个性化,自动化程度较高。
d)只需要用户和商品关联矩阵即可,结构简单。
e)在用户行为丰富的情况下,效果较好。
缺点:
a)方法的核心是基于历史数据,有“冷启动”的问题。即:没有惯用数据,不能推荐。
b) 推荐的效果依赖于用户历史偏好数据的多少和准确性,需要大量的显性、隐性用户行为。
c) 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
d) 流行性偏见:偏向于推荐流行的项,很难推荐给有独特口味的人。
e) 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。 f) 系统延伸性问题
/*----------------------基于矩阵分解的推荐算法-----------------------------*/
矩阵因子分解:(低秩矩阵分解)
(1)原理:根据已有的评分矩阵(非常稀疏),分解为低维的用户特征矩阵以及商品特征矩阵,最后再反过来分析数据(用户特征矩阵和商品特征矩阵相乘得到新的评分矩阵)
将用户和项转化成了相同的潜在空间,代表了用户和项之间的潜在相互作用,背后的原理是潜在特征代表了用户如何给项进行评分,给定用户和项的潜在描述,我们可以预测用户将会给还未评价的项多少评分。
给定一个损失函数,迭代最优化的过程:
/*-------------------------3.混合推荐算法--------------------------------*/
1)简介:综合利用协同过滤推荐算法和基于内容的推荐算法各自的优点同时抵消各自的缺点。
2)输入:同时使用用户和项的内容特性与惯用数据,同时从两种输入类型中获益。
3)类型:加权、交换、混合、特性组合、案例、特征增强、元层次。
优点:a)没有冷启动问题;b)没有流行度偏见,可推荐有罕见性质的项。c)实现多样性。
缺点:需要通过大量的工作才能得到正确的平衡。
/*-------------------------4.流行度推荐算法---------------------------------*/
1)简介:一种推荐流行项的方法(在对item进行评分时,使用某种形式流行度度量。eg:最多下载,最多看过,最大影响的项,然后向新用户推荐这些受欢迎的item)
2)输入:使用惯用数据和项的内容(例如类目)
优点:a)相对容易实现;b)良好的基准算法;c)有助于解决新用户冷启动问题。
缺点:a)需要标准化产品;b)经常需要一些项的类型进行分类。c)不会推荐新项(很少有机会被观测到)???? d)推荐列表不会改变太大。
5、高级分传统推荐算法
类型:深度学习、上下文感知推荐、张量分解、社会推荐、分解机
二、如何选择合适的推荐系统?
推荐引擎通过数据挖掘和机器学习方法,分析用户资料和历史行为,定位用户的兴趣爱好,将用户可能感兴趣的物品或内容推荐给用户。常用的协同过滤方法通过分析用户的历史行为,度量用户与用户,物品与物品之间的相似性,从而找到用户感兴趣的物品。
/--------------------斯坦福大学 吴恩达视频--------------------------/
1、基于内容的推荐系统(有不同电影的一些特征,用这些特征表示电影的内容,并用这些特征,进行预测得到参数theta。但很多情况下,并没有这些特征,所以推出——>协同过滤)
1)线性回归算法做预测:(预测用户Alice对电影3的评价)
2、协同过滤推荐系统 (重点:自行学习所要使用的特征)(用户给参数theta,为不同的电影估计特征。)
预测部分:1)学习电影的合理特征(X1,X2向量该是什么,才能让X1*theta1=5,X1*theta=0....因为theta都是知道的了,y也是知道的。)
对代价函数求偏导可以得到:
总结来说协同过滤: 实际就是通过一大堆用户,来进行协同合作,得到对一些项的评分,只需要对其中某几个项进行评分,每个用户就都在帮助算法更好的学习特征,这些特征就可以被系统利用,为其他用户做出更准确的预测。另一层意思,就是,每一个用户都在为了大家的利益学习出更好的特征。
/*-----------------------------------面试篇-----------------------------------*/
1、对于有的历史未出现的项不予推荐,怎么办?
(1)给中间值;(2)给最常出现的评分。
2、长尾效应 和 二八定律?
二八定律:公司发现自己的80%的利润来源于20%的顾客时,就重点关注那20%的顾客,扩展与他们的合作,这样比把注意力平均分散给所有的顾客更有意义。(如果是产品,公司应该全力销售那些高利润产品)
长尾:是对二八定律的颠覆, 认为公司的利润不再依赖于传统的20%的“优质客户”,而是许许多多原先被忽略的用户,它们数量庞大,带来的效益远远超过20%的优质客户
3、均值归一化:(了已解决用户没评价过任商品的情况,因为得到的将是均值。)
所有的值减去其对应的均值。这样就让0 为均值了。
4、推荐系统的评价指标?
(1)准确度:RMSE(均方根误差),MAE(平均绝对误差)
TopN推荐:准确率、召回率指标。(准确率:推荐的信息中用户真正感兴趣的条目的比例;召回率:推荐中用户真正感兴趣的条目占用户感兴趣总数的比例)(2)覆盖率:推荐出来的物品占物品集合的比例。(3)多样性:推荐列表中物品两两之间的差异性。(4)新颖性,实时性,惊喜度。。。
5、如何解决冷启动问题?
(1)对于新用户:(所有推荐系统对于新用户都有这个问题)
1、推荐非常热门的商品
2、收集一些信息 在用户注册的时候收集一些信息
3、在用户注册完之后,用一些互动游戏等确定喜欢与不喜欢
(2)对于新商品:
1.根据本身的属性,求与原来商品的相似度。
2.Item-based协同过滤可以推荐出去。
3.一种推荐流行项的方法(在对item进行评分时,使用某种形式流行度度量。eg:最多下载,最多看过,最大影响的项,然后向新用户推荐这些受欢迎的item)
参考:
李航《统计学习方法》
周志华《机器学习》