Mahout協同推薦簡單實例


    上篇文章介紹了協同過濾的安裝與配置,這篇找了幾個協同過濾的簡單例子,看一下

Mahout給我們提供的強大的協同過濾算法。需要新建一個基於Maven的工程,下面是

pom.xml需要導入的包。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mahouttest</groupId>
  <artifactId>mahouttest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>mahouttest</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>org.apache.mahout</groupId>
    	<artifactId>mahout-core</artifactId>
    	<version>0.8-SNAPSHOT</version>
    	<type>jar</type>
    	<scope>compile</scope>
    </dependency>
  </dependencies>

  這里我們導入的是最新的Mahout包,需要在本地的maven庫中安裝好。

首先我們需要准備好測試的數據,我們就用《Mahout  in action》中的例子:

1,101,5
1,102,3
1,103,2.5
2,101,2
2,102,2.5
2,103,5
2,104,2
3,101,2.5
3,104,4
3,105,4.5
3,107,5
4,101,5
4,103,3
4,104,4.5
4,106,4
5,101,4
5,102,3
5,103,2
5,104,4
5,105,3.5
5,106,4

具體對應的關系圖如下:

下面我們用Mahout中三種不同的推薦代碼來執行以下剛才給出的數據,看看Mahout中的推薦接口是

如何使用的。

1. 基於用戶的協同推薦的代碼:

DataModel  model =new FileDataModel(new File("data/intro.csv"));
UserSimilarity similarity =new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =new NearestNUserNeighborhood(2,similarity,model);
Recommender recommender= new GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){
	System.out.println(recommendation);
}

執行后的結果是:RecommendedItem[item:104, value:4.257081]

2. 基於Item的協同過濾的代碼:

DataModel  model =new FileDataModel(new File("data/intro.csv"));
ItemSimilarity similarity =new PearsonCorrelationSimilarity(model);
Recommender recommender= new GenericItemBasedRecommender(model,similarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){
    System.out.println(recommendation);
}

執行后的結果是:RecommendedItem[item:104, value:5.0]

3. SlopeOne推薦算法

DataModel  model =new FileDataModel(new File("data/intro.csv"));
Recommender recommender= new SlopeOneRecommender(model);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){
    System.out.println(recommendation);
}

執行結果是:RecommendedItem[item:105, value:5.75]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM