Python 实现推荐系统
引言
最早的推荐系统应该是亚马逊为了提升长尾货物的用户抵达率而发明的。已经有数据证明,长尾商品的销售额以及利润总和与热门商品是基本持平的。亚马逊网站上在线销售的商品何止百万,但首页能够展示的商品数量又极其有限,给用户推荐他们可能喜欢的商品就成了一件非常重要的事情。当然,商品搜索也是一块大蛋糕,亚马逊的商品搜索早已经开始侵蚀谷歌的核心业务了。
从这些例子之中,我们可以看到我们能够使用许多不同的方式来搜集兴趣偏好。有时候,这些数据可能来自人们购买的商品,以及这些商品关联的评价信息。我们可以利用一组算法从中挖掘,建立几个有意思的推荐系统。
推荐系统的简介
两种最普遍的推荐系统的类型是基于内容的推荐系统和协同过滤推荐系统(CF)。协同过滤基于用户对产品的态度产生推荐,基于内容的推荐系统基于物品属性的相似性进行推荐。CF可以分为基于内存的协同过滤和基于模型的协同过滤。
基于内容推荐
基于内容的推荐(Content-based Recommendation),它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。
基于内容推荐方法的优点是:
不需要其它用户的数据,没有冷开始问题和稀疏问题。
能为具有特殊兴趣爱好的用户进行推荐。
能推荐新的或不是很流行的项目,没有新项目问题。
通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
已有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是:
要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。
协同过滤推荐
协同过滤推荐(Collaborative Filtering Recommendation),是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如