如果要实现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中的安装步骤:

  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/1217812http://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也能得以相应的解决。

win7下使用Taste实现协同过滤算法的更多相关文章

  1. Spark机器学习之协同过滤算法

    Spark机器学习之协同过滤算法 一).协同过滤 1.1 概念 协同过滤是一种借助"集体计算"的途径.它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度.其内在思想是相 ...

  2. Collaborative Filtering(协同过滤)算法详解

    基本思想 基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分.根据不同用户对相同商品或内容的态度和偏好程度计算用户 ...

  3. Slope one—个性化推荐中最简洁的协同过滤算法

    Slope One 是一系列应用于 协同过滤的算法的统称.由 Daniel Lemire和Anna Maclachlan于2005年发表的论文中提出. [1]有争议的是,该算法堪称基于项目评价的non ...

  4. Mahout实现基于用户的协同过滤算法

    Mahout中对协同过滤算法进行了封装,看一个简单的基于用户的协同过滤算法. 基于用户:通过用户对物品的偏好程度来计算出用户的在喜好上的近邻,从而根据近邻的喜好推测出用户的喜好并推荐. 图片来源 程序 ...

  5. mahout协同过滤算法各接口

    Mahout协同过滤算法 Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎.Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供 ...

  6. Spark MLlib协同过滤算法

    算法说明 协同过滤(Collaborative Filtering,简称CF,WIKI上的定义是:简单来说是利用某个兴趣相投.拥有共同经验之群体的喜好来推荐感兴趣的资讯给使用者,个人透过合作的机制给予 ...

  7. 基于Python协同过滤算法的认识

    Contents    1. 协同过滤的简介    2. 协同过滤的核心    3. 协同过滤的实现    4. 协同过滤的应用 1. 协同过滤的简介 关于协同过滤的一个最经典的例子就是看电影,有时候 ...

  8. 吴裕雄--天生自然HADOOP操作实验学习笔记:协同过滤算法

    实验目的 初步认识推荐系统 学会用mapreduce实现复杂的算法 学会系统过滤算法的基本步骤 实验原理 前面我们说过了qq的好友推荐,其实推荐算法是所有机器学习算法中最重要.最基础.最复杂的算法,一 ...

  9. spark机器学习从0到1协同过滤算法 (九)

      一.概念 协同过滤算法主要分为基于用户的协同过滤算法和基于项目的协同过滤算法.   基于用户的协同过滤算法和基于项目的协同过滤算法 1.1.以用户为基础(User-based)的协同过滤 用相似统 ...

随机推荐

  1. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何

    Problem C. Equivalent Cards 题目连接: http://www.codeforces.com/gym/100253 Description Jane is playing a ...

  2. ZOJ 2975 Kinds of Fuwas

    K - Kinds of Fuwas Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu De ...

  3. FCKeditor如何升级CKEditor及使用方法

    之前编辑器用的是FCKeditor,因为项目原因需要升级为最新版本4.2.2,发现是已经更名为CKEditor. 百度了一下,据官方的解释,CK是对FCK的代码的完全重写. 项目环境是asp.net的 ...

  4. [原创]互联网公司App测试流程

    [原创]互联网公司App测试流程 一款App的发布上线,离不开充分的测试工作,App测试与pc软件测试二者大体流程相同,但也有所区别,其中由于App测试有其固有的特性,所以在测试时流程会有不同,具体我 ...

  5. 解决 PermGen space Tomcat内存设置(转)

    在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应用服 ...

  6. [web.config]如何灵活使用配置文件

    摘要 在实际项目中,经常遇到比较多的环境,比如开发环境,测试环境,生产环境.对于这些环境,可能会有不同接口调用,不同的数据库连接字符串等等.那么该如何实现不同环境的参数快速切换呢?当然,最笨的方式就是 ...

  7. Time Zones And Daylight Savings Time

    This page describes code for working with Time Zones and Daylight Savings Time. Neither VBA nor VB6 ...

  8. 使用Application.GetResourceStream方法加载资源时得到的总是null

    我们可以预先把程序中用到的资源,如图片,音乐等放入项目中,打包进XAP文档,需要的时候从中调用.下面就说说具体实现方法. 第一步,把数据存进项目. 1.右键点击项目名称-添加-新建文件夹(英文版请自行 ...

  9. Java File.separator

    在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...

  10. linux搭建C开发环境

    目前决大多 数的Linux用户对Linux的了解还处于比较低级的层次,他们可能会几条命令.会配几种服务.会用rpm来安装软件.会操作KDE/Gnome界机等等,但是当他们遇到一些需要编译安装的软件时, ...