如果要实现Taste算法,必备的条件是:

1) JDK,使用1.6版本。需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量。

2) Maven,使用2.0.11版本或以上。在eclipse上安装maven插件—m2eclipse。

3)Apache Mahout,使用0.5版本。

Apache Mahout -Taste Documentation中的安装步骤:

[javascript] view plaincopy
  1. 4. Demo
  2. To build and run the demo, follow the instructions below, which are written for Unix-like
  3. operating systems:
  4. 1. Obtain a copy of the Mahout distribution, either from SVN or as a downloaded archive.
  5. 2. Download the "1 Million MovieLens Dataset" from http://www.grouplens.org/.
  6. 3. Unpack the archive and copy movies.dat and ratings.dat to
  7. trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/
  8. under the Mahout distribution directory.
  9. 4. Navigate to the directory where you unpacked the Mahout distribution, and navigate
  10. totrunk.
  11. 5. Runmvn install, which builds and installs Mahout core to your local repository
  12. 6. cd taste-web
  13. 7. cp ../examples/target/grouplens.jar ./lib
  14. 8. Edit recommender.properties and fill in therecommender.class:
  15. recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLe
  16. 9. mvn package
  17. 10.mvn jetty:run-war. You may need to give Maven more memory: in a bash shell,
  18. export MAVEN_OPTS=-Xmx1024M
  19. 11.Get recommendations by accessing the web application in your browser:
  20. http://localhost:8080/RecommenderServlet?userID=1
  21. This will produce a simple preference-item ID list which could be consumed by a client
  22. application. Get more useful human-readable output with the debug parameter:
  23. http://localhost:8080/RecommenderServlet?userID=1&debug=true
  24. Incidentally, Taste's web service interface may then be found at:
  25. http://localhost:8080/RecommenderService.jws
  26. Its WSDL file will be here...
  27. http://localhost:8080/RecommenderService.jws?wsdl
  28. ... and you can even access it in your browser via a simple HTTP request:
  29. .../RecommenderService.jws?method=recommend&userID=1&howMany=10

一、在window上安装maven

 

现在Java新架构的不断出现,例如Struts,Spring,Hibernate等,项目的配置文件的增多,给开发人员带来很大麻烦。在实际的开发当中,Myeclipse中的project越来越庞大,所依赖的第三方Jar包越来越多,这显得Project很臃肿,给项目管理带来了很大不便,尤其是在一些大型项目。为了解决上述问题,Apache开源组织发布了Maven,它适用于大的Java项目。

有关maven介绍见《Maven权威指南》 ,下载地址:http://www.juvenxu.com/mvn-def-guide/

安装步骤:

1、下载包,见http://maven.apache.org/download.html

2、解压缩,将其中的bin目录设置到windows Path环境变量中,maven也是依赖jdk的,先装好jdk,在环境变量里面配置好jdk。

2.1、设置JAVA_HOME(顾名其意该变量的含义就是java的安装路径),找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“.;%JAVA_HOME%\bin”,

2.2、新建变量名:M2_HOME,变量值:E:\maven\apache-maven-2.2.1,注意这里不含bin的路径。2、在path后追加;%M2_HOME%\bin,注意这里到bin目录

3、测试安装是否成功:开始->运行->cmd->mvn -version

注意:当提示mvn提示不是内部命令或外部命令,是因为在设置环境变量path的时候,可能覆盖了原先设置着的变量,只要在path后面添加变量:%SystemRoot%\system32;

4、在eclipse中安装maven插件http://she.iteye.com/blog/1217812、http://www.cnblogs.com/freeliver54/archive/2011/09/07/2169527.html

5、使用links管理eclipse插件http://blog.csdn.net/cfyme/article/details/6099056/

二、在windows上构建Apache Mahout环境

Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,包括集群、分类、CP 和进化程序。

详细内容见:

1、Apache Mahout 简介http://www.ibm.com/developerworks/cn/java/j-mahout/

2、Maven 2.0:编译、测试、部署、运行http://www.ideagrace.com/html/doc/2006/06/14/00847.html

开始构建:

1、基于 Apache Mahout 构建社会化推荐引擎http://www.ibm.com/developerworks/cn/java/j-lo-mahout/

本文是由此篇文章引申而来,所以具体就是实现了“Taste的安装于简单的Demo实现”。

2、使用mvn搭建Mahout环境  http://anqiang1900.blog.163.com/blog/static/1141888642010380255296/

简单来说就是将Mahout源码从官网上下载下来后,在dos下切换到根文件夹后执行mvn install。

3、在Eclipse中构建Mahout  http://www.cnblogs.com/dlts26/archive/2011/09/13/2174889.html

就是将Mahout源码导入Eclipse从而形成Maven工程。再在mahout文件夹下执行maven install(如果上一步没做这个的话)。

三、运行Apache Mahout中的Taste Webapp例子

Taste 是 Apache Mahout 提供的一个协同过滤算法的高效实现,它是一个基于 Java 实现的可扩展的,高效的推荐引擎。

1.修改mahout-taste-webapp工程的pom.xml,添加对mahout-examples的依赖 
<dependency>  
    <groupId>${project.groupId}</groupId>  
    <artifactId>mahout-examples</artifactId>  
    <version>0.5</version>  
</dependency>  
2.在mahout-taste-webapp工程的recommender.properties中添加 
recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender  
3.从http://www.grouplens.org/node/73上下载数据文件,我下载的是1M Ratings Data Set (.tar.gz)经过测试验证通过,其他数据文件请自行验证。解压以后将ratings.dat复制到mahout-taste-webapp工程的/org/apache/mahout/cf/taste/example/grouplens/下,至于为什么是这个路径?请大家去看这个类GroupLensDataModel。 
4.现在准备工作基本完成了,cd到taste-web我们来运行一把 
mvn jetty:run-war  
5.访问一下http://localhost:8080/RecommenderServlet?userID=1就能看到效果,这个servlet还支持其他参数请参看RecommenderServlet的javadoc说明

详细内容见http://seanhe.iteye.com/blog/1124682

四、遇到的问题

1、在Eclipse中配置Maven时遇到的问题

启动eclipse的时候会提示warning:找不到jdk啥的,解决办法:
在eclipse.ini文件中加入如下两行(vm指向javaw.exe的位置,或者直接到bin那里也可以):
-vm
D:\Development\Java\jdk1.5.0_16\bin\javaw.exe(注意这两行加到-startup与-launcher.library之间)

2、在windows上构建mahout环境时出现的问题:

2.1在mahout目录下,运行"mvn install"时,遇到以下错误

Cannot run program "chmod": CreateProcess error=2

chmod是linux命令,此错误是由于 Cygwin + Hadoop 跑在 Windows 上出现的。

也就是说如果当前在windows下进行mahout编译,一定要确保正确安装了Cygwin(按照下面的教程装上Cygwin便可,后面hadoop的配置可以不用全部完成!)

