Conférence - Devoxx France - Vendredi 18 avril 2014
Vous n'avez pas un PhD de statistiques ou de mathématiques, pourtant vous rêvez de fonctions de recommandation pour votre site e-Commerce, de résultats de recherche plus pertinents sur votre catalogue produits, de catégoriser enfin vos utilisateurs pour plaire au marketing ?
Pas de panique ! Nous allons démystifier Mahout ainsi que les concepts qui se cachent derrière les termes “machine learning”, “classification”, “collaborative filtering”, “clustering”, etc.
Ceci avec des animations ludiques et décomplexées, d'exemples concrets illustrant une sélection d’algorithmes très pratiques.
2. @smramdani#attaquezlemahout
Qui suis-je ?
Tirez parti de la révolution numérique !
Hammed Ramdani
@smramdani
• Consultant chez Palo IT
• Architecte SI 2.0 et BigData
• Coach Agile
• Innovation Games trained
facilitator
3. @smramdani#attaquezlemahout
Ma société
Palo IT en quelques chiffres
+120
collaborateurs
40
grands comptes
+50%
croissance organique/an
5
bureaux
Tirez parti de la révolution numérique !
Grands Comptes
# Insufflez un esprit de Start-up
# Tirez parti de la révolution numérique
# Accélérez votre time-to-market
PME innovantes & Start-ups
# Challengez votre vision technologique
# Acélérez votre go-to-market
# Financez vos investissements
Fonds d’investissement
# Vérifiez la valeur et pérennité de vos investissements
# Transformez vos organisations et assets technologiques
Palo IT accompagne ses clients
tout au long du cycle de vie des projets
11. @smramdani#attaquezlemahout
Un peu de CF
Users
Items
Les données
Prédiction
Recommandation
CF Algos Résultats
Prédiction de la
préférence du
User Ui pour un
Item Ij
Proposition
des top X Items
préférés par
le User Ui
Ratings
Enrichissement Comportement
15. @smramdani#attaquezlemahout
youVaaS choisit le Mahout
•Couvre les 3C :
Collaboratif Filtring / Clustering / Classification
•Algorithmes bien testés et supportés
•Open Source en Licence Apache
•Scalable et calcul distribué (parallélisme) sur un cluster
Hadoop MapReduce
•Communauté active et très dynamique
•Java
•Extensible
22. @smramdani#attaquezlemahout
1. // Créer le modèle de données (DataModel)
2. DataModel model = new FileDataModel(new File("user-item-rating-dataset.dat"));
3. double threshold = 0.1d;
4. UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
5. UserNeighborhood neighborhood = new ThresholdUserNeighborhood(threshold, similarity, model);
6. // Créer un GenericUserBasedRecommender basé sur nos données
7. UserBasedRecommender recommender =
8. new GenericUserBasedRecommender(model, neighborhood, similarity);
CF basée sur les Users
Créer un UserRecommender à partir de nos données
23. @smramdani#attaquezlemahout
1. int userId = 1;
2. int combien = 5;
3. List<RecommendedItem> recommendationItems = recommender.recommend(userId, combien);
4. // Afficher la lists des recommandations pour ce userId
5. for (RecommendedItem recommendedItem : recommendationItems) {
6. System.out.print("Item : " + recommendedItem.getItemID());
7. System.out.println(" (taux : " + recommendedItem.getValue() + "/5)");
8. }
Interrogation
Afficher les résultats de recommandation
24. @smramdani#attaquezlemahout
-- Les top 5 recommandations pour tous les userId -----------------------------
User 1 : item:6 (valeur:1.5/5),
User 2 : item:4 (valeur:4.6/5), item:5 (valeur:3.6/5),
User 3 : item:1 (valeur:3.1/5),
User 4 : pas de recommandations
...
Et le verdict …
Que nous dit Mahout ?
26. @smramdani#attaquezlemahout
1. // Créer le modèle de données (DataModel)
2. DataModel model = new FileDataModel(new File("user-item-rating-dataset.dat"));
3. UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
5. UserBasedRecommender recommender = new GenericItemBasedRecommender(model, similarity);
6. int userId = 1;
7. int combien = 5;
8. List<RecommendedItem> recommendationItems = recommender.recommend(userId, combien);
9. // mais aussi
10. List<RecommendedItem> similarItems = recommender.mostSimilarItems(itemID, combien);
CF basée sur les Items
Créer un ItemRecommender à partir de nos données
27. @smramdani#attaquezlemahout
Les top 3 Items similaires pour le itemId 2 :
item:1 (valeur:0.96)
item:6 (valeur:0.69)
item:3 (valeur:-0.32)
Autres résultats …
Que nous dit Mahout ?
28. @smramdani#attaquezlemahout
Evaluez-vous !
•Un peu de data-science en mode agile ;-)
• Nettoyer,
• Tester,
• Comparer,
• Tuner,
• Optimiser
•Règle des 90% Apprentissage / 10% Test
•Calcul du score
•Calcul de la « précision » et du « rappel »
32. @smramdani#attaquezlemahout
Tous les produits
Précision et rappel
Précision =
Nombre de recommandations
Rappel ou « Recall » =
Nombre de préférences recommandées
Nombre de préférences
Nombre de préférences recommandées
Préférences Autres
Recommandations Précision
0 1
Rappel
0 1