Mahout对于GroupLens数据定制的推荐引擎

/*
 * 这段程序是使用GroupLens定制的DataModel数据模型
 * 因为这里的数据是以逗号隔开的。
 * 这里我把数据量加大,变成了20M的数据
 * 这里使用的数据模型是对于GroupLens定制的GroupLensDataModel
 * */
package byuser;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.eval.LoadEvaluator;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.similarity.precompute.example.GroupLensDataModel;

public class GenericUserRecommeder_GroupLens {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			//进行数据的装载
			//生成数据模型
			DataModel model = new GroupLensDataModel(new File("E:\\mahout项目\\examples\\ratings.dat"));
			UserSimilarity similarity = new org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity(model);
			UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity, model);
			//生成推荐引擎
			Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
			LoadEvaluator.runLoad(recommender);
			//为用户已推荐一件商品recommend( , );其中参数的意思是:第几个人,然后推荐几件商品
			List<RecommendedItem> recommendations = recommender.recommend(1, 1);
			for(RecommendedItem recommendation : recommendations){
				System.out.println("GroupLens定制,为您推荐的商品是:" + recommendation);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TasteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
//这里的数据结果会出现很慢,因为这里的数据我跑的是1M的数据。

如图:

时间: 2024-10-10 10:29:20

Mahout对于GroupLens数据定制的推荐引擎的相关文章

蚂蚁金服智能推荐引擎解决方案与实践

摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上,蚂蚁金服人工智能部高级技术专家王志勇做了主题为<蚂蚁金服智能推荐引擎>的精彩分享. 演讲中,王志勇代表蚂蚁金服首次向公众介绍了蚂蚁金服智能推荐引擎,分享了蚂蚁金服利用人工智能和大数据能力在推荐引擎上沉淀的大量经验,并介绍了结合蚂蚁自身优势打造的.能够灵活适配各种业务场景的智能推荐引擎解决方案(A

基于 Apache Mahout 构建社会化推荐引擎

推荐引擎简介 推荐引擎利用特殊的信息过滤(IF,Information Filtering)技术,将不同的内容(例如电影.音乐.书籍.新闻.图片.网页等)推荐给可能感兴趣的用户.通常情况下,推荐引擎的实现是通过将用户的个人喜好与特定的参考特征进行比较,并试图预测用户对一些未评分项目的喜好程度.参考特征的选取可能是从项目本身的信息中提取的,或是基于用户所在的社会或社团环境. 根据如何抽取参考特征,我们可以将推荐引擎分为以下四大类: 基于内容的推荐引擎:它将计算得到并推荐给用户一些与该用户已选择过的

用Mahout构建职位推荐引擎【一起学Mahout】

阅读导读: 1.如何设计职位推荐引擎的指标? 2.简述职位推荐引擎所需要的系统架构? 3.如何对推荐结果进行人工比较? 4.职位推荐引擎中什么情况的数据最好做排除? 1. Mahout推荐系统框架概述 Mahout框架包含了一套完整的推荐系统引擎,标准化的数据结构,多样的算法实现,简单的开发流程.Mahout推荐的推荐系统引擎是模块化的,分为5个主要部分组成:数据模型,相似度算法,近邻算法,推荐算法,算法评分器. 更详细的介绍,请参考文章:从源代码剖析Mahout推荐引擎 2. 需求分析:职位推

从源代码剖析Mahout推荐引擎

本文来自于:http://blog.fens.me/mahout-recommend-engine/ 前言 Mahout框架中cf.taste包实现了推荐算法引擎,它提供了一套完整的推荐算法工具集,同时规范了数据结构,并标准化了程序开发过程.应用推荐算法时,代码也就7-8行,简单地有点像R了.为了使用简单的目标,Mahout推荐引擎必然要做到精巧的程序设计. 本文将介绍Mahout推荐引擎的程序设计. 目录 Mahout推荐引擎概况 标准化的程序开发过程 数据模型 相似度算法工具集 近邻算法工具

推荐引擎之Mahout 基于用户协同过滤算法的使用

本文目的: 介绍一种常见推荐算法(用户协同过滤)的使用. 应用场景: XXX项目运行一段时间后,系统中将会存在很多视频信息, 而通常 APP 给用户推送的消息(1-3条/每天), 那么这就需要我们根据用户的行为特征,进行更为有效的推送. 工具介绍:mahout 协同过滤算法的使用 测试代码: /**  *   * 基于用户近邻协同过滤推荐算法,  * 本文目的:针对xxx后续广告推荐算法,提供一些算法模型的参考  *   * @版权所有:来谊金融 版权所有 (c) 2015  * @author

JVM调优(这里主要是针对优化基于颁布式Mahout的推荐引擎)

优化推荐系统的JVM关键参数 -Xmx 设定Java允许使用的最大堆空间.例如-Xmx512m表示堆空间上限为512MB -server 现代JVM有两个重要标志:-client和-server,分别为客户端程序(运行时间短.占用资源少)和服务器端程序(长时间运行.资源密集型)选择合适的JVM配置. -d32和-d64 分别设定为32位和64位模式.在一台64位的机器上,两种都是有效的.尽管通常情况下最好是让JVM自己决定,但32位模式可以降低内在需求(例如引用变成4字节).当然,32位模式下不

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤(转)

第 2 部分: 深入推荐引擎相关算法 - 协同过滤 本系列的第一篇为读者概要介绍了推荐引擎,下面几篇文章将深入介绍推荐引擎的相关算法,并帮助读者高效的实现这些算法. 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.它以其方法模型简单,数据依赖性低,数据方便采集 , 推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”.本文将带你深入了解协同过滤的秘密,并给出基于 Apache Mahout 的协同过滤算法的高效实现.Apache Mahout 是 ASF 的一个

推荐引擎内部的秘密2

转自:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html 对2005年的创新公司来说,最重要的革命性思想可能是2004年<连线>杂志主编 Chris Anderson 提出的所谓"长尾"理论.这个理论说互联网使得过去几件流行商品通吃的局面一去不返了,现在哪怕是最不流行的东西也会有人喜欢,是小众市场的时代. 互联网的大趋势,甚至可以说是整个社会的一个大趋势,是人们面临的选择越

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类

聚类分析 什么是聚类分析? 聚类 (Clustering) 就是将数据对象分组成为多个类或者簇 (Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大.所以,在很多应用中,一个簇中的数据对象可以被作为一个整体来对待,从而减少计算量或者提高计算质量. 其实聚类是一个人们日常生活的常见行为,即所谓"物以类聚,人以群分",核心的思想也就是聚类.人们总是不断地改进下意识中的聚类模式来学习如何区分各个事物和人.同时,聚类分析已经广泛的应用在许多应用中,包