duchess france (nov 2011) - atelier apache mahout
TRANSCRIPT
Atelier Apache Mahout
Machine Learning pour les applications Java
22/11/2011 Michaël FiguièreJean-Baptiste Lemée
Speaker
Jean-Baptiste Lemee
@jblemee
java-freelance.fr
Agile NoSQL
Java, JS, Scala
Speaker
Michaël Figuière
@mfiguiere
blog.xebia.fr
Search Engines NoSQL
DistributedArchitectures
Machine Learning
Machine Learning
Intelligence Artificielle
Machine Learning(Apprentissage Artificiel)
Le Machine Learning est un sous-ensemble de
l’Intelligence Artificielle
La nature des données
Les données aléatoiressont par définition
imprévisibles !
La nature des données
Les données générées par les utilisateurs se
comportent généralement selon des patterns reconnaissables !
Principaux algorithmes de Machine Learning
• Recommandations
• Classification
• Clustering
Recommande des items à un utilisateur
Classifie automatiquement des documents en apprenant à partir d’un ensemble déjà classifié
Découvre automatiquement des groupements parmi un ensemble de documents
Recommandation - User based
Amazon suggère des articles
achetés par les clients similaires
Recommandation - Item based
Sur la page d’un article Amazon
suggère des articles
Similarités entre utilisateurs
A B D E FC
1 2
3
On constate ici que les utilisateurs 1 et
2 ont des goûts similaires
Exemples de cas d’usage de Recommandation
• Conseiller des items aux clients sur un site d’e-commerce
• Conseiller des fonctionnalités aux utilisateurs
• Filtrer et adapter le classement des résultats d’un moteur de recherche
Augmentation du chiffre d’affaire
La plupart des fonctionnalités sont méconnues
En se basant sur les clics des utilisateurs similaires, ...
Classification
Mails ‘classifiés’ en tant que spams par GMail
Exemples de cas d’usage de Classification
• Associer automatiquement des tags à des documents
• Extraire les documents suspicieux
Ensemble de tags définis manuellement ou depuis Wikipedia
Spams, documents corrompus, ...
Clustering
Sujets tendances découverts par Google News
Exemples de cas d’usage du Clustering
• Trouver les sujets principaux dans un ensemble de documents
• Découvrir des usages typiques des utilisateurs
News feeds, documents métiers, ...
Profilage des utilisateurs, ...
NoSQL, Recherche et Machine Learning
NoSQL, Machine Learning et Moteurs de Recherche
sont complémentairesMachineLearning
Moteurs deRechercheNoSQL
Apache Mahout
En quelques mots
• Implémentation d’algorithmes de Machine Learning en Java
• La plupart disponibles en version MapReduce
• Encore jeune, mais en croissance rapide
Collection d’algorithme en expansion
Utilisable avec de gros datasets
Démarré début 2009
Documentation
Aussi indispensable pour Mahout que l’est Lucene in Action pour Lucene !
Exemple de Recommendation
DataModel model = new FileDataModel(new File("data.csv"));
UserSimilarity simil = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, simil);
List<RecommendedItem> recommendations = recommender.recommend(1, 1);
Evaluation de la précision
Données utilisées pour le training
Données utilisées pour évaluer la précision del’algorithme
Ensemble des données disponibles
Conclusion
• Le Machine Learning apporte des fonctionnalités à forte valeur ajoutée
• Mahout est en croissance rapide et devient un bon choix pour les applications
• Les équipes fonctionnelles ne sont pas familières de ces technologies
Amélioration des revenus, de la productivité, de l’adoption
Intégration facile aux applications métier
Une collaboration avec les équipes techniques est requise
Questions / Réponses
?@mfiguiere
@jblemee