paint-brush
Ingénierie des fonctionnalités pour l’apprentissage automatiquepar@sumitmakashir
831 lectures
831 lectures

Ingénierie des fonctionnalités pour l’apprentissage automatique

par Sumit Makashir15m2024/05/15
Read on Terminal Reader

Trop long; Pour lire

L’ingénierie des fonctionnalités est cruciale pour maximiser les performances des modèles d’apprentissage automatique. En créant et en traitant des fonctionnalités significatives, même des algorithmes simples peuvent obtenir des résultats supérieurs. Les techniques clés comprennent l'agrégation, les différences et les ratios, le codage par âge, le codage par indicateur, le codage à chaud et le codage cible. Un traitement efficace des caractéristiques implique le traitement des valeurs aberrantes, la gestion des valeurs manquantes, la mise à l'échelle, la réduction de la dimensionnalité et la transformation des cibles en distribution normale.
featured image - Ingénierie des fonctionnalités pour l’apprentissage automatique
Sumit Makashir HackerNoon profile picture
0-item


Vous devez avoir entendu le dicton « les déchets entrent, les déchets sortent ». Ce dicton s’applique en effet lors de la formation de modèles d’apprentissage automatique. Si nous formons des modèles d’apprentissage automatique à l’aide de données non pertinentes, même les meilleurs algorithmes d’apprentissage automatique ne nous aideront pas beaucoup. À l’inverse, l’utilisation de fonctionnalités significatives et bien conçues peut permettre d’obtenir des performances supérieures, même avec un simple algorithme d’apprentissage automatique. Alors, comment pouvons-nous créer ces fonctionnalités significatives qui maximiseront les performances de notre modèle ? La réponse est l’ingénierie des fonctionnalités. Travailler sur l'ingénierie des fonctionnalités est particulièrement important lorsque vous travaillez avec des algorithmes d'apprentissage automatique traditionnels, tels que la régression, les arbres de décision, les machines vectorielles de support et d'autres qui nécessitent des entrées numériques. Cependant, la création de ces entrées numériques ne concerne pas seulement les compétences en matière de données. C'est un processus qui exige de la créativité et des connaissances dans le domaine et qui fait appel autant à l'art qu'à la science.

D'une manière générale, nous pouvons diviser l'ingénierie des fonctionnalités en deux composants : 1) créer de nouvelles fonctionnalités et 2) traiter ces fonctionnalités pour les faire fonctionner de manière optimale avec l'algorithme machine considéré. Dans cet article, nous aborderons ces deux composants de l'ingénierie des fonctionnalités pour les ensembles de données transversaux, structurés et non NLP.


Création de nouvelles fonctionnalités

La collecte de données brutes peut être épuisante et, à la fin de cette tâche, nous serons peut-être trop fatigués pour investir plus de temps et d'énergie dans la création de fonctionnalités supplémentaires. Mais c’est là que nous devons résister à la tentation de nous lancer directement dans la formation de modèles. Je vous promets que cela en vaudra la peine ! À ce stade, nous devrions faire une pause et nous demander : « Si je devais faire les prédictions manuellement en fonction de ma connaissance du domaine, quelles fonctionnalités m'auraient aidé à faire du bon travail ? Poser cette question peut ouvrir des possibilités de création de nouvelles fonctionnalités significatives que notre modèle aurait pu manquer autrement. Une fois que nous avons examiné les fonctionnalités supplémentaires dont nous pourrions bénéficier, nous pouvons exploiter les techniques ci-dessous pour créer de nouvelles fonctionnalités à partir des données brutes.


1. Agrégation

Comme son nom l'indique, cette technique nous aide à combiner plusieurs points de données pour créer une vue plus globale. Nous appliquons généralement des agrégations sur des données numériques continues à l'aide de fonctions standard telles que le nombre, la somme, la moyenne, le minimum, le maximum, le centile, l'écart type et le coefficient de variation. Chaque fonction peut capturer différents éléments d'information, et la meilleure fonction à utiliser dépend du cas d'utilisation spécifique. Souvent, nous pouvons appliquer l’agrégation sur une période ou une fenêtre d’événement particulière qui est significative dans le contexte de ce problème.

Prenons un exemple où nous souhaitons prédire si une transaction par carte de crédit donnée est frauduleuse. Pour ce cas d'utilisation, nous pouvons sans aucun doute utiliser des fonctionnalités spécifiques aux transactions, mais parallèlement à ces fonctionnalités, nous pouvons également bénéficier de la création de fonctionnalités agrégées au niveau du client telles que :

  1. Nombre de fois où le client a été victime d'une fraude au cours des cinq dernières années : un client qui a déjà été victime d'une fraude à plusieurs reprises peut être plus susceptible d'être à nouveau victime d'une fraude. Par conséquent, l’utilisation de cette vue agrégée au niveau du client peut fournir des signaux de prédiction appropriés.

  2. Montant médian des cinq dernières transactions : souvent, lorsqu'une carte de crédit est compromise, les fraudeurs peuvent tenter plusieurs transactions de faible valeur pour tester la carte. Aujourd’hui, une seule transaction de faible valeur est très courante et n’est peut-être pas un signe de fraude, mais si nous constatons plusieurs transactions de ce type à la suite, cela peut indiquer une carte de crédit compromise.


Le graphique du haut montre les montants des transactions individuelles et nous pouvons voir que les transactions isolées de faible valeur ne sont pas rares et n'indiquent pas une fraude. Cependant, plusieurs transactions successives de faible valeur sont un signe de fraude. Le graphique du bas montre une médiane mobile des cinq derniers montants de transactions et ne renvoie une valeur faible que s'il existe un modèle de plusieurs transactions successives de faible valeur. Dans ce cas, la vue agrégée du bas permet de faire la distinction entre les transactions légitimes de faible valeur et les transactions frauduleuses de faible valeur en utilisant le montant de la transaction comme caractéristique.



2. Différences et ratios

Dans de nombreux types de problèmes, la modification d’un modèle défini constitue un signal précieux pour la prédiction ou la détection d’anomalies. Les différences et les ratios sont des techniques efficaces pour représenter les changements dans les caractéristiques numériques. Tout comme l'agrégation, nous pouvons également appliquer ces techniques sur une fenêtre temporelle significative dans le contexte de ce problème.

Exemples:

  1. Différence entre le pourcentage de nouvelles transactions marchandes au cours de la dernière heure et le pourcentage de nouvelles transactions marchandes au cours des 30 derniers jours : un pourcentage élevé de nouvelles transactions marchandes en succession rapide peut indiquer un risque de fraude en soi, mais lorsque nous voyons que ce comportement a changé par rapport au comportement historique du client, cela devient un signal encore plus apparent.

  2. Rapport entre le nombre de transactions du jour actuel et le nombre médian de transactions quotidiennes des 30 derniers jours : lorsqu'une carte de crédit est compromise, elle aura probablement de nombreuses transactions dans un court laps de temps, ce qui peut ne pas être conforme à l'utilisation passée de la carte de crédit. Un rapport considérablement élevé entre le nombre de transactions du jour en cours et le nombre de transactions quotidiennes médianes des 30 derniers jours peut indiquer des modèles d'utilisation frauduleux.


Le tableau ci-dessus nous montre qu'un nombre élevé de transactions un jour donné peut ne pas en soi être une indication d'un comportement de transaction anormal. En revanche, une fonctionnalité basée sur des ratios peut faciliter la comparaison entre le comportement transactionnel actuel du client et son comportement transactionnel passé, et peut ainsi capturer les anomalies plus efficacement.

3. Codage de l'âge

Nous pouvons utiliser la technique de calcul de l'âge pour convertir les fonctionnalités de date ou d'horodatage en fonctionnalités numériques en prenant la différence entre deux horodatages ou dates. Nous pouvons également utiliser cette technique pour convertir certaines caractéristiques non numériques en caractéristiques numériques significatives si la durée d'occupation associée aux valeurs des caractéristiques peut constituer un signal précieux pour la prédiction.

Exemples:

  1. Jours depuis la dernière utilisation de la carte de crédit : Une transaction soudaine sur une carte de crédit restée longtemps inactive peut être associée à un risque élevé de fraude. Nous pouvons calculer cette caractéristique en prenant le décalage horaire entre la date depuis la dernière utilisation de la carte de crédit et la date de transaction en cours.
  2. Jours depuis la première utilisation de l'appareil du client : si nous constatons qu'une transaction provient d'un nouvel appareil, elle est probablement plus risquée qu'une transaction effectuée à partir d'un appareil que le client utilise depuis plus longtemps. Nous pouvons créer une fonctionnalité qui indique l'âge de l'appareil comme la différence entre la date depuis laquelle le client a utilisé cet appareil pour la première fois et la date de transaction actuelle.

Les tableaux ci-dessus montrent un exemple de codage de l'âge. Ici, nous avons créé une nouvelle fonctionnalité numérique « Jours depuis la première utilisation de l'appareil de transaction » comme différence en jours entre la date de première utilisation de l'appareil du client et la date de transaction actuelle.


4. Codage des indicateurs

Les fonctionnalités indicatrices ou booléennes ont des valeurs binaires {1, 0} ou {Vrai, Faux}. Les fonctionnalités des indicateurs sont très courantes et sont utilisées pour représenter différents types d’informations binaires. Dans certains cas, nous pouvons déjà avoir de telles caractéristiques binaires sous forme numérique, tandis que dans d’autres cas, elles peuvent avoir des valeurs non numériques. Pour utiliser les fonctionnalités binaires non numériques pour la formation du modèle, tout ce que nous avons à faire est de les mapper à des valeurs numériques.

Au-delà de ces occurrences et utilisations courantes des caractéristiques des indicateurs, nous pouvons exploiter le codage des indicateurs comme outil pour représenter une comparaison entre des points de données non numériques. Cet attribut le rend particulièrement puissant car il nous permet de mesurer les changements dans les caractéristiques non numériques.

Exemples:

  1. Échec de la vérification lors d'un événement de connexion récent : un événement de connexion échoué récent peut être associé à un risque plus élevé de transactions frauduleuses. Dans ce cas, les données brutes peuvent avoir des valeurs Oui ou Non pour cette fonctionnalité ; tout ce que nous avons à faire ici est de mapper ces valeurs sur 1 ou 0.

  2. Changement de pays depuis la dernière transaction : un changement de pays peut indiquer une carte de crédit compromise. Ici, la création d'une fonctionnalité d'indicateur représentant un changement dans la fonctionnalité non numérique « emplacement du pays » capturera ces informations de changement de pays.


Les tableaux ci-dessus montrent un exemple de codage d'indicateur. Ici, nous avons créé une nouvelle fonctionnalité numérique « Changement de pays par rapport à la transaction précédente » en comparant l'emplacement actuel du pays de transaction d'un client à l'emplacement de son pays de transaction précédent.


5. Encodage à chaud

Cette technique peut être appliquée si nos données de caractéristiques sont sous forme catégorielle, numérique ou non numérique. La forme numérique-catégorienelle fait référence à des données numériques contenant des données non continues ou non mesurées, telles que des codes de région géographique, des identifiants de magasin et d'autres types de données similaires. Une technique de codage à chaud peut convertir ces fonctionnalités en un ensemble de fonctionnalités d'indicateurs que nous pouvons utiliser dans la formation de modèles d'apprentissage automatique. L'application d'un codage à chaud sur une fonctionnalité catégorielle créera une nouvelle fonctionnalité binaire pour chaque catégorie de cette variable catégorielle. Étant donné que le nombre de nouvelles fonctionnalités augmente à mesure que le nombre de catégories augmente, cette technique convient aux fonctionnalités avec un faible nombre de catégories, surtout si nous disposons d'un ensemble de données plus petit. L'une des règles empiriques standard suggère d'appliquer cette technique si nous avons au moins dix enregistrements par catégorie.

Exemples:

  1. Catégorie d'achat de transaction : certains types de catégories d'achat peuvent être associés à un risque de fraude plus élevé. Étant donné que les noms des catégories d'achat sont des données textuelles, nous pouvons appliquer la technique de codage à chaud pour convertir cette fonctionnalité en un ensemble de fonctionnalités d'indicateur numérique. S'il existe dix noms de catégories d'achat différents, l'encodage à chaud créera dix nouvelles fonctionnalités d'indicateur, une pour chaque nom de catégorie d'achat.
  2. Type d'appareil : une transaction en ligne peut être effectuée via plusieurs types d'appareils différents, tels qu'un iPhone, un téléphone Android, un PC Windows et un Mac. Certains de ces appareils sont plus sensibles aux logiciels malveillants ou facilement accessibles aux fraudeurs et peuvent donc être associés à un risque de fraude plus élevé. Pour inclure des informations sur le type d'appareil sous forme numérique, nous pouvons appliquer un codage à chaud au type d'appareil, ce qui créera une nouvelle fonctionnalité d'indicateur pour chaque type d'appareil.

Les tableaux ci-dessus montrent un exemple d'encodage à chaud. Ici, nous avons créé un ensemble de nouvelles fonctionnalités d'indicateur numérique en appliquant une technique de codage à chaud à la fonctionnalité catégorielle non numérique « Type de périphérique ».


6. Encodage cible

Cette technique est appliquée au même type de fonctionnalités auxquelles nous appliquerions le codage one-hot, mais présente certains avantages et inconvénients par rapport au codage one-hot. Lorsque le nombre de catégories est élevé (cardinalité élevée), l’utilisation d’un codage à chaud augmentera de manière indésirable le nombre de fonctionnalités, ce qui peut conduire à un surajustement du modèle. L’encodage cible peut être une technique efficace dans de tels cas, à condition que l’on travaille sur un problème d’apprentissage supervisé. Il s'agit d'une technique qui mappe la valeur de chaque catégorie à la valeur attendue de la cible pour cette catégorie. Si vous travaillez avec un problème de régression avec une cible continue, ce calcul mappe la catégorie à la valeur cible moyenne pour cette catégorie. Dans le cas d'un problème de classification avec une cible binaire, le codage de la cible mappera la catégorie à la probabilité d'événement positif de cette catégorie. Contrairement au one-hot encoding, cette technique présente l’avantage de ne pas augmenter le nombre de fonctionnalités. L’inconvénient de cette technique est qu’elle ne peut être appliquée qu’à des problèmes d’apprentissage supervisé. L'application de cette technique peut également rendre le modèle vulnérable au surajustement, en particulier si le nombre d'observations dans certaines catégories est faible.

Exemples:

  1. Nom du commerçant : les transactions effectuées contre certains commerçants pourraient indiquer une activité frauduleuse. Il pourrait y avoir des milliers de commerçants de ce type, chacun présentant un risque différent de transactions frauduleuses. L'application d'un codage ponctuel à une fonctionnalité contenant des noms de commerçants peut introduire des milliers de nouvelles fonctionnalités, ce qui n'est pas souhaitable. Dans de tels cas, le codage cible peut aider à capturer les informations sur les risques de fraude du commerçant sans augmenter le nombre de fonctionnalités.
  2. Code postal de transaction : tout comme pour les commerçants, les transactions effectuées dans différents codes postaux peuvent représenter différents niveaux de risque de fraude. Bien que les codes postaux aient des valeurs numériques, ils ne constituent pas des variables de mesure continues et ne doivent pas être utilisés tels quels dans le modèle. Au lieu de cela, nous pouvons incorporer les informations sur le risque de fraude associées à chaque code postal en appliquant une technique telle que le codage cible.

Les tableaux ci-dessus montrent un exemple de codage cible. Ici, nous avons créé une nouvelle fonctionnalité numérique unique « Encodage cible du nom du commerçant » en appliquant une technique de codage cible à une fonctionnalité catégorielle non numérique « Nom du commerçant ». Comme son nom l'indique, cette technique s'appuie sur des valeurs cibles pour calculer les nouvelles valeurs de caractéristiques.



Une fois que nous avons créé les nouvelles fonctionnalités à partir des données brutes, l'étape suivante consiste à les traiter pour optimiser les performances du modèle. Nous y parvenons grâce au traitement des fonctionnalités comme indiqué dans la section suivante.

Traitement des fonctionnalités

Le traitement des fonctionnalités fait référence à une série d'étapes de traitement des données qui garantissent que les modèles d'apprentissage automatique s'adaptent aux données comme prévu. Bien que certaines de ces étapes de traitement soient nécessaires lors de l'utilisation de certains algorithmes d'apprentissage automatique, d'autres garantissent que nous atteignons une bonne chimie de travail entre les fonctionnalités et l'algorithme d'apprentissage automatique considéré. Dans cette section, discutons de certaines étapes courantes de traitement des fonctionnalités et des raisons pour lesquelles nous en avons besoin.

1. Traitement des valeurs aberrantes

Plusieurs algorithmes d’apprentissage automatique, notamment paramétriques tels que les modèles de régression, sont gravement impactés par les valeurs aberrantes. Ces algorithmes d'apprentissage automatique tentent de prendre en compte les valeurs aberrantes, affectant gravement les paramètres du modèle et compromettant les performances globales. Pour traiter les valeurs aberrantes, il faut d’abord les identifier. Nous pouvons détecter les valeurs aberrantes pour une caractéristique spécifique en appliquant certaines règles empiriques, comme avoir une valeur absolue supérieure à la moyenne plus trois écarts types ou une valeur en dehors de la valeur de moustache la plus proche (valeur du quartile le plus proche plus 1,5 fois la valeur de l'intervalle interquartile). Une fois que nous avons identifié les valeurs aberrantes dans une caractéristique spécifique, nous pouvons utiliser certaines des techniques ci-dessous pour traiter les valeurs aberrantes :

  1. Suppression : nous pouvons supprimer les observations avec au moins une valeur aberrante. Cependant, si nos données comportent trop de valeurs aberrantes pour différentes caractéristiques, nous risquons de perdre de nombreuses observations.
  2. Remplacement : nous pouvons remplacer les valeurs aberrantes par des moyennes, telles que la moyenne, la médiane et le mode, d'une caractéristique donnée.
  3. Transformation ou standardisation des fonctionnalités : nous pouvons utiliser la transformation logarithmique ou la standardisation des fonctionnalités (comme décrit dans la mise à l'échelle) pour réduire l'ampleur des valeurs aberrantes.
  4. Capping et revêtement de sol : nous pouvons remplacer les valeurs aberrantes au-delà d'une certaine valeur par cette valeur, par exemple en remplaçant toutes les valeurs supérieures au 99e centile par la valeur du 99e centile et en remplaçant toutes les valeurs inférieures au 1er centile par la valeur du 1er centile.


L'image ci-dessus montre les deux techniques couramment utilisées pour détecter les valeurs aberrantes univariées. Nous pouvons voir que les deux techniques peuvent produire différents ensembles de valeurs aberrantes. La technique moyenne + 3 SD doit être utilisée si les données suivent une distribution normale. La technique basée sur les moustaches du boxplot est plus générique et peut être appliquée aux données avec n'importe quelle distribution.


Les tableaux ci-dessus montrent l’application de techniques couramment utilisées pour le traitement des valeurs aberrantes.


Notez qu'il existe des techniques pour détecter les observations qui sont des valeurs aberrantes multivariées (valeurs aberrantes par rapport à plusieurs caractéristiques), mais elles sont plus complexes et n'ajoutent généralement pas beaucoup de valeur en termes de formation de modèles d'apprentissage automatique. Notez également que les valeurs aberrantes ne sont pas un problème lorsque vous travaillez avec la plupart des modèles d'apprentissage automatique non paramétriques tels que les machines vectorielles de support et les algorithmes basés sur des arbres tels que les arbres de décision, les forêts aléatoires et XGBoost.


2. Traitement des valeurs manquantes

Les données manquantes sont très courantes dans les ensembles de données du monde réel. La plupart des algorithmes d'apprentissage automatique traditionnels, à l'exception de quelques-uns comme XGBoost, n'autorisent pas les valeurs manquantes dans les ensembles de données d'entraînement. Ainsi, la correction des valeurs manquantes est l’une des tâches de routine de la modélisation de l’apprentissage automatique. Il existe plusieurs techniques pour traiter les valeurs manquantes ; cependant, avant de mettre en œuvre une quelconque technique, il est important de comprendre la cause des données manquantes ou, à tout le moins, de savoir si les données manquent de manière aléatoire. Si les données ne manquent pas au hasard, ce qui signifie que certains sous-groupes sont plus susceptibles de manquer de données, il peut être difficile d'imputer des valeurs à ces sous-groupes, surtout s'il y a peu ou pas de données disponibles. Si les données manquent au hasard, nous pouvons utiliser certaines des techniques de traitement courantes décrites ci-dessous. Ils ont tous des avantages et des inconvénients, et c'est à nous de décider quelle méthode convient le mieux à notre cas d'utilisation.

  1. Suppression : nous pouvons supprimer les observations avec au moins une valeur de caractéristique manquante. Cependant, si nos données comportent trop de valeurs manquantes pour différentes caractéristiques, nous risquons de perdre de nombreuses observations.
  2. Suppression : si une fonctionnalité comporte un grand nombre de valeurs manquantes, nous pouvons choisir de la supprimer.
  3. Remplacement par des moyennes : nous pouvons utiliser des moyennes telles que la moyenne, la médiane et le mode d'une entité donnée pour remplacer les valeurs manquantes. Cette méthode est simple à mettre en œuvre, mais elle peut ne pas fournir de bonnes estimations pour tous les types d'observations. Par exemple, une transaction à haut risque de fraude peut avoir un montant moyen différent de celui d’une transaction à faible risque de fraude, et l’utilisation d’une moyenne globale pour un montant de transaction manquant à haut risque de fraude peut ne pas être une bonne substitution.
  4. Maximum de vraisemblance, imputations multiples, K voisins les plus proches : il s'agit de méthodes plus complexes qui prennent en compte la relation avec d'autres caractéristiques de l'ensemble de données et pourraient fournir des estimations plus précises que les moyennes globales. Cependant, la mise en œuvre de ces méthodes nécessitera une modélisation supplémentaire ou la mise en œuvre d’algorithmes.

Les tableaux ci-dessus montrent l'application des techniques couramment utilisées pour le traitement des valeurs manquantes.

3. Mise à l'échelle

Souvent, les fonctionnalités que nous utilisons dans les modèles d’apprentissage automatique ont des plages différentes. Si nous les utilisons sans mise à l'échelle, les caractéristiques avec de grandes valeurs absolues domineront le résultat de la prédiction. Au lieu de cela, pour donner à chaque fonctionnalité une opportunité équitable de contribuer au résultat de la prédiction, nous devons mettre toutes les fonctionnalités sur la même échelle. Les deux techniques de mise à l'échelle les plus courantes sont :

  1. Normalisation : cette technique de mise à l'échelle restreint les valeurs des caractéristiques entre 0 et 1. Pour appliquer la normalisation, nous soustrayons la valeur minimale de la caractéristique et la divisons par la plage (différence entre min et max) de cette caractéristique. La normalisation peut ne pas être une bonne technique si certaines de nos caractéristiques présentent une forte asymétrie ou quelques valeurs aberrantes extrêmes.
  2. Standardisation : cette technique transforme la distribution des données d'entité en distribution normale standard. Nous pouvons mettre en œuvre cette technique en soustrayant la moyenne et en la divisant par l'écart type. Cette technique est généralement préférée si l’entité présente une forte asymétrie ou quelques valeurs aberrantes extrêmes.

Notez que les algorithmes basés sur des arbres tels que les arbres de décision, la forêt aléatoire, XGBoost et autres peuvent fonctionner avec des données non mises à l'échelle et n'ont pas besoin d'être mis à l'échelle lors de l'utilisation de ces algorithmes.

Les tableaux ci-dessus montrent l'application des deux techniques de mise à l'échelle des fonctionnalités couramment utilisées.


L'image ci-dessus montre la différence d'échelle entre les valeurs des caractéristiques d'origine, normalisées et standardisées. Comme nous pouvons le constater, la mise à l’échelle n’affecte pas la forme de la distribution des données.

4. Réduction de la dimensionnalité

Aujourd’hui, nous disposons d’énormes données et nous pouvons créer une vaste collection de fonctionnalités pour entraîner nos modèles. Pour la plupart des algorithmes, disposer de plus de fonctionnalités est une bonne chose car cela offre plus d’options pour améliorer les performances du modèle. Cependant, cela n’est pas vrai pour tous les algorithmes. Les algorithmes basés sur des mesures de distance souffrent du fléau de la dimensionnalité : à mesure que le nombre de caractéristiques augmente considérablement, la valeur de distance entre les deux observations perd tout son sens. Ainsi, pour utiliser des algorithmes basés sur des mesures de distance, nous devons nous assurer que nous n’utilisons pas un grand nombre de fonctionnalités. Si notre ensemble de données comporte un grand nombre de fonctionnalités et si nous ne savons pas lesquelles conserver et lesquelles supprimer, nous pouvons utiliser des techniques telles que l'analyse en composantes principales (ACP). PCA transforme l'ensemble des anciennes fonctionnalités en un ensemble de nouvelles fonctionnalités. Il crée de nouvelles fonctionnalités telles que celle avec les valeurs propres les plus élevées capture la plupart des informations des anciennes fonctionnalités. Nous pouvons alors conserver uniquement les quelques nouvelles fonctionnalités les plus importantes et supprimer les autres.

D'autres techniques statistiques, telles que l'analyse d'association et les algorithmes de sélection de fonctionnalités, peuvent être utilisées dans les problèmes d'apprentissage supervisé pour réduire le nombre de fonctionnalités. Cependant, ils ne capturent généralement pas le même niveau d’informations que la PCA avec le même nombre de fonctionnalités.

Les tableaux ci-dessus montrent l'application de la PCA pour la réduction des fonctionnalités. Comme nous pouvons le voir, les trois premières fonctionnalités capturent plus de 87 % des informations contenues dans l'ensemble de données d'origine. Dans ce cas, nous pouvons choisir de laisser de côté les deux fonctionnalités (f4 et f5) pour une perte d'information <13%. Le nombre de fonctionnalités à conserver et le nombre de fonctionnalités à éliminer varient d’un problème à l’autre en fonction de divers facteurs.


5. Transformation en distribution normale

Cette étape est une exception car elle s'applique uniquement à la cible et non aux fonctionnalités. De plus, la plupart des algorithmes d'apprentissage automatique n'ont aucune restriction sur la distribution de la cible, mais certains, comme la régression linéaire, exigent que la cible soit distribuée normalement. La régression linéaire suppose que les valeurs d'erreur sont symétriques et concentrées autour de zéro pour tous les points de données (tout comme la forme de la distribution normale), et une variable cible normalement distribuée garantit que cette hypothèse est respectée. Nous pouvons comprendre la distribution de notre cible en traçant un histogramme. Les tests statistiques comme le test de Shapiro-Wilk nous renseignent sur la normalité en testant cette hypothèse. Dans le cas où notre cible n'est pas normalement distribuée, nous pouvons essayer diverses transformations telles que la transformation logarithmique, la transformation carrée, la transformation racine carrée et d'autres pour vérifier quelles transformations rendent la distribution cible normale. Il existe également une transformation Box-Cox qui teste plusieurs valeurs de paramètres, et nous pouvons choisir celle qui transforme le mieux la distribution de notre cible en normale.

L'image ci-dessus montre trois transformations des données cibles d'origine. Dans ce cas spécifique, nous pouvons voir que la transformation log fonctionne le mieux pour transformer la distribution des données d'origine en une distribution normale.


Remarque : Bien que nous puissions implémenter les étapes de traitement des fonctionnalités dans n'importe quel ordre, nous devons soigneusement considérer la séquence de leur application. Par exemple, un traitement des valeurs manquantes utilisant une substitution de moyenne de valeurs peut être mis en œuvre avant ou après la détection de valeurs aberrantes. Cependant, la valeur moyenne utilisée pour la substitution peut différer selon que l'on traite les valeurs manquantes avant ou après le traitement des valeurs aberrantes. La séquence de traitement des fonctionnalités décrite dans cet article traite les problèmes dans l'ordre de l'impact qu'ils peuvent avoir sur les étapes de traitement successives. Ainsi, suivre cette séquence devrait généralement être efficace pour résoudre la plupart des problèmes.


Conclusion

Comme mentionné en introduction, l’ingénierie des fonctionnalités est une dimension du machine learning qui permet de contrôler les performances du modèle à un degré exceptionnel. Pour exploiter tout le potentiel de l'ingénierie des fonctionnalités, nous avons appris diverses techniques dans cet article pour créer de nouvelles fonctionnalités et les traiter afin de fonctionner de manière optimale avec les modèles d'apprentissage automatique. Quels que soient les principes et techniques d'ingénierie des fonctionnalités de cet article que vous choisissez d'utiliser, le message important ici est de comprendre que l'apprentissage automatique ne consiste pas seulement à demander à l'algorithme de comprendre les modèles. Il s’agit de permettre à l’algorithme de faire son travail efficacement en fournissant le type de données dont il a besoin.