这里用几个比较好的教材,讲解如何在windows下安装Hadoop Cluster(

http://ebiquity.umbc.edu/Tutorials/Hadoop/00%20-%20Intro.html

http://hayesdavis.net/2008/06/14/running-hadoop-on-windows/)

下载 hadoop-0.19.1在   http://archive.apache.org/dist/hadoop/core/hadoop-0.19.1/

2.2在Cygwin中运行命令ssh localhost连接不成功时出现Connection closed by ::1错误

Cygwin,耗时近xxxx个小时,查遍中文外文文献,终于将此题目解决。问题描述:在Win7下Cygwin中,使用sshlocalhost命令, 出现Connectionclosedby127.0.0.1的问题。解决方案:1、开端——运行——services.msc2、右键 CYGWINsshd——属性——登录选项卡——选择“此账户”——浏览——高级——立即查找——选择你的账户名(必须为治理员权限)——输进密码(必须 要有,空密码不承受,且和电脑登录密码相同)——确定。3、重启CYGWINsshd效劳即可。这样就以你的账户的名义启动了这个效劳。而后sshlocalhost成功。这样 做的一个缺点可能是你要给电脑设个密码

详见:http://blog.sina.com.cn/s/blog_4abbf0ae0100r8hh.html

3、运行Taste Webapp时遇到的问题

在Eclipse中配置好mahout后,就可以在mahout中运行taste-webapp算法了。

文中1,2步骤由于前面已经配置好,就直接从第3步开始配置mahout-taste-webapp中的内容。

出现的问题:

在浏览器栏输入http://localhost:8080/RecommenderServlet?userID=1后出现错误:

HTTP ERROR: 404

Problem accessing /RecommenderServlet. Reason:

Not Found

Powered by Jetty://

仔细查看第7步mvn jetty:run-war时,发现其中出现错误:

WARN::FAILED taste-recommender: java.lang.OutOfMemoryError: Java heap space

表明出现maven工程内存溢出。

解决办法:

Windows环境中

在Maven安装目录中找到文件%M2_HOME%\bin\mvn.bat ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为:

@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE...

它的意思是你可以设置一些Maven参数,我们就在注释下面加入一行:
set MAVEN_OPTS=-Xmx1024M

或者,在执行mvn jetty:run-war命令之前,执行
F:\mahout-distribution-0.5\taste-web>set MAVEN_OPTS=-Xmx1024M

我们看到,配置的Maven选项生效了,OutOfMemoryError也能得以相应的解决。

转载于:https://www.cnblogs.com/DjangoBlog/p/3592311.html

win7下使用Taste实现协同过滤算法相关推荐

  1. 推荐系统-协同过滤算法简介简化版实例

    必须先忏悔一下太久没记录学习轨迹,最近感觉脑子里一团浆糊,搞得自己非常难受,自信心也是被严重摧毁.训斥自己必须要保持记录的习惯,因为这不仅是对知识的整理,更让你知道其实你知道的很多! 因为刚结束了一个 ...

  2. 协同过滤算法 R/mapreduce/spark mllib多语言实现

    用户电影评分数据集下载 http://grouplens.org/datasets/movielens/ 1) Item-Based,非个性化的,每个人看到的都一样 2) User-Based,个性化 ...

  3. 推荐系统之基于邻域的算法-------协同过滤算法

    基于邻域的协同过滤主要分为两类,基于用户的协同过滤和基于物品的协同过滤.前者给用户推荐和他兴趣相似的其他用户喜欢的物品,后者则是推荐和他之前喜欢过的物品相似的物品. 基于用户的协同过滤算法 这里介绍基 ...

  4. 基于Spark MLlib平台的协同过滤算法---电影推荐系统

    协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,协同过滤算法按照数据使用 ...

  5. 探秘推荐引擎之协同过滤算法小综述

    数学大神.统计学大神和数据挖掘推荐大神请关注. 一.数学期望的理解 早些时候,法国有两个大数学家,一个叫做布莱士·帕斯卡,一个叫做费马.帕斯卡认识两个赌徒,这两个赌徒向他提出了一个问题.他们说,他俩下 ...

  6. Apache Mahout基于商品的协同过滤算法流程分析

    最近使用mahout的itemBase协同过滤算法,研究了下他的源码,记录如下,以备后忘-- 其算法实现大致分四个主要的部分: 1.将输入数据转化成矩阵 2.计算相似性 3.还是转化数据格式,为计算预 ...

  7. (三)协同过滤算法之基于物品的推荐算法python实现

    一.背景介绍 互联网的迅猛发展将人类带入了信息社会和网络经济时代,信息化影响到了生活的方方面面.但是随着互联网产业的扩大,为用户提供更多选的同时也带来了筛选与推荐的难题.于是便提出了推荐算法帮助用户快 ...

  8. spark MLlib平台的协同过滤算法---电影推荐系统

    又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实 ...

  9. [机器学习] 推荐系统之协同过滤算法(转)

    [机器学习]推荐系统之协同过滤算法 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题. 1. 什么是推荐算法 推荐算法最 ...

最新文章

  1. 参加前端培训主要学习什么语言
  2. SAP MM MB5T可以用于查询在途库存
  3. 一名大神的github
  4. 相关子查询 与非相关子查询
  5. 账号 linux_Linux入门之UID和GID(用户ID和组ID)
  6. Deltix Round, Spring 2021 E. Crypto Lights 组合数学 + 推公式
  7. php 大型系统开法流程图,有一个php项目源码,如何搞清楚执行过程?画出其流程图...
  8. document.write()
  9. 魅族16s安兔兔跑分揭晓:在优化中不断提高
  10. 微课|中学生可以这样学Python(5.8.1节):使用切片访问列表元素
  11. 您无权查看或编辑目前的权限设置;但是,您可以取得所有权或更改审核设置
  12. 常用PDF文档开发库
  13. 宾馆客房管理系统-vue前端开发
  14. 注册gmail账号,手机无法接受验证码的问题
  15. 你可能不知道,你登曾是个气喘小胖子,靠努力逆袭完成梦想
  16. c盘压缩卷压缩不了怎么办 c盘压缩卷只能压缩一半的解决方法
  17. BingObjectnessCVPR14源码编译环境由vs2012+64位转换为vs2012+32位机过程
  18. 浅谈产业界与学术界的合作研究
  19. c语言国际编码标准统一编码,88、国际C语言混乱代码大赛-2020.03.11
  20. 怎样存钱力最大c语言,C语言问题 、//14.怎样存钱利最大 //假设银行整存整取存款不同期限的 月息利率 分别为: 0.63% 期限=1年 0....

热门文章

  1. 苹果宣布取消AirPower 因技术难题无法攻克
  2. 百度回应百科外链遭篡改:严厉打击 已报案
  3. Generator 实现
  4. 软件测试基础课程学习笔记1--软件测试简介
  5. 揭开git的神秘面纱
  6. 安排计算机网络技术专业去电子厂专业对口吗,计算机网络技术专业好点的学校有哪些?...
  7. setnx是原子操作吗_Redis面试七连问,你能扛得住吗?
  8. webgl 封装和可使用开源方案
  9. 线程池选择使用的hash算法
  10. Linux下小型web服务器boa的使用