hello mahout

Mahout是一个机器学习,推荐引擎的开源软件。官网地址: http://mahout.apache.org/

  

    推荐原理可以参考:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html

 1.  推荐原理

基于用户的 CF(User CF)(Collaborative Filtering, 简称 CF),

基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图 2 给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 - 用户 C,然后将用户 C 喜欢的物品 D 推荐给用户 A。


 

 

  首先从官网上下载mahout的发布包,当前版本是0.7.

 

  2. 创建用户喜好文件

  参考mahout in action, 创建一个用户(User)和商品(Item)的喜好文件intro.csv, 一行一条:

Csv代码   收藏代码
  1. 用户id,ItemID, 喜好程度  
  2. 1,101,5.0  #用户1101的打分为5.0  
  3. 1,102,3.0  
  4. 1,103,2.5  
  5.   
  6. 2,101,2.0 #用户2101的打分为2.0  
  7. 。。。  

   喜好关系见图,具体见附件

 

 

 

  3. 创建工程

   创建一个pom工程的文件,在pom.xml中添加依赖
  

Xml代码   收藏代码
  1. <dependency>  
  2.     <groupId>org.apache.mahout</groupId>  
  3.     <artifactId>mahout-core</artifactId>  
  4.     <version>0.7</version>  
  5.     <type>jar</type>  
  6.     <scope>compile</scope>  
  7. </dependency>  

 

主程序:

 

Java代码   收藏代码
  1. public class RecommenderIntro {  
  2.   
  3.     /** 
  4.      * @param args 
  5.      * @throws IOException  
  6.      * @throws TasteException  
  7.      */  
  8.     public static void main(String[] args) throws IOException, TasteException {  
  9.           
  10.         //Load the data file  
  11.         DataModel  model = new FileDataModel(new File("src/main/resources/intro.csv"));   
  12.            
  13.         UserSimilarity  similarity = new PearsonCorrelationSimilarity(model);    
  14.         UserNeighborhood   neighborhood = new NearestNUserNeighborhood (2, similarity, model);    
  15.        
  16.         //reate the recommender engine   
  17.         Recommender   recommender = new GenericUserBasedRecommender(    
  18.              model, neighborhood, similarity);    
  19.        
  20.         //For user 1, recommend 2 item  
  21.         List<RecommendedItem> recommendations =  
  22.              recommender.recommend(12);    
  23.        
  24.         for (RecommendedItem recommendation : recommendations) {    
  25.            System.out.println(recommendation);   
  26.         }   
  27.   
  28.     }  
  29.   
  30. }  

 

 4 运行结果输出:

Console代码   收藏代码
  1. RecommendedItem[item:104, value:4.257081]  
  2. RecommendedItem[item:106, value:4.0]


参考:http://rabbit9898.iteye.com/blog/1823729

          http://www.open-open.com/lib/view/open1383747461524.html


源码下载:http://download.csdn.net/detail/joeyon/7774789

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值