一、
http://www.open-open.com/lib/view/open1372168198150.html
Myrrix是一个完整的、实时的、可扩展的集群和推荐系统,基于Mahout实现。
主要架构分为两部分:服务层:在线服务,响应请求、数据读入、提供实时推荐;计算层:用于分布式离线计算,在后台使用分布式机器学习算法为服务层 更新机器学习模型。Myrrix使用这两个层构建了一个完整的推荐系统,服务层是一个HTTP服务器,能够接收更新,并在毫秒级别内计算出更新结果。
服务层可以单独使用,无需计算层,它会在本地运行机器学习算法。
计算层也可以单独使用,其本质是一系列的Hadoop jobs。
Myrrix优点
1.No Ratings
Myrrix提供了一个广义的模型,可以处理任何事件,不止是评分,还可以是点击、浏览等。
2.Cold Start
Myrrix基本上解决了用户冷启动问题,当用户第一个行为数据进入Myrrix后推荐就会生成。
3.Temporary Users
Myrrix提供了特殊的支持为游客进行推荐。
4.Non-numeric Data
Myrrix中不用再像Mahout中那样硬性规定userID或itemID必须是数字,userID也可以用字符串表示,例如“Jane”。
5.Privacy & Security
Myrrix中可以不用将真实的用户或物品数据发送给服务端,代替做法客户端可以发送不透名的散列。
Myrrix功能
1.客户端功能可以通过MyrrixRecommender接口实现类对用户进行推荐,方法如下:
setPreference userID itemID [value]
removePreference userID itemID
ingest csvFile.csv(.gz|.zip) [csvFile2 ...]
estimatePreference userID itemID1 [itemID2 ...]
recommend userID
recommendToAnonymous itemID1 [itemID2 ...]
mostSimilarItems itemID1 [itemID2 ...]
similarityToItem toItemID itemID1 [itemID2 ...]
recommendedBecause userID itemID
refresh
isReady
getAllUserIDs
getAllItemIDs
getNumUserClusters
getNumItemClusters
getUserCluster n
getItemCluster n
2.服务层API
与客户端API相对应:
Set / Add Preference
Remove Preference
Ingest
Set User Tag
Set Item Tag
Refresh
Ready
Recommend
Recommend To Many
Recommend To Anonymous
Most Similar Items
Similarity To Item
Get # User Clusters
Get # Item Clusters
Get User Cluster
Get Item Cluster
Estimate
Estimate For Anonymous
Because
Most Popular Items
Get All User IDs
Get All Item IDs
二、
http://my.oschina.net/toeoso/blog/101443
偶然在google看到推荐系统。
Myrrix:基于mahout做的一个推荐系统。是有mahout的作者Sean Owen做的
于是去官网下载demo学习下。
然后按照 http://myrrix.com/quick-start/ 上面说的弄。
1,下载一个单机版本的
http://myrrix-recommender.googlecode.com/files/myrrix-serving-0.9.jar
2,启动 sudo java -Xmx512m -jar myrrix-serving-x.y.jar
我是debian系统。正好用,会占用80端口,必须用sudo。没有错误信息说明启动成功。
启动的其他参数:http://myrrix.com/documentation-serving-layer/
开始一头雾水,不知道怎么用:启动界面如下:
仔细看queckstart,才知道要下载demo数据。
http://dom2bevkhhre1.cloudfront.net/audioscrobbler-data.subset.csv.gz
然后在 /ingest 这个后面有一个上传按钮。经过几分钟后数据导入。cpu狂转。
3,数据查询。
我本机是查不到用户推荐的。但其他的可以查询下:
感慨,界面做的真是非常的精简阿。。
这个接口就返回了id和相似度两个数据呢!![[599,0.001297476],[1000028,0.0012238749],[1198,0.0012229452],[1006612,0.0012176759],[189,0.0011773851],[1329,0.0011433166],[1001909,0.0011263272],[831,0.0011136419],[1616,0.0011055669],[1207970,0.0010956447]]
查询接口: http://localhost/recommendToAnonymous/1394/
匿名推荐。貌似速度还是灰常快呢。
4.下载源代码分析.
一共分为 5 个小项目或jar包。
common online online-local web client
其中common是基础包,很小很精湛,需要依赖很少的jar包:
commons-math3-3.1.jar guava-13.0.jar jewelcli-0.8.3.jar mahout-core-0.7.jar slf4j-api-1.7.2.jar slf4j-jdk14-1.7.2.jar
web是本地运行的展示界面。启动web需要tomcat。修改module_web.xml 里面的tomcat路径
就可以启动了
ant artifact.web-local
具体其他代码以后再学习分析。