推荐系统中协同过滤算法实现分析
原创博客,欢迎转载,转载请注明: http://my.oschina.net/BreathL/blog/62519 最近研究Mahout比较多,特别是里面协同过滤算法;于是把协同过滤算法的这个实现思路与数据流程,总结了一下,以便以后对系统做优化时,有个清晰的思路,这样才能知道该如何优化且优化后数据亦能正确。 推荐中的协同过滤算法简单说明下: 首先,通过分析用户的偏好行为,来挖掘出里面物品与物品、或人与人之间的关联。 其次,通过对这些关联的关系做一定的运算,得出人与物品间喜欢程度的猜测,即推荐值。 最后,将推荐值高的物品推送给特定的人,以完成一次推荐。 这里只是笼统的介绍下,方便下边的理解,IBM的一篇博客对其原理讲解得浅显易懂,同时也很详细 《 深入推荐引擎相关算法 - 协同过滤》 ,我这里就不细讲了。 协同过滤算法大致可分为两类,基于物品的与基于用户的;区分很简单,根据上面的逻辑,若你挖掘的关系是物品与物品间的,就是基于物品的协同过滤算法,若你挖掘的关系是用户与用户间的,就是基于用户的协同过滤算法;由于它们实现是有所不同,所以我分开整理,先来看看基于物品的协同过滤实现,我自己画了一幅图: 我通过数字的顺序,来标示数据变化的方向(由小到大);下面分析下每一个步骤的功能以及实现。 首先,说明下两个大的数据源, 用户偏好数据 :UserID、ItemID、Preference