mix-it (apr 2011) - intelligence collective avec apache mahout
TRANSCRIPT
Intelligence Collective avec Apache Mahout
Classification, Regroupement, Recommandation
Speaker
Michaël Figuière
@mfiguiere
blog.xebia.fr
Search Engines NoSQL
DistributedArchitectures
Intelligence Collective
En quelques mots
• L’ensemble des utilisateurs constitue une intelligence
• Rendu immédiatement accessible par l’avènement d’Internet
L’intelligence collective d’un groupe est supérieure à la meilleure intelligence individuelle de ce groupe
En facilitant l’agrégation des données
Wikipedia
Le wiki agrège l’intelligence
collective des contributeurs
Google et le PageRank
PageRank agrège l’intelligence
collective des sites Web
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 !
Machine Learning
Machine Learning
Intelligence Artificielle
Machine Learning(Apprentissage Artificiel)
Le Machine Learning est un sous-ensemble de
l’Intelligence Artificielle
NoSQL, Recherche et Machine Learning
NoSQL, Machine Learning et Moteurs de Recherche
sont complémentairesMachineLearning
Moteurs deRechercheNoSQL
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
Clustering avec K-Means
AB
DE
F
C
Clustering avec K-Means
AB
DE
F
C
Centres de groupementplacés aléatoirement
Clustering avec K-Means
AB
C
DE
F
Les données sont rattachées au
centres le plus proche
Clustering avec K-Means
AB
DE
F
C
Les centres sont alors déplacés de
manière à réduire la somme des distances
Clustering avec K-Means
AB
DE
F
C
La donnée ‘C’ se retrouve alors rattachée au
premier centre
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, ...
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
Cherche à rendre le Machine Learning accessible
au plus grand nombre
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);
Classification avec Mahout
Trainingalgorithm
Trainingexamples
New data
Model
Model Decision
Copy
Clustering avec Mahout
ClusteringalgorithmDocuments List of
clusters
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
Cas d’usage d’un moteur de recherche
Un moteur de recherche
Search
Un moteur de recherche
SearchMyCustomer
Un moteur de recherche
SearchMyCustomer
Non Disclosure Agreement 12 days ago... MyCustomer agrees not to disclose any part of ...
2010 Sales Report 1 month ago... MyCustomer: 12 M€ with 3 deals ...
Phone Call 2 days agoCustomer: MyCustomer Time: 9:55am Duration: 13minDescription: Invoice not received for order #2354E
Document
Document
Phone Call
Pipeline d’indexation
Text Extractor
Lucene
PhoneCall
Analyzer
Analyzer
SearchIndex
Tika
Un moteur de recherche plus complexe
SearchMyCustomer
2010 Sales Report 1 month ago... MyCustomer: 12 M€ with 3 deals ...
Phone Call 2 days agoCustomer: MyCustomer Time: 9:55am Duration: 13minDescription: Invoice not received for order #2354E
Document
Phone Call
Sales Juridic Accounting
Pipeline d’indexation avec Mahout
Text Extractor
Lucene
PhoneCall
Analyzer
Analyzer
SearchIndex
Tika
Classifier
Classifier
Mahout
Pipeline de requête
Query
Results
Analyzer
SearchIndex
Lucene
Pipeline de requête avec Mahout
Basé sur les recommandations de
Mahout
Query
Results
Analyzer
Analyzer
CustomScoring
SearchIndex
Lucene
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
blog.xebia.fr