记得以前曾经讨论过一个统一的推荐系统的可能性,这算是一个尝试,能不能成功地成为一个统一的框架还不好说,因为这个项目还只是一个起步阶段,还要面对很多实际问题的挑战。一个很值得怀疑的问题就是apache项目里组成一个统一的搜索引擎是由好几个独立的项目来完成的,而Duine这个apache项目则是把所有的部件都合在一个项目里,显得有点臃肿,不过这也是由推荐系统各个部件的强耦合性决定的,要像搜索引擎那样分解并不是件容易的事。
粗看了一番,整体的框架是挺完整的:推荐器集、反馈机制、解释引擎、评估引擎、user/item profile。采用混合推荐模型也是商用的一个正途。基本上,按照这样的框架思路设计构造一个推荐系统是足够完备的。问题在于如何处理好各个部件之间的关系,比如user/item profile这个模块就是一个很模糊很复杂很难说怎样建模怎样利用的部件,实际使用中和其它模块的沟通需要有相当精巧的设计。
另外一方面我比较关注效率问题,哪些在线计算哪些离线计算哪些数据结果缓存,实际的使用当中必定要面对大数据量多用户同时访问的问题,这些又似乎不单单是推荐系统要解决的问题了,但是如果不解决效率问题,就不过一个玩具性质的项目了。不知道有没有人对Duine的计算效率有什么体验?因为从给出的文档来看,并没有这方面的描述。
最后作者提出了一些很好的展望,如果社会化的推荐、利用tag、构造service等等,都是很好的想法。
现在来看的话,容我把它分为两个可用的部分:很全面的推荐系统框架描述,及一些可调用的java library。
--
稳
Guozhu. Wen
mail:
guoz...@gmail.com
douban:
http://www.douban.com/people/wentrue/blog:
http://www.wentrue.net/blog/twitter:
https://twitter.com/wentrue