[ J’avais envie d’envoyer ce message par mail à mes anciens collègues du laboratoire de recherche Personalization and Knowledge Lab de Motorola mais je me suis dit que ça pourrait inspirer d’autres personnes alors je le poste sur mon blog… ]
Salut les ex-PKLers…
J »ai une idée tordue et j’aimerais avoir votre avis à son sujet, si vous avez le temps et que le c½ur vous en dit… C’est un peu long, je vous préviens, on ne se refait pas…
La finalité de mon idée est de faire bénéficier certaines associations humanitaires (ou d’autres organismes d’intérêt général) des possibilités de prédiction et de recommandation offertes par les technos du machine learning.
La raison pour laquelle je réfléchis à ce sujet est triple :
- le machine learning, c’est vachement rigolo et ça me manque…
- il y a une grosse SSII qui me propose des informaticiens mais uniquement si c’est sur des projets ayant une dimension plutôt innovante sur le plan scientifique,
- je rêve de trouver un moyen d’utiliser mes notions de machine learning pour des projets humanitaires ou d’intérêt général.
Pour avoir encore un peu de contexte, mes sources d’inspirations, pour cette idée, sont :
Mon idée est de trouver un moyen pour faire travailler de nombreux salariés de SSII en intercontrat sur la production de services de prédiction/recommandation, pour des ONG, via une plate-forme conçue à cet effet. Ma question est : est-ce faisable et si oui comment ?
Autrement dit, peut-on abaisser la « barrière à l’entrée » pour permettre à des informaticiens non spécialistes du machine learning et qui ont peu de temps à consacrer à ce projet, de contribuer de manière utile pour produire à plusieurs un service de prédiction/recommandation ?
Autrement dit encore et avec quelques détails en plus : en supposant que j’ai chaque jour 20 informaticiens en intercontrat à ma disposition, que chacun reste sur le projet sur une durée de 2 à 5 semaines, est-ce que je peux utilement les faire travailler via une plate-forme conçue à cet effet pour produire un service de prédiction/recommandation ? Est-ce que les résultats produits risquent de converger très rapidement (en 1 ou 2 mois) vers un certain niveau de qualité médiocre et ne jamais en décoller pendant le reste de l’année ? Ou bien est-ce que je peux espérer, en les faisant travailler de manière adéquate, produire une progression qui se poursuive pendant 1 an sur le même dataset ? jusqu’à obtenir des prédictions de qualité acceptable ?
Là où mon idée commence à devenir tordue, c’est que les informaticiens en question n’ont aucune compétence en machine learning. Ça va de l’analyste-réalisateur mainframe senior au spécialiste du module SAP dédié à la comptabilité des amortissements des sociétés de transports, en passant par le développeur J2EE junior et l’administrateur réseau Cisco. Comment faire travailler ensemble sur ce projet une foule d’informaticiens non spécialisés en analyse de données ?
Or, à la fois dans le Netflix prize et dans les prix de kaggle, il semble y avoir comme un leitmotiv :
- bien sûr, la qualité et la taille du dataset d’origine est absolument essentielle,
- au final, c’est l’approche « ensemble learning » qui semble marcher le mieux,
- les types d’algorithmes à mettre dans cet ensemble (réseaux de neurones, classifieurs bayésiens, ou autres) n’importent pas tant que ça, et il y a des algorithmes généralistes assez robustes qui donnent des résultats souvent pas trop mauvais (les decision trees mis en random forests par exemple), l’important c’est d’avoir une bonne diversité d’algorithmes et de paramétrage de ces algorithmes,
- la différence entre les gagnants se fait en grande partie sur leur capacité à traiter les données en amont de ces algorithmes : pour en extraire des indicateurs et des paramètres qui seront pertinents pour les algorithmes (normalisation, moyennage, discrétisation, combinaison de données, réduction/sélection des données, dérivation des données éventuellement en faisant intervenir des jeux de données de référence supplémentaires, etc.)
- pour avoir de bonnes intuitions quand aux enrichissements/dérivations/réductions à apporter au dataset en amont des algorithmes d’apprentissage, une certaine connaissance du métier ou du domaine fonctionnel dont parlent les données peut aider, mais ce n’est pas indispensable et une absence de connaissance du métier peut être partiellement compensée par la mise en place de bonnes visualisations de ces données.
Résumé de l’approche qui est sensée marcher le mieux : Bon dataset => Visualisation inspirantes => Nombreuses et diverses dérivation ou réductions => Divers algos d’apprentissage => Ensemble.
Est-ce que ce que je dis là vous semble plutôt vrai ? ou est-ce que le démon se cache dans le détail de mes erreurs ?
En continuant sur cette lancée, je me dit que des informaticiens qui ne sont pas des « data scientists » mais ont 3 ou 4 semaines à consacrer à ce type de problèmes pourraient commencer par apprendre à produire des visualisation du jeu de données pour chercher des intuitions quant à la manière dont il faudrait l’enrichir (point 5 ci-dessus). Ensuite, ils pourraient écrire des petits scripts dans le langage de leur choix pour enrichir le dataset avec des données dérivées (point 4 ci-dessus) ou pour en réduire la dimension en sélectionnant certaines de ces données. Leur travail s’arrêterait là.
Ensuite, une batterie pré-définie de quelques algorithmes plutôt pas mauvais en général pourrait mouliner ces datasets enrichis et, en mettant le tout dans un Ensemble, fournir des résultats pas trop médiocres ? En ayant un nombre et une diversité suffisamment grands de contributeurs, en les faisant partager leurs intuitions via une bonne animation en ligne (rencontres, discussions, forum, wiki,…) et en les faisant travailler avec les bons outils collaboratifs (partage de code, …), qu’est-ce que ça donnerait ?
Autrement dit, est-ce qu’on peut compenser une absence d’expertise en machine learning par :
- une population suffisamment grande et diverse d’informaticiens non experts et ne pouvant rester plus d’1 mois ou 2 sur le sujet,
- et une plate-forme de machine learning bien pensée.
Est-ce que, ainsi, pour un dataset donné et moyennant un travail initial de quelques semaines pour mettre en place la plate-forme puis pour la « régler » pour ce dataset, je pourrais faire utilement travailler pendant un an 20 informaticiens disponibles chacun pour une durée de 2 à 6 semaines ?
Ou bien est-ce que je ne fais qu’énoncer le paradoxe du singe savant ?
Voila. Si jamais cela inspire quelqu’un, qu’il réagisse en commentaire SVP !