基于Mahout的开源推荐系统:Myrrix
jopen
11年前
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