L'exemple le plus simple utilisé pour illustrer cela est le problème XOR (voir l'image ci-dessous). Imaginez que l'on vous donne des données contenant des coordonnées et et la classe binaire à prévoir. Vous pourriez vous attendre à ce que votre algorithme d'apprentissage automatique trouve par lui-même la frontière de décision correcte, mais si vous avez généré une fonctionnalité supplémentaire , le problème devient trivial car vous donne un critère de décision presque parfait pour la classification et vous avez utilisé une arithmétique simple !xyz=xyz>0
Ainsi, alors que dans de nombreux cas, vous pouvez vous attendre à ce que l'algorithme trouve la solution, ou bien, par l'ingénierie des fonctionnalités, vous pouvez simplifier le problème. Les problèmes simples sont plus faciles et plus rapides à résoudre et nécessitent des algorithmes moins compliqués. Les algorithmes simples sont souvent plus robustes, les résultats sont souvent plus interprétables, ils sont plus évolutifs (moins de ressources de calcul, temps de formation, etc.) et portables. Vous pouvez trouver plus d'exemples et d'explications dans l'excellent discours de Vincent D. Warmerdam, donné lors de la conférence PyData à Londres .
De plus, ne croyez pas tout ce que les spécialistes du marketing de l'apprentissage automatique vous disent. Dans la plupart des cas, les algorithmes "n'apprendront pas d'eux-mêmes". Vous avez généralement un temps, des ressources et une puissance de calcul limités et les données ont généralement une taille limitée et sont bruyantes, rien de tout cela ne vous aide.
En poussant cela à l'extrême, vous pouvez fournir vos données sous forme de photos de notes manuscrites du résultat de l'expérience et les transmettre à un réseau neuronal compliqué. Il apprendrait d'abord à reconnaître les données sur les images, puis à les comprendre et à faire des prédictions. Pour ce faire, vous auriez besoin d'un ordinateur puissant et de beaucoup de temps pour la formation et le réglage du modèle et vous auriez besoin d'énormes quantités de données en raison de l'utilisation d'un réseau neuronal compliqué. Fournir les données dans un format lisible par ordinateur (sous forme de tableaux de nombres) simplifie énormément le problème, car vous n'avez pas besoin de toute la reconnaissance des caractères. Vous pouvez penser à l'ingénierie des fonctionnalités comme une étape suivante, où vous transformez les données de manière à créer desfonctionnalités, de sorte que votre algorithme a encore moins à comprendre par lui-même. Pour donner une analogie, c'est comme si vous vouliez lire un livre en langue étrangère, de sorte que vous deviez d'abord apprendre la langue, par opposition à la lire traduite dans la langue que vous comprenez.
Dans l'exemple de données Titanic, votre algorithme devrait comprendre que la somme des membres de la famille est logique, pour obtenir la fonctionnalité "taille de la famille" (oui, je la personnalise ici). C'est une caractéristique évidente pour un humain, mais ce n'est pas évident si vous voyez les données comme seulement quelques colonnes des nombres. Si vous ne savez pas quelles colonnes sont significatives lorsqu'elles sont considérées avec d'autres colonnes, l'algorithme pourrait le comprendre en essayant chaque combinaison possible de ces colonnes. Bien sûr, nous avons des moyens intelligents de le faire, mais tout de même, c'est beaucoup plus facile si les informations sont données immédiatement à l'algorithme.