Loïc, membre de la communauté de blogueurs JobProd. Ne vous êtes-vous jamais demandé comment Facebook arrivait si bien à vous suggérer des amis et à les reconnaître sur vos photos ? Comment Google trouve toujours ce que vous cherchez et filtre quasiment parfaitement vos spams ? Comment Amazon vous suggère toujours le bon produit ? Ou comment Spotify vous recommande des titres que vous aimez ?
Je cherche un job dans lequel je me sens bien maintenant !Tous ces mécanismes utilisent la même botte secrète : le Machine Learning.
Cette discipline des mathématiques appliquées (à l’informatique) est en vogue dans la Silicon Valley à tel point que le cours de la fameuse Université de Standford sur le sujet est tout simplement le cours le plus suivi (en terme de nombre d’étudiants) en 2013.
Mais outre ces domaines d’application, on retrouve le Machine Learning derrière les mot « Big Data », les technologies « Hadoop », le « MapReduce », des mots très à la mode et à la pointe en ce moment.
Une histoire d’apprentissage par l’expérience
On regroupe sous le terme Machine Learning un ensemble d’algorithmes qui apprennent comment effectuer une certaine tâche (reconnaître un visage, suggérer un ami, catégoriser un produit, détecter un spam, …)
Pourquoi ?
Et bien, il existe de nombreux algorithmes pour résoudre divers problèmes. Par exemple, le fameux algorithme A* qui permet de trouver le chemin le plus court dans une graphe (très utilisé dans les jeux vidéos), le QSort pour effectuer un tri rapide (très utilisé tout court). Ils sont déterministes et fourniront toujours un résultat identique pour les mêmes entrées.
Mais ces algorithmes, bien que très efficaces ne résolvent que des problèmes « simples » (toute proportion gardée). Si vous voulez écrire un algorithme pour reconnaître le visage de quelqu’un sur une photo, vous ne pourrez pas utiliser les mêmes méthodes que pour en écrire un pour trier une liste de nombres ou trouver un chemin dans un graphe.
Les mathématiciens et les informaticiens ont alors eu une idée. Plutôt que de trouver un algorithme pour résoudre un problème puis de l’implémenter dans un langage informatique quelconque, pourquoi n’apprendrions-nous pas à un ordinateur a trouver un algorithme lui même à partir des données pour résoudre un problème. Le Machine Learning était né.
Le Machine Learning c’est donc apprendre des données qui nous entourent, pour en extraire des tendances et ainsi faire des prédictions sur le futur.
Et des données, ce n’est pas ce qu’il manque. Depuis l’invention d’internet, des milliards de données sont récoltées, comme des clics et des visites de page, des tweets, votre humeur sur Facebook mais aussi des données issues de capteurs connectés : température ou données médicales mais aussi accéléromètre, magnétomètre ou GPS de son smartphone. Le Machine Learning est là pour les traiter et en extraire des informations utiles mais pas n’importe comment.
Je cherche un job dans lequel je me sens bien maintenant !A chaque problème ses algorithmes !
On trouve deux grands « types » d’algorithmes
- Les algorithmes dit de supervised learning
- Et ceux dit d’unsupervised learning
L’idée d’un algorithme supervisé est que l’on va apprendre à un ordinateur quelque chose à partir de données alors qu’avec un algorithme non supervisé, on va laisser la machine apprendre toute seule à résoudre un problème et trouver l’algorithme à partir des données.
Supervised learning
On distingue deux familles classiques de problèmes supervisés suivant ce que l’on cherche comme résultat.
Si on vise à prédire une valeur discrète, on parle de problème de classification. C’est le cas des problèmes suivants :
- Un email est il un spam (valeur 1 ou true) ou un ham (valeur 0 ou false) ?
- Cette photo représente mon ami Pierre, Paul ou Jack ?
Si on veut prédire une valeur continue, on parle de problème de regression. Par exemple,
- Evaluer le prix du loyer d’un appartement en fonction de plusieurs paramètres (surface, quartier, ancienneté), …
Unsupervised learning
Les algorithmes dit non supervisés permettent d’extraire une information depuis des données sans pour autant connaître cette information.
Le problème le plus connu est celui du clustering. Un bon exemple est le tagging automatique de document. Dans ce problème, on essaye de regrouper les documents similaires pour pouvoir ensuite trouver des tags, ceux ci n’étant pas connus à priori. Dans ces problèmes on cherche donc à trouver des similarités entre des données pour pouvoir les regrouper en cluster.
Je cherche un job dans lequel je me sens bien maintenant !Comment implémenter un algorithme de Machine Learning
Mais alors quelle est la logique derrière ces algorithmes, me direz vous ?
Prenons l’exemple suivant :
Je viens de décrocher un poste à Boston (quelle chance !) et je dois trouver un nouveau logement. Il ne me reste plus qu’à négocier mon salaire avec mon futur employeur. Étant français, je ne me rends pas bien compte du prix des appartements Américains qui dictent en partie le salaire que je vais demander.
J’ai 4 enfants il me faudrait donc un appartement entre 5 et 6 chambres pour les enfants, ma femme et moi. J’aimerais bien un bureau pour pouvoir faire du télétravail.
Il s’agit en fait d’un problème de regression car le prix d’un logement est une valeur continue. Il est cependant simplifié car ce prix ne dépend pas uniquement du nombre de pièces mais cela permet de montrer le fonctionnement des algorithmes de supervised learning.
Pour résoudre mon problème, je parcours internet à la recherche d’informations. Heureusement, il existe une source de données présentant les prix des logements à Boston en fonction de divers paramètres assez variés (nombre de pièces mais aussi criminalité ou impôts locaux).
Je trace alors le graphe suivant montrant le prix en fonction du nombre de pièces à partir des données que l’on a récupéré. J’obtiens le résultat suivant :
On peut voir sur ce graphe qu’une tendance se dégage. On peut même tracer une droite qui passe « à peu près » au milieu de ces points.
En fait, il est possible de calculer mathématiquement cette droite : il s’agit de la droite la plus proche de tous les points du graphe. C’est ce que l’on appelle en mathématiques une régression linéaire (d’où le terme regression dans le nom de la catégorie du problème).
On obtient la droite suivante :
Une fois cette régression effectuée, on voit qu’il est alors aisé d’estimer une fourchette de prix pour mon appartement.
Si l’on prend les valeurs associées à 5 et 6 sur notre droite, on obtient la fourchette de prix suivante : entre 110 000 et 200 000 dollars.
J’ai maintenant toutes les armes en mains pour réussir ma négociation, grâce aux maths et au Machine Learning.
Bien entendu, il s’agit d’un problème simplifié mais le principe est là. Il est aussi possible d’effectuer des régressions non linéaires (c’est à dire approcher le nuage de points par une courbe et non par une droite) et de faire ça sur plus de 1 unique paramètre (ou features). Ces paramètres pouvant être aussi divers que la surface, le nombre de pièces, un indice de criminalité ou la présence ou non d’une sur l’océan Atlantique. C’est toute la force du Machine Learning.
Je cherche un job dans lequel je me sens bien maintenant !De nouveaux jobs passionnants dans les années à venir
Les données et leur compréhension sont l’enjeu des prochaines années. Plusieurs études prédisent un manque cruel de ressources dans ce domaine pour les années à venir. Si ce monde vous intéresse c’est le moment d’investir pour pouvoir décrocher votre job de rêve dans quelques années !
Ressources
Bien que largement implémenté dans les Startups à succès, le Machine Learning est encore un domaine assez universitaire. La plupart des ressources sont tirés d’articles de doctorants et sont quasiment toutes en anglais.
Les deux ressources que je recommande sont les suivantes :
- Machine Learning, cours CS229 de Standford par Andrew Mg, disponible gratuitement sur Coursera.
- Machine Learning : the Art and Science of Algorithm that Make Sense of Data, Peter Flach, livre édité par Cambridge.
Par ailleurs, si le monde de la data science vous intéresse et que vous voulez mesurer vos performances par rapports a d’autres personnes, faites un tour sur Kaggle. Ce site propose des concours avec de l’argent a la clé mais permet aussi d’obtenir des entretiens dans des entreprises cherchant des expert en Machine Learning (Qui a dit facebook ?)
Tout comme Loïc, vous êtes un passionné de développement ?
Alors, que vous soyez simplement curieux de rencontrer des entreprises très techniques et humaines, ou à la recherche de belles opportunités, nous vous invitons à cliquer ci-dessous !
Loïc
Développeur passioné par les technologies du web et tout l’écosystème qui en découle, je cherche en permanence à améliorer mes compétences par tous les moyens possibles : exploration de nouveaux langages, frameworks ou librairies, de nouvelles architectures logicielles ou de nouvelles façons de travailler et ce toujours dans un but : livrer du logiciel de la plus grande qualité possible.
Professionnellement, je suis développeur web Ruby on Rails depuis 2010.
________________________________________
Ma / mes techno(s) de prédilection : Ruby, Rails
Le site incontournable : github.com
Une devise : « Screw it, let’s do it », citation de Richard Branson
Où me contacter : via Twitter @lminaudier
Pour un appartement de 6 chambres, je regarde le prix de tous les appartements de 6 chambres et j’en fais la moyenne. J’ai une très bonne idée de mon budget logement auprès de mon employeur, sans jamais avoir entendu parler de machine learning…. Ou alors je suis très fort!