Skip to content
forked from lgrcyanny/Minion

Minion is a recommendation engine based on multi agent platform Jadex and Mahout

Notifications You must be signed in to change notification settings

codeaudit/Minion

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minion

Minion is a personalized recommendation engine based on multi agent platform Jadex. It's kind of a creative way to build recommendation engine. The Recommendation algorithm is the classic collobrative filtering algorithm based on Mahout.

Multi Agents

The Minion system consists of 8 agents, all of them are built with the BDIAgent, BDI is Belief, Desire(Goal) and Intention(Plan).
Multi Agent System(MAS) is different from object-oriented system, which is usually single Thread and based on passive call. MAS system is concurrent, and each Agent is intellent, sociality, autonomy and focus on its BDI. Based on Multi Agent, the recommendation engine can be more personalized.
Meanwhile, Agent Oriented programming model is a creative method, the system can be more loose coupling.

The Agents in the Minion system:

  • UserBDI
    Provide a simple UserInterface to get user input and behaviors, make request to RecommenderBDI to get Recommended items.
  • RecommenderBDI
    Controll the whole process of generating recommendations. Make use of the services provided by DataMiningBDI, SearchBDI and RecommendationBuildBDI.
  • DataMiningBDI
    Make Request to StrategyBDI to get algorithm strategy. If strategy is UserCF, then request UserCFBDI to do DataMining job, else if is ItemCF, request ItemCFBDI to do datamining job.
  • StrategyBDI
    Make algorithm strategy based on the self similarity of the items which the user has rated. Now the self similarity is calcuated by stadard deviation.
  • ItemCFBDI
    Data mining with ItemCF algorithm.
  • UserCFBDI
    Data mining with UserCF algorithm.
  • SearchBDI
    Since the Recommended Items generated by DataMiningBDI is not detail enough. The SearchBDI search Database to generated details about the recommended items.
  • RecommendationBuildBDI
    Build recommendation results for Display.

BTW, these agents is communicated with active components using service interface with goal delegation.
See more about the mechanism on Jadex Tutorial

Related Technology

  1. Jadex BDI Version 3
  2. Apache Mahout
  3. MySQL
  4. Maven
  5. J2SE 1.6

The Data Set

The Minion system adopts the MovieLens 1M dataset.

Installation

The following steps is available for MacOS or Linux system.

1.git clone https://github.com/lgrcyanny/Minion

2.Install MySQL

3.Download MovieLens 1M dataset

4.Create database movielens
Import the movielens.sql into database:

$ mysql -u root -proot movielens < movielens.sql

5.Import the 1M data into database

$ mysql -u root -p
mysql>  load data local infile 'ratings.dat' into table tbl_ratings fields terminated by '::'  enclosed by '' lines terminated by '\n' (userid, movieid, rating, timestamp);
mysql>  load data local infile 'movies.dat' into table tbl_movies fields terminated by '::'  enclosed by '' lines terminated by '\n' (movieid, title, genres);
mysql>  load data local infile 'users.dat' into table tbl_users fields terminated by '::'  enclosed by '' lines terminated by '\n' (userid, gender, age, occupation, zipcode);

6.Download [Eclipse IDE for Java EE DevelopersEclipse IDE for Java EE Developers](http://www.eclipse.org/downloads/)

7.Run maven build on Minion project, then all dependencies will be downloaded automatically.

8.Run Minion Application
Open Run configurations, choose project: mas-recomm-engine, Main class jadex.base.Starter

9.After the Jadex Control Center(JCC) opened, add the classpath which is like "mas-recomm-engine-0.0.1-SNAPSHOT.jar"

10.Start "RecommendationService.application.xml"

The installation is complicated, good luck and be careful.

About

Minion is a recommendation engine based on multi agent platform Jadex and Mahout

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%