推荐系统思考小结(基于Mahout)
最近一直学习Mahout和推荐引擎相关的知识,一直想搞清楚,什么样的推荐系统的架构才是合理,既能对海量数据进行复杂运算,又能及时响应做出推荐。在网上发现一篇对推荐系统结构讲解的很好的文章 数: 据驱动销售——个性化推荐引擎 ,里面提到这样的思想 “ 数据的特性对我们的架构设计起到了一个非常关键的作用,因为我们可以使用完全不同的方式来将静态数据和动态数据分开处理,再合并分析 ”,对于一个数据挖掘初学者的我,很受启发。 同时,自己也在思考,若结合实际的推荐系统中,针对不同的协同过滤算法,如何来划分动态、静态数据,它们是怎样的结构,怎么存储的,又是怎么合并分析的。根据文章作者对推荐系统的设计思路,结合Mahout的源码实现,我似乎找到了一些相似之处,来解释上面的问题。 首先,仔细缕一遍Mahout产生推荐的算法流程: 1. 原始数据,Mahout中所有协同过滤算的的输入数据,都要求这样的结构(UserID、ItemID、 Preference )为一条记录,表示一个用户对某一个商品的喜爱程度;怎么得出这样的结果,Mahout并没实现,值需要你输入;一般来讲是通过分析用户各类行为日志记录,结合一些特征属性,计算出来。 2. 根据不同的协同过滤算法,得到用户与用户的关系(基于用户的) 或 商品与商品的关系(基于商品的);这时的数据结构,更像是矩阵:UserAID(ItemAID)