`
itace
  • 浏览: 178479 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mahout推荐demo(ua.base)

 
阅读更多

转载:http://www.mamicode.com/info-detail-139037.html

 

使用GroupLens数据集ua.base

这是一个tab分割的文件,用户Id,物品Id,评分(偏好值),以及附加信息。可用吗?之前使用的是CSV格式,现在是tsv格式,可用,使用FileDataModel

对mahout推荐2中的评估程序使用这个数据集测试:

package mahout;

import java.io.File;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.eval.AverageAbsoluteDifferenceRecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.common.RandomUtils;

public class TestRecommenderEvaluator {

	public static void main(String[] args) throws Exception {
		//强制每次生成相同的随机值,生成可重复的结果
		RandomUtils.useTestSeed();
		//数据装填
		//DataModel model = new FileDataModel(new File("data/intro.csv"));
		DataModel model = new FileDataModel(new File("data/ua.base"));
		//推荐评估,使用平均值
		RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
		//推荐评估,使用均方差
		//RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
		//用于生成推荐引擎的构建器,与上一例子实现相同
		RecommenderBuilder builder = new RecommenderBuilder() {
			
			public Recommender buildRecommender(DataModel model) throws TasteException {
				// TODO Auto-generated method stub
				//用户相似度,多种方法
				UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
				//用户邻居
				UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
				//一个推荐器
				return new GenericUserBasedRecommender(model, neighborhood, similarity);
			}
		};
		//推荐程序评估值(平均差值)训练90%的数据,测试数据10%,《mahout in Action》使用的是0.7,但是出现结果为NaN
		double score = evaluator.evaluate(builder, null, model, 0.9, 1.0);
		System.out.println(score);
	}
}

 结果输出:

14/08/04 09:52:38 INFO file.FileDataModel: Creating FileDataModel for file data\ua.base
14/08/04 09:52:38 INFO file.FileDataModel: Reading file info...
14/08/04 09:52:38 INFO file.FileDataModel: Read lines: 90570
14/08/04 09:52:38 INFO model.GenericDataModel: Processed 943 users
14/08/04 09:52:38 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.9 of FileDataModel[dataFile:D:\workspace\zoodemo\data\ua.base]
14/08/04 09:52:38 INFO model.GenericDataModel: Processed 943 users
14/08/04 09:52:38 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 878 users
14/08/04 09:52:38 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 878 tasks in 4 threads
14/08/04 09:52:39 INFO eval.StatsCallable: Average time per recommendation: 39ms
14/08/04 09:52:39 INFO eval.StatsCallable: Approximate memory used: 16MB / 79MB
14/08/04 09:52:39 INFO eval.StatsCallable: Unable to recommend in 114 cases
14/08/04 09:52:43 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.9375000000000002
0.9375000000000002

 现在是基于100 000 个偏好值,而不是少数几个

结果大约为0.9 在1到5的区间内,这个值偏离了将近一个点,不算太好。

也许我们正在使用的这个特定Recommender实现并不是最优的。

 

 

分享到:
评论

相关推荐

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    Mahout常用于电子商务网站的产品推荐、新闻推荐、用户行为分析、社交网络分析等场景。此外,它还可以应用于市场细分、情感分析等领域。 7. **社区支持**: 作为Apache软件基金会的顶级项目,Mahout有一个活跃的...

    Mahout推荐算法API.pdf

    Apache Mahout 是一个开源机器学习库,专注于大规模数据集上的推荐、分类和聚类算法。在 Mahout 中,推荐算法是其核心功能之一,用于构建个性化的推荐系统。本篇文章将详细探讨 Mahout 的推荐算法 API,特别是 `...

    mahout-distribution-0.9.tar.gz

    Apache Mahout是一个基于Java的开源机器学习库,它提供了丰富的算法和工具,用于构建智能应用程序,特别是关注推荐系统、分类和聚类分析。"mahout-distribution-0.9.tar.gz"是Apache Mahout的0.9版本的发行包,包含...

    mahout-core-0.8.jar

    mahout-core-0.8.jar mahout-core-0.8.jar

    spring-mahout-demo

    另一方面,Apache Mahout作为一个机器学习库,为开发者提供了丰富的算法,用于推荐系统、分类和聚类等任务。当Spring与Mahout结合时,可以构建出高效且灵活的数据分析和预测应用。下面我们将深入探讨"spring-mahout-...

    mahout-0.3.tar.gz

    Apache Mahout是一个基于Apache Hadoop的数据挖掘库,专注于大规模机器学习算法的实现。"mahout-0.3.tar.gz"是Mahout项目的一个早期版本,包含了一系列用于开发和执行机器学习任务的源代码、库文件和其他相关资源。...

    mahout-0.11.0.tar.gz

    适合centos7平台,Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源...Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

    mahout所需jar包

    Mahout的目标是帮助开发人员构建智能应用程序,如推荐系统、分类和聚类算法,这些在大数据分析领域中极为重要。 **K-Means聚类算法** K-Means是一种无监督学习的聚类算法,用于将数据集分成不同的群组或类别。在...

    mahout-core-0.9.jar

    mahout-core-0.9.jar,支持版本hadoop-2.2.x,由mahout-distribution-0.9.tar.gz源码构建生成jar包。

    Mahout 单机demo

    综上所述,这个“Mahout 单机demo”项目旨在演示如何使用Mahout库实现基于CSV数据的推荐算法,涵盖了数据处理、模型训练、推荐预测和效果评估等多个环节,是理解Mahout和推荐系统工作原理的一个良好起点。

    apache-mahout-distribution-0.12.1.tar.gz

    apache-mahout-distribution-0.12.1.tar.gz 开源版本 .

    Mahout推荐算法API参考.pdf

    Apache Mahout 是一个开源机器学习库,特别关注推荐系统、分类和聚类算法。在 Mahout 中,推荐算法API提供了一种方便的方式来实现和使用不同的推荐策略。在本篇文章中,我们将深入探讨 Mahout 推荐算法API的核心接口...

    mahout-collections-1.0.jar

    org.apache.mahout.math.list.adapter List adapters that make Colt lists compatible with the JDK 1.2 Collections

    mahout的基于用户的推荐Demo

    在这个“mahout的基于用户的推荐Demo”中,我们将深入探讨如何利用Mahout构建一个简单的用户基于的推荐系统。 ### 1. Mahout简介 Mahout源于Hadoop生态系统,它提供了可扩展的机器学习算法,支持大规模数据集的...

    mahout-math-0.8.jar

    mahout-math-0.8.jar mahout-math-0.8.jar

    mahout-0.3.tar

    Apache Mahout是一个基于Java的开源机器学习库,它为大数据处理提供了丰富的算法和工具,用于实现推荐系统、分类和聚类。"mahout-0.3.tar"是Mahout项目在0.3版本的源码或二进制发行版的压缩文件,通常包含了项目的源...

    mahout-0.9-cdh5.5.0.tar.gz

    mahout-0.9-cdh5.5.0.tar.gz

    Mahout实践指南.pdf

    大数据技术丛书-Mahout实践指南.pdf

Global site tag (gtag.js) - Google Analytics