Le feature engineering, futur du data scientist

Le feature engineering renvoie à l'ensemble des interventions effectuées sur les données brutes avant qu'elles ne soient prises en compte par un algorithme apprenant.

Tout projet de machine learning peut être décomposé, au moins dans ses grandes lignes, en cinq catégories : la formulation du problème à l'étude, l'obtention de données brutes propres (une étape de feature engineering pendant laquelle les données sont reformatées, traitées, enrichies ou calibrées), le choix et la mise en œuvre d'un algorithme de machine learning effectuant la tâche cible, enfin les mesures qualité, l'interprétation et la présentation des résultats sous une forme humainement digeste.

Si la richesse d'information contenue dans les données brutes est cruciale en termes d'impact sur la qualité finale des résultats, en pratique le data scientist en charge du projet n'aura que peu de latitude pour agir sur celles-ci. De son point de vue, le levier d'action principal est le feature engineering. Ainsi, et quitte à être un peu réducteur, on peut considérer le data scientist essentiellement comme un feature engineer.

Un pas de côté surprenant, certes, mais largement explicable par une analyse du nouveau paradigme de l’innovation.

Les données avant tout

Nous sommes dans l'ère du big data. Parmi les multiples acceptions de ce mot figure l'idée que les données sont riches. Riches d'informations que les technologies d'aujourd'hui, parmi lesquelles figure le machine learning, permettent de puiser ou d'exploiter. Toutefois ne nous y trompons pas : malgré la puissance croissante de ces algorithmes, due aux avancées théoriques et aux moyens de calculs toujours plus énormes, c'est d'abord et avant tout la qualité de la donnée en elle-même dont dépendra in fine la qualité des résultats (prévisions) obtenus. Les données doivent contenir le maximum d'éléments explicatifs et ces éléments sont parfois surprenants ou inattendus.

Le logiciel libre, terreau de l'essor du machine learning

Au départ, se trouvent les données brutes, puis, à l'autre bout de la chaîne de calcul se trouvent les algorithmes apprenants.

Devant le grand nombre de frameworks de qualité dédiés au machine learning et disponibles librement, le data scientist n'a que l'embarras du choix. D’ailleurs l'open source ambiant a une conséquence importante : les meilleurs algorithmes, les dernières avancées scientifiques publiées se retrouvent implémentées et disponibles quelques semaines après leur parution, parfois même avant, prêtes à l'utilisation ! Sans oublier, la recherche académique, les entreprises spécialisées ou les grands groupes améliorent sans cesse l’existant pour conserver un avantage concurrentiel. Toutefois au-delà de cette course aux algorithmes, qui ne représente pas le métier d’un data scientist prévisionniste aujourd’hui, les gains essentiels garantissant la réussite d’un projet sont à chercher ailleurs. C’est précisément là que le feature engineering entre en jeu.

La nécessaire articulation entre les algorithmes et les données brutes

Les données brutes, telles que l'algorithme apprenant les reçoit (c’est-à-dire transformées et prémâchées), sont appelées features. Plus un algorithme est « simple », plus il sera sensible à leur qualité. A contrario, des algorithmes complexes peuvent s'accommoder de features moins abouties. Cependant, dans ce cas, la médaille a son revers : le modèle de prévision obtenu sera complexe et obscur. Ceci peut être un problème majeur pour beaucoup de prévisionnistes encore attachés à des méthodes plus traditionnelles.

Comme évoqué précédemment, une feature est une information potentiellement intéressante pour effectuer une prévision. La condition sine qua non pour que des prévisions soient possibles est que le phénomène à prévoir ne soit pas totalement aléatoire : il doit pouvoir être expliqué au moins partiellement. Les features sont donc des informations diminuant la part d'aléatoire apparent.

Nous appellerons donc feature engineering l'ensemble des interventions effectuées sur les données brutes avant qu'elles ne soient prises en compte par un algorithme apprenant. Cette définition très large n'est pas la seule possible et à notre connaissance il n'existe pas de consensus dans ce domaine. Certains auteurs distinguent par exemple le « data cleaning » du feature engineering. Ils classent dans cette catégorie un certain nombre de stratégies basiques de nettoyage de données, comme par exemple le traitement des valeurs manquantes par suppression pure et simple des échantillons concernés, ou encore la détection (et l'élimination) des valeurs aberrantes par un intervalle de fluctuation normal. Nous objectons à cela que le nettoyage de données peut également bénéficier de traitements plus complexes qui méritent complètement d'appartenir à la catégorie « ingénierie des données ».

Dans le cadre d’un processus prévisionnel, le bénéfice premier attendu du feature engineering est l'obtention de meilleures prévisions, c'est-à-dire l'augmentation de la forecast accuracy ou d'autres indicateurs de qualité tels que le biais. Voici donc un aperçu du rôle du feature engineering. Une activité dont on commence à peine à entrevoir la richesse et la diversité.