win7下使用Taste实现协同过滤算法
如果要实现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中的安装步骤:
- 4. Demo
- To build and run the demo, follow the instructions below, which are written for Unix-like
- operating systems:
- 1. Obtain a copy of the Mahout distribution, either from SVN or as a downloaded archive.
- 2. Download the "1 Million MovieLens Dataset" from http://www.grouplens.org/.
- 3. Unpack the archive and copy movies.dat and ratings.dat to
- trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/
- under the Mahout distribution directory.
- 4. Navigate to the directory where you unpacked the Mahout distribution, and navigate
- totrunk.
- 5. Runmvn install, which builds and installs Mahout core to your local repository
- 6. cd taste-web
- 7. cp ../examples/target/grouplens.jar ./lib
- 8. Edit recommender.properties and fill in therecommender.class:
- recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLe
- 9. mvn package
- 10.mvn jetty:run-war. You may need to give Maven more memory: in a bash shell,
- export MAVEN_OPTS=-Xmx1024M
- 11.Get recommendations by accessing the web application in your browser:
- http://localhost:8080/RecommenderServlet?userID=1
- This will produce a simple preference-item ID list which could be consumed by a client
- application. Get more useful human-readable output with the debug parameter:
- http://localhost:8080/RecommenderServlet?userID=1&debug=true
- Incidentally, Taste's web service interface may then be found at:
- http://localhost:8080/RecommenderService.jws
- Its WSDL file will be here...
- http://localhost:8080/RecommenderService.jws?wsdl
- ... and you can even access it in your browser via a simple HTTP request:
- .../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实现协同过滤算法相关推荐
- 推荐系统-协同过滤算法简介简化版实例
必须先忏悔一下太久没记录学习轨迹,最近感觉脑子里一团浆糊,搞得自己非常难受,自信心也是被严重摧毁.训斥自己必须要保持记录的习惯,因为这不仅是对知识的整理,更让你知道其实你知道的很多! 因为刚结束了一个 ...
- 协同过滤算法 R/mapreduce/spark mllib多语言实现
用户电影评分数据集下载 http://grouplens.org/datasets/movielens/ 1) Item-Based,非个性化的,每个人看到的都一样 2) User-Based,个性化 ...
- 推荐系统之基于邻域的算法-------协同过滤算法
基于邻域的协同过滤主要分为两类,基于用户的协同过滤和基于物品的协同过滤.前者给用户推荐和他兴趣相似的其他用户喜欢的物品,后者则是推荐和他之前喜欢过的物品相似的物品. 基于用户的协同过滤算法 这里介绍基 ...
- 基于Spark MLlib平台的协同过滤算法---电影推荐系统
协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析 一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,协同过滤算法按照数据使用 ...
- 探秘推荐引擎之协同过滤算法小综述
数学大神.统计学大神和数据挖掘推荐大神请关注. 一.数学期望的理解 早些时候,法国有两个大数学家,一个叫做布莱士·帕斯卡,一个叫做费马.帕斯卡认识两个赌徒,这两个赌徒向他提出了一个问题.他们说,他俩下 ...
- Apache Mahout基于商品的协同过滤算法流程分析
最近使用mahout的itemBase协同过滤算法,研究了下他的源码,记录如下,以备后忘-- 其算法实现大致分四个主要的部分: 1.将输入数据转化成矩阵 2.计算相似性 3.还是转化数据格式,为计算预 ...
- (三)协同过滤算法之基于物品的推荐算法python实现
一.背景介绍 互联网的迅猛发展将人类带入了信息社会和网络经济时代,信息化影响到了生活的方方面面.但是随着互联网产业的扩大,为用户提供更多选的同时也带来了筛选与推荐的难题.于是便提出了推荐算法帮助用户快 ...
- spark MLlib平台的协同过滤算法---电影推荐系统
又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实 ...
- [机器学习] 推荐系统之协同过滤算法(转)
[机器学习]推荐系统之协同过滤算法 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题. 1. 什么是推荐算法 推荐算法最 ...
最新文章
- 参加前端培训主要学习什么语言
- SAP MM MB5T可以用于查询在途库存
- 一名大神的github
- 相关子查询 与非相关子查询
- 账号 linux_Linux入门之UID和GID(用户ID和组ID)
- Deltix Round, Spring 2021 E. Crypto Lights 组合数学 + 推公式
- php 大型系统开法流程图,有一个php项目源码,如何搞清楚执行过程?画出其流程图...
- document.write()
- 魅族16s安兔兔跑分揭晓:在优化中不断提高
- 微课|中学生可以这样学Python(5.8.1节):使用切片访问列表元素
- 您无权查看或编辑目前的权限设置;但是,您可以取得所有权或更改审核设置
- 常用PDF文档开发库
- 宾馆客房管理系统-vue前端开发
- 注册gmail账号,手机无法接受验证码的问题
- 你可能不知道,你登曾是个气喘小胖子,靠努力逆袭完成梦想
- c盘压缩卷压缩不了怎么办 c盘压缩卷只能压缩一半的解决方法
- BingObjectnessCVPR14源码编译环境由vs2012+64位转换为vs2012+32位机过程
- 浅谈产业界与学术界的合作研究
- c语言国际编码标准统一编码,88、国际C语言混乱代码大赛-2020.03.11
- 怎样存钱力最大c语言,C语言问题 、//14.怎样存钱利最大 //假设银行整存整取存款不同期限的 月息利率 分别为: 0.63% 期限=1年 0....