Profitez de l'apprentissage automatique avec Mahout sur Hadoop

"Mahout" est un terme hindi pour une personne qui monte un éléphant. L'éléphant, dans ce cas, est Hadoop - et Mahout est l'un des nombreux projets qui peuvent être installés au-dessus de Hadoop, bien que vous n'ayez pas toujours besoin de MapReduce pour l'exécuter.

Mahout met de puissants outils mathématiques entre les mains des simples développeurs mortels qui écrivent les InterWebs. Il s'agit d'un ensemble d'implémentations des algorithmes d'apprentissage automatique les plus populaires et les plus importants, la majorité des implémentations étant spécifiquement conçues pour utiliser Hadoop afin de permettre le traitement évolutif d'énormes ensembles de données. Certains algorithmes ne sont disponibles que sous une forme "série" non parallèle en raison de la nature de l'algorithme, mais tous peuvent tirer parti de HDFS pour un accès pratique aux données dans votre pipeline de traitement Hadoop.

[Sachez ceci dès maintenant à propos de Hadoop | Travaillez plus intelligemment, pas plus dur - téléchargez le Guide de survie des développeurs pour obtenir tous les conseils et tendances que les programmeurs doivent connaître. | Découvrez les nouveautés des applications métier grâce à la newsletter Technologie: Applications. ]

L'apprentissage automatique est probablement le sous-ensemble le plus pratique de l'intelligence artificielle (IA), se concentrant sur les techniques d'apprentissage probabiliste et statistique. Pour tous les geeks de l'IA, voici quelques-uns des algorithmes d'apprentissage automatique inclus avec Mahout: clustering K-means, clustering K-means flou, K-means, allocation de Dirichlet latente, décomposition de valeur singulière, régression logistique, Bayes naïfs et aléatoire les forêts. Mahout propose également des abstractions de plus haut niveau pour générer des «recommandations» (à la manière des sites de commerce électronique ou des réseaux sociaux populaires).

Je sais, quand quelqu'un commence à parler de l'apprentissage automatique, de l'IA et des coefficients de Tanimoto, vous faites probablement du pop-corn et vous revigorez, non? Moi non plus. Curieusement, malgré la complexité des mathématiques, Mahout dispose d'une API facile à utiliser. Voici un avant-goût:

//load our datafile somehow

DataModel model = new FileDataModel(new File("data.txt"));

ItemSimilarity sim = new LogLikelihoodSimilarity(model);

GenericItemBasedRecommender r = new GenericItemBasedRecommender(model, sim);

LongPrimitiveIterator items = dm.getItemIDs();

while(items.hasNext()) {

long itemId = items.nextLong();

List recommendations = r.mostSimilarItems(itemId, 10);

//do something with these recommendations

}

Ce que ce petit snip ferait est de charger un fichier de données, de parcourir les éléments, puis d'obtenir 10 éléments recommandés en fonction de leur similitude. Il s'agit d'une tâche courante de commerce électronique. Cependant, ce n'est pas parce que deux éléments sont similaires que je veux les deux. En fait, dans de nombreux cas, je ne veux probablement pas acheter deux articles similaires. Je veux dire, j'ai récemment acheté un vélo - je ne veux pas de l'article le plus similaire, qui serait un autre vélo. Cependant, d'autres utilisateurs qui ont acheté des vélos ont également acheté des pompes à pneus, donc Mahout propose également des recommandations basées sur les utilisateurs.

Les deux exemples sont des recommandations très simples, et Mahout propose des recommandations plus avancées qui prennent en compte plus de quelques facteurs et peuvent équilibrer les goûts des utilisateurs et les caractéristiques du produit. Aucun de ceux-ci ne nécessite un calcul distribué avancé, mais Mahout a d'autres algorithmes qui le font.

Au-delà des recommandations

Mahout est bien plus qu'une API de commerce électronique sophistiquée. En fait, d'autres algorithmes font des prédictions, des classifications (comme les modèles de Markov cachés qui alimentent la plupart de la reconnaissance vocale et linguistique sur Internet). Cela peut même vous aider à trouver des grappes ou, plutôt, à regrouper des choses, comme des cellules ... de personnes ou quelque chose pour que vous puissiez les envoyer ...

Bien sûr, le diable est dans les détails et j'ai passé sous silence la partie vraiment importante, qui est cette toute première ligne:

DataModel model = new FileDataModel(new File("data.txt"));

Hé, si vous pouviez demander à des geeks de maths de faire tout le travail et de réduire tout le calcul à la dizaine de lignes qui composent l'algorithme, nous serions tous sans travail. Cependant, comment ces données ont-elles été présentées dans le format dont nous avions besoin pour les recommandations? Être capable de concevoir la mise en œuvre de cet algorithme est la raison pour laquelle les développeurs gagnent beaucoup d'argent, et même si Mahout n'a pas besoin de Hadoop pour implémenter bon nombre de ses algorithmes d'apprentissage automatique, vous pourriez avoir besoin d'Hadoop pour mettre les données dans les trois colonnes simples recommandation requise.

Mahout est un excellent moyen d'exploiter un certain nombre de fonctionnalités, des moteurs de recommandation à la reconnaissance de formes en passant par l'exploration de données. Une fois que l'industrie aura terminé le grand déploiement de Hadoop, l'intérêt pour l'apprentissage automatique et peut-être l'IA en général explosera, comme l'a observé un commentateur perspicace de mon article Hadoop. Mahout sera là pour vous aider.

Cet article, «Profitez de l'apprentissage automatique avec Mahout sur Hadoop», a été initialement publié sur .com. Tenez-vous au courant des dernières nouvelles en matière de développement d'applications et lisez davantage sur le blog des développeurs stratégiques d'Andrew Oliver sur .com. Pour les dernières nouvelles de la technologie commerciale, suivez .com sur Twitter.