Mahout tester框架

 

Tester介绍

Mahout是Apache下的一个Java语言的开源大数据机器学习项目,与其他机器学习项目不同的是,他的算法多事是MapReduce方式,可以在Hadoop上运行,并行处理大规模数据。

协同过滤是在mahout里是由一个叫taste的引擎提供的,提供两种模式一种是以jar包形式嵌入到程序里面在进程内运行,另外一种是MapReduce形式在Hadoop上运行。这两种形式使用的算法是一样的,配置也一样。Mahout tester框架

  1. Datamodel:用户喜好信息的抽象接口,他的具体实现支持从任意类型的数据源抽取用户喜好信息。Taste默认提供JDBCDataModel和FileDataModel,分别支持从数据库和文件中读取用户的喜好信息。
  2. UserSimilarity和ltemSimilarity:前者用于定义两个用户间的相似度,他是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的邻居(与用户口味相似的用户),后者类似的计算内容之间的相似度。
  3. UserNeighborhood:用于基于用户的推荐方法中,推荐内容是基于找到与当前用户喜好相似的“邻居用户”的方式产生的。UserNeighborhood定义了确定邻居用户的方法,具体实现一般是基于UserSimilarity计算得到的。
  4. Recommender:是推荐引擎的抽象接口,taste中的核心组件。程序中,为它提供一个DataModel,他可以计算出对不同用户的推荐内容。实际应用中,主要使用它的实现类GenericUserBasedRecommender或者GenericitemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎。

Taste自带的推荐器

Item-based:

      GenericitemBasedRecommender

      GenericBooleanPrefltemBasedRecommender

      KnnltemBasedRecommender

User-based:

      GenericUserBasedRecommender

      GenericBooleanPrefUserBasedRecommender

Model-based:

      SlopeOneRecommender

      SVDRecommender

      TreeClusteringRecommender

ItemAverageRecommender

      ItemUserAverageRecommender

推荐案例

分析:

Mahout tester框架

基于用户推荐

Mahout tester框架

 

 

Public class UserItemRecommend{

      Public static void main(String[] args){

            //创建数据模型

            DataModel dm = new FileDataModel(new File(“位置”));

            //使用User来推荐

            UserSimilarity us = new PearsonCorrelationSimilarity(dm);

            UsrNeighborhood unb = NearsetneighorClusterSimilarity(3,us,dm);

            //推荐

            Recommender re = new GenericUserBasedRecommender(dm,unb,us);

            //显示结果

            List<RecommenderItem> List = re.recommend(1,1);

            For(RecommendedItem recommendItem:list){

            System.out.println(recommendItem);

}

}

}

Mahout tester框架

基于商品的推荐

Mahout tester框架

Mahout tester框架

基于SlopeOne推荐

Mahout tester框架

Mahout tester框架