如果要实现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 4.Demo Tobuildandrunthedemo,followtheinstructionsbelow,whicharewrittenforUnix-like operatingsystems: 1.ObtainacopyoftheMahoutdistribution,eitherfromSVNorasadownloadedarchive. 2.Downloadthe"1MillionMovieLensDataset"from/. 3.Unpackthearchiveandcopymovies.datandratings.datto trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/ undertheMahoutdistributiondirectory. 4.NavigatetothedirectorywhereyouunpackedtheMahoutdistribution,andnavigate totrunk. 5.Runmvninstall,whichbuildsandinstallsMahoutcoretoyourlocalrepository 6.cdtaste-web 7.cp../examples/target/grouplens.jar./lib 8.Editrecommender.propertiesandfillintherecommender.class: recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLe 9.mvnpackage 10.mvnjetty:run-war.YoumayneedtogiveMavenmorememory:inabashshell, exportMAVEN_OPTS=-Xmx1024M 11.Getrecommendationsbyaccessingthewebapplicationinyourbrowser: http://localhost:8080/RecommenderServlet?userID=1 Thiswillproduceasimplepreference-itemIDlistwhichcouldbeconsumedbyaclient application.Getmoreusefulhuman-readableoutputwiththedebugparameter: http://localhost:8080/RecommenderServlet?userID=1&debug=true Incidentally,Taste'swebserviceinterfacemaythenbefoundat: http://localhost:8080/RecommenderService.jws ItsWSDLfilewillbehere... http://localhost:8080/RecommenderService.jws?wsdl ...andyoucanevenaccessitinyourbrowserviaasimpleHTTPrequest: .../RecommenderService.jws?method=recommend&userID=1&howMany=10
一、在window上安装maven
现在Java新架构的不断出现,例如Struts,Spring,Hibernate等,项目的配置文件的增多,给开发人员带来很大麻烦。在实际的开发当中,Myeclipse中的project越来越庞大,所依赖的第三方Jar包越来越多,这显得Project很臃肿,给项目管理带来了很大不便,尤其是在一些大型项目。为了解决上述问题,Apache开源组织发布了Maven,它适用于大的Java项目。
有关maven介绍见《Maven权威指南》 ,下载地址:/mvn-def-guide/
安装步骤:
1、下载包,见/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插件 /blog/1217812、/freeliver54/archive//09/07/2169527.html
5、使用links管理eclipse插件 /cfyme/article/details/6099056/
二、在windows上构建Apache Mahout环境
Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,包括集群、分类、CP 和进化程序。
详细内容见:
1、Apache Mahout 简介/developerworks/cn/java/j-mahout/
2、Maven 2.0:编译、测试、部署、运行/html/doc//06/14/00847.html
开始构建:
1、基于 Apache Mahout 构建社会化推荐引擎/developerworks/cn/java/j-lo-mahout/
本文是由此篇文章引申而来,所以具体就是实现了“Taste的安装于简单的Demo实现”。
2、使用mvn搭建Mahout环境http://anqiang1900./blog/static/114188864380255296/
简单来说就是将Mahout源码从官网上下载下来后,在dos下切换到根文件夹后执行mvn install。
3、在Eclipse中构建Mahout /dlts26/archive//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.从/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说明
详细内容见/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
//06/14/running-hadoop-on-windows/)
下载hadoop-0.19.1在 /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成功。这样 做的一个缺点可能是你要给电脑设个密码
详见:/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步mvnjetty:run-war时,发现其中出现错误:
WARN::FAILED taste-recommender: java.lang.OutOfMemoryError: Java heap space
表明出现maven工程内存溢出。
解决办法:
Windows环境中
在Maven安装目录中找到文件%M2_HOME%\bin\mvn.bat ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为:
它的意思是你可以设置一些Maven参数,我们就在注释下面加入一行:
set MAVEN_OPTS=-Xmx1024M
或者,在执行mvnjetty:run-war命令之前,执行
F:\mahout-distribution-0.5\taste-web>set MAVEN_OPTS=-Xmx1024M
我们看到,配置的Maven选项生效了,OutOfMemoryError也能得以相应的解决。
如果觉得《windows下使用mahout|Taste实现协同过滤算法》对你有帮助,请点赞、收藏,并留下你的观点哦!