关于小改CF协同过滤至MapReducer上的一些心得

至上次重写ID3 MR版以后,手贱继续尝试CF。以前耳闻CF这两年内很是火,论内某大神也给了单机版(90%代码来自于其)。因此想试试可否改到MR上。总体来讲,CF自己的机制以类似性为核心,与迭代调用几乎无关联。因此在MR上的表现,未必能彻底发挥MR做用。基本上是线性路子,一走到底。原先网上也有很多CF的介绍,不过以文文图图居多,对CF的时序性逻辑表达较少,讲的比较隐晦,如今经过代码剖析从新将其展示在你们面前(纯粹理论此处略过):ios

先贴图,贴图是王道:git

1,整个MR过程其实与单机版90%重叠。仅指望在Mapper过程当中,尽量地先构建后评分矩阵,减小Reducer压力。github

2,与大多数机器学习特性同样,既指望用小样原本预测将来。本想在Mapper 过程当中同时构建neighbour,可是若是不是太过追求最终成功率,能够值得一试。app

3,对于CF中以用户平均分做为一个大结果因素这件事,不是很赞同,多少显的有些粗糙。应该还有更好地观测手法,比方说标差、正态、二项式都是很好的选择。机器学习

3,为了加快文本读取速度,取消了标入的同步。std::ios::sync_with_stdio(false);学习

4,最终结果以下:blog

5,原始文本以下:get

6,源代码以下:同步

https://github.com/zacard-orc/Zacard_CFit

望各位看官手下留情。。。。^)^

相关文章
相关标签/搜索