协同过滤
文章平均质量分 89
fansy1990
这个作者很懒,什么都没留下…
展开
-
Mahout基于项目的协同过滤算法源码分析(6)--总结
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。本篇是ItemBased Collaborative Filtering的算法综述,即总结前面几篇blog,分析该算法的数据流,主要使用的数据是《mahout in action》中的listing2.1的数据。首先贴上下面的一个图:看到上面的图片(这个算法计算到上图中的矩阵还没有结束原创 2013-10-18 00:07:04 · 3030 阅读 · 1 评论 -
Mahout协同过滤算法源码分析--Itembased Collaborative Filtering实战
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。本系列介绍介绍mahout中的Itembased Collaborative Filtering算法,这个算法的实现的源码是org.apache.mahout.cf.taste.hadoop.item.RecommenderJob。在mahout官网是这样介绍这个算法的:RecommenderJob是原创 2013-10-10 23:49:25 · 6452 阅读 · 18 评论 -
Mahout基于项目的协同过滤算法源码分析(2)--RowSimilarityJob
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取:package mahout.fansy.item;import java.io.IOException;import java.util.Map;import org.apache.原创 2013-10-12 00:55:06 · 4447 阅读 · 2 评论 -
Mahout基于项目的协同过滤算法源码分析(4)共生矩阵乘法
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。经过了SimilarityJob的计算共生矩阵后,就可以开始下面一个过程了,这个过程主要是共生矩阵的乘法,要说这个共生矩阵的乘法是啥意思?我也不是很清楚,不清楚就看代码呗。首先明确共生矩阵,即共生矩阵的输入文件(也是上面个SimilarityJob的输出文件):similarityMa原创 2013-10-15 20:38:35 · 3765 阅读 · 3 评论 -
Mahout基于项目的协同过滤算法源码分析(5)--推荐
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。接上篇,本篇分析该算法的最后一个job。在上篇计算共生矩阵的乘积后,接下来又到了一个shouldRunNextPhase的方法了,这个方法里面含有三个prepareJob,但是本次只分析一个,为啥?因为在实战中没有设置filterFile,这里其实是可以设置filterFile的,设置这个参数的作原创 2013-10-17 00:17:07 · 4653 阅读 · 5 评论 -
Mahout phase 应用之 RecommenderJob
上篇博客说了下mahout的phase参数的含义,但是没有涉及到具体的应用,上次也只是说了一下这两个参数,startPhase和endPhase的好处:当运行RecommenderJob时前面的两个phase都运行成功了,但是后面的运行出错,那么是 否要继续从第一个phase开始运行呢,其实完全没有必要,可以设置startPhase和endPhase这两个参数,直接跳过前面两个Phase。的确是,原创 2012-12-03 19:06:02 · 3119 阅读 · 0 评论 -
Mahout协同过滤算法源码分析(3)--parallelALS
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。接上篇,此篇分析parallelALS的initializeM函数和for循环(for循环里面含有一个QR分解,此篇只分析到这里为止)。parallelALS的源码对应为:org.apache.mahout.cf.taste.hadoop.als.ParallelALSFactorizationJob原创 2013-10-05 17:48:12 · 4646 阅读 · 0 评论 -
Mahout协同过滤算法源码分析(4)--评价和推荐
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。首先来总结一下 mahout算法源码分析之Collaborative Filtering with ALS-WR (三),这个写了三篇,基本都是写QR分解,然后矩阵进过处理得到U或者M的过程,但是还是没有讲出个所以然来。mahout官网上说其是根据这篇文献得来的Large-scale Parall原创 2013-10-08 19:42:28 · 4177 阅读 · 1 评论 -
Mahout协同过滤算法源码分析(3-2)--QR分解数据流
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。接上篇,当数据准备完成后,就可以来分析其数据流了。首先要分析的是new QRDecomposition(Ai),这个初始化QRDecomposition就做了好多的事情,具体分析如下:先贴上源码,然后再分析:public QRDecomposition(Matrix a) {原创 2013-10-06 18:32:02 · 2866 阅读 · 0 评论 -
Mahout协同过滤算法源码分析(3-1)--QR分解数据流
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。接上篇,本篇主要分析下面的一行代码:Vector solve(Matrix Ai, Matrix Vi) { return new QRDecomposition(Ai).solve(Vi).viewColumn(0); }虽说是一行代码,但是里面涉及的内容却好多。。。哎,当初原创 2013-10-06 18:08:16 · 4189 阅读 · 0 评论 -
Mahout基于项目的协同过滤算法源码分析(3)--RowSimilarityJob
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。 本篇分析上篇的分析是否正确,主要是编写上篇输出文件的读取以及添加log信息打印相关变量。首先,编写下面的测试文件分析所有的输出:package mahout.fansy.item;import java.io.IOException;import java.util.Map;i原创 2013-10-15 00:52:14 · 3282 阅读 · 0 评论 -
Hadoop 实现协同过滤算法(1)
最近一直在研究《Mahout in Action》,今天才算是把第一部分看完。在Chapter 6中有一个例子,是实现协同过滤进行推荐的例子,不过书上的是针对布尔值的输入数据,在mahout的安装目录里面也有这个算法的详细源码,但是毕竟是源码,读起来有点晦涩,所以就参考了书上的例子编写了(书上的例子思路比较清楚)不仅仅是布尔值的输入数据的代码;下面就详细说下思路及代码:输入数据:第一列原创 2012-10-12 16:02:49 · 8457 阅读 · 10 评论 -
Mahout协同过滤算法源码分析(1)
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。学习总是一个痛并快乐着的过程。。。今天简要介绍一下mahout中的Collaborative Filtering with ALS-WR,这个算法,你要问我这个是什么算法,我最多告诉你它是一个推荐算法,其他我也不知道。这里主要是参考这里的介绍Collaborative Filtering wi原创 2013-10-03 22:01:37 · 7077 阅读 · 10 评论 -
Mahout协同过滤算法源码分析(2)--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.原创 2013-10-05 01:30:20 · 4272 阅读 · 0 评论 -
Mahout协同过滤算法源码分析(3-3)QR分解数据流
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。接上篇分析完new QRDecomposition(Ai)后,此篇分析new QRDecomposition(Ai).solve(Vi).viewColumn(0)的后面solve函数。首先来明确几个变量:Vi:[[34.8125],[5.235105578655231],[4原创 2013-10-06 18:44:08 · 2824 阅读 · 1 评论 -
Mahout协同过滤算法源码分析(5)--拓展篇
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。额,好吧,心头的一块石头总算是放下了。关于Collaborative Filtering with ALS-WR这个算法中的那个QR分析,真心是太复杂了。以至于国庆后面三天基本都是在郁闷中过来的,想着自己的矩阵学的是有多差呀。。。后来算法验证弄懂之后才发觉,尼玛,java太坑爹了吧,矩阵求个逆,有那么原创 2013-10-08 20:03:18 · 4056 阅读 · 2 评论 -
Mahout协同过滤算法源码分析(6)--并行思路
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。mahout算法源码分析之Collaborative Filtering with ALS-WR 这个算法的并行主要就应该是ParallelALSFactorizationJob这里的并行了,下图是这个Job的大部分操作:这里分析并行就是看每个job任务是否可以出现多个map或者red原创 2013-10-10 00:50:53 · 4204 阅读 · 3 评论 -
Mahout基于项目的协同过滤算法源码分析(1)--PreparePreferenceMatrixJob
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。本篇分析RecommenderJob的源码,这个类也是继承了AbstractJob,所以也会覆写其run方法,点开这个run方法,可以看到和其他的job类都一样,刚开始都是基本参数的默认值设置和获取;然后到了第一个job,在这个job之前有一个shouldRunNextPhase()函数,点开这个函数原创 2013-10-11 01:19:39 · 5060 阅读 · 0 评论 -
Mahout案例实战--Dating Recommender 系统
软件版本:Hadoop:2.6.0; Mahout:1.0(自行编译,只使用了两个jar文件);Spring:4.0.2;Struts:2.3;Hibernate:4.3;jQuery EasyUI :1.3.6;MySql:5.6;浏览器:chrome;MyEclipse:10.0;Hadoop平台配置:node1: NameNode/ResourceManger/DataNode/NodeM原创 2015-03-11 00:54:55 · 6986 阅读 · 11 评论