首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

mahout算法源码分析之Collaborative Filtering with ALS-WR (2)splitDataset 和parallelALS

2013-10-06 
mahout算法源码分析之Collaborative Filtering with ALS-WR (二)splitDataset 和parallelALSMahout版本:0.

mahout算法源码分析之Collaborative Filtering with ALS-WR (二)splitDataset 和parallelALS

Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。

接上篇,此篇blog分析第(1)、(2)对应的java源码,主要是splitDataset和parallelALS。

(一)其中splitDataset对应的mahout中的源java文件是:org.apache.mahout.cf.taste.hadoop.als.DatasetSplitter.java 文件,打开这个文件,可以看到这个类是继承了AbstractJob的,所以需要覆写其run方法。run方法中含有所有的操作。

进入run方法,看到刚开始和之前的算法分析一样,都是参数的获取。然后,新建了3个job,分别是:

public synchronized void addDatum(double datum) {    if (++count == 1) {      average = datum;    } else {      average = average * (count - 1) / count + datum / count;    }  }
可以看到addDatum方法就是算平均值的。然后就是reducer了,reducer还是那个MergeVectorReducer,那么reducer的输出就应该是<key,value> --> <0,[itemID:averageRating,itemID:averageRating,...]>。

接下里就是initializeM和for循环了,今天又晚了。总感觉假期效率低的没法说。。。


分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990


热点排行