如何做好推荐系统

现在是“互联网+”的时代、大数据的时代——至少我遇到的很多人都开始转行做大数据了,很多人在网络上学习了几个常见算法,深入些的会再学习一下斯坦福的机器学习课程,然后就去尝试跳进大数据的海洋了,很多人可能马上就被海浪拍到了沙滩上。这篇文章就是想帮助那些即将跳进数据海洋搞数据挖掘的人,给你一个游泳圈以保证安全。

 

1、推荐系统简介

推荐系统是数据挖掘领域很重要的一个分支,其也是与搜索引擎一样,帮助用户找到自己所需要信息的一种工具。不同于搜索引擎的有明确目的的信息推荐,推荐系统往往是用户没有明确目的需求时的一种潜在推荐,来帮助用户发现自己可能喜欢的东西。

推荐系统在具体实践中有相关推荐系统和个性化推荐系统,其作用的主要对象分别是Item和User,前者是根据大众行为的推荐引擎,对每个用户都给出同样的推荐内容;后者是个性化的推荐引擎,对不同的用户,根据他们的口味和喜好给出更加精确的推荐。当然这两种并没有明确的划分,更多是在实际应用中的实现方式。一般说,推荐系统利用特殊的信息过滤技术,将不同的物品或内容推荐给可能对它们感兴趣的用户。其工作原理如下:

 《如何做好推荐系统》

 

2、推荐系统的数据源

一个好的推荐系统,不一定是算法多么优秀,很多时候是找到了更合适的计算数据源。如何选择计算的数据以及如何过滤数据中的噪声和杂质,是建立推荐系统最重要的基础步骤。数据源的选择包括数据范围选择、特征选择以及数据源的组合。

①  数据范围选择,就是要找到哪些数据源对于推荐系统是有帮助的,一般来讲,包括Item相关的数据源、User相关的数据源以及Item和User关联的数据源。根据不同的数据源就可以选择不用的推荐算法。

②  特征选择,就要找到特定数据源中那些对于计算是有帮助的属性。其与降维有些许相似,两者达到的效果是一样的,都是去试图减少特征数据集中的属性数目,但是两者采用的方法不同:降维的方法主要是通过属性间的关系,如组合不同的属性得到新的属性,这样就改变了原来的特征空间;而特征选择是从原始特征数据中选择出子集,是一种包含关系,没有改变原始的特征空间。

③  数据源的组合,更多是实际应用中的体现。前面提到的不论基于Item还是User的数据源,都是从某一角度来寻找相关数据,实际中这些不同角度的数据都会在同一推荐项中出现,因此恰当的组合不同数据源对于后续的算法选择和调优具有很好的帮助效果。

3、推荐系统的常用算法

①基于内容的推荐(Content-based Recommendation)是建立在Item的内容信息上做出推荐的,而不需要依据用户对项目的行为信息。基于内容的推荐算法常用的有决策树、神经网络和基于向量的表示方法等。

基于内容的推荐算法,其主要优点包括:不需要用户的数据,没有冷启动问题;能推荐新的活不是很流行的Item,没有新Item问题;通过列出推荐项目的内容特征,具有较好的可解释性。缺点是要求内容可以抽取成有意义的特征,特征具有良好的结构性,并且用户的喜好可以用内容特征来表述。

②基于协同过滤的推荐(ClllaborativeFilter Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。一般利用用户的历史行为喜好信息来计算用户或者物品之间的相似距离,然后利用目标用户或物品的最近邻居用户或物品的加权评价值来预测喜好程度,根据这一喜好程度来对目标进行推荐。

基于协同过滤的推荐算法,其主要优点包括:能够过滤难以进行近期自动内容分析的信息;具有较好的惊喜性,可以发现内容上完全不相似的信息;能够有效的使用其他相似用户的反馈信息,加快学习速度。缺点主要是稀疏问题和可扩展问题。

③基于关联规则的推荐(AssociationRule-based Recommendation),是通过分析用户和物品的行为数据,发掘可以表示的具有一定相关性的规则集。这种算法的发现频繁项是最为关键和耗时的。

4、推荐系统的实践

不同的推荐算法根据其适用的数据而具有不同推荐效果。在效果上,算法本身并没有什么优劣之分,只是由于适用计算数据源不同。因此,同一种数据源选择最合适的算法才是推荐系统中的关键能力体现。

①算法简单:对于推荐效果相差无几的情况下,选择那些算法运行简单、健壮性更好的,这样对于日常的维护和系统架构都很有帮助。

②参数调优:现在很多的开源插件中都已经实现了常用的算法,但是对于参数的选择和调优却不能很好的进行,因此对于使用者而言,清楚算法的基本原理,根据自己的数据源,对于算法进行必要的改造和参数调整非常有效,我们不建议直接完全的套用标准算法。

③组合推荐:一种算法可能只适用某一种或几种场景,实际中的推荐系统会面对各种各样的场景和情况,因此采用不同的算法进行组合推荐,以及不同场景的不同算法推荐都是很必要的。

④人工干预:完全依靠编辑推荐的推荐系统是不够的,同样完全依靠算法的推荐系统也是不够的,有时必要的人工干预是对推荐系统的良好补充,包括人工规则的设定、特殊条件下的推荐设定等。

点赞