Représentation: nettoyage des données

Les pommiers produisent à la fois de bons fruits et des végétaux. Pourtant, dans les épiceries haut de gamme, les pommes sont 100% parfaites. Entre le verger et l'épicerie, quelqu'un passe beaucoup de temps à enlever les mauvaises pommes ou à jeter un peu de cire sur celles récupérables. En tant qu'ingénieur en ML, vous passerez énormément de temps à éliminer les mauvais exemples et à éliminer ceux qui peuvent être récupérés. Quelques "mauvaises pommes" peuvent gâcher un vaste ensemble de données.

Mettre à l'échelle les valeurs des caractéristiques

La mise à l'échelle consiste à convertir des valeurs de caractéristiques à virgule flottante de leur plage naturelle (par exemple, 100 à 900) en une plage standard (par exemple, 0 à 1 ou -1 à +1). Si un ensemble de caractéristiques ne comprend qu'une seule caractéristique, la mise à l'échelle ne présente que peu d'avantages pratiques, voire aucun. Toutefois, si un ensemble de caractéristiques comprend plusieurs caractéristiques, la mise à l'échelle offre les avantages suivants:

  • Elle aide à la convergence plus rapide de la descente de gradient.
  • Permet d'éviter le "piège NaN", dans lequel un nombre du modèle devient NaN (par exemple, lorsqu'une valeur dépasse la limite de précision en virgule flottante pendant l'entraînement) et, en raison des opérations mathématiques, chaque autre nombre du modèle finit par devenir également un NaN.
  • Permet au modèle d'apprendre les pondérations appropriées pour chaque caractéristique. Sans mise à l'échelle des caractéristiques, le modèle accorde une trop grande attention aux caractéristiques présentant la plage la plus large.

Il n'est pas nécessaire d'attribuer exactement la même échelle à chaque élément géographique à virgule flottante. Rien de grave ne se passera si la caractéristique A est ajustée de -1 à +1 alors que la caractéristique B est ajustée de -3 à +3. Toutefois, votre modèle ne réagira pas correctement si la caractéristique B est mise à l'échelle de 5 000 à 100 000.

Gérer les anomalies extrêmes

Le graphique suivant représente une caractéristique appelée roomsPerPerson de l'ensemble de données sur l'immobilier en Californie. La valeur de roomsPerPerson a été calculée en divisant le nombre total de pièces pour une zone par la population de cette zone. Le tracé montre que la grande majorité des zones de Californie comportent une ou deux pièces par personne. Mais regardez le long de l'axe des x.

Représentation graphique de roomsPerPerson, dans laquelle presque toutes les valeurs sont regroupées entre 0 et 4, mais avec une très longue traîne allant jusqu'à 55 pièces par personne

Figure 4 Une très longue queue.

Comment pourrions-nous minimiser l'influence de ces valeurs aberrantes extrêmes ? Une façon d'y parvenir consiste à prendre le journal de chaque valeur:

Graphique de log(roomsPerPerson) dans lequel 99% des valeurs sont regroupées entre environ 0,4 et 1,8, mais avec une longue traîne allant jusqu'à 4,2 environ.

Figure 5. La mise à l'échelle logarithmique laisse encore une queue.

La mise à l'échelle logarithmique est légèrement plus efficace, mais il existe toujours une queue importante d'anomalies. Choisissons une autre approche. Que se passe-t-il si nous plaçons ou plaçons simplement la valeur maximale de roomsPerPerson à une valeur arbitraire, par exemple 4,0 ?

Représentation graphique de roomsPerPerson, dans laquelle toutes les valeurs sont comprises entre -0,3 et 4,0 L'intrigue est en forme de cloche, mais il y a une colline anormale à 4,0.

Figure 6. Limitation des valeurs des caractéristiques à 4

Le fait de rogner la valeur de la caractéristique à 4 ne signifie pas que nous ignorons toutes les valeurs supérieures à 4,0. Cela signifie plutôt que toutes les valeurs supérieures à 4,0 deviennent 4,0. Cela explique la drôle de montée à 4,0. Malgré cette colline, l'ensemble de caractéristiques mises à l'échelle est désormais plus utile que les données d'origine.

Binning

Le graphique suivant montre la prévalence relative des habitations pour différentes latitudes en Californie. Notez le clustering : Los Angeles se trouve à environ 34 °C, et San Francisco se situe approximativement à une latitude de 38.

Graphique représentant les habitations en fonction de la latitude. Le tracé est très irrégulier, avec des tambours autour de la latitude de 36 et d'énormes pics autour des latitudes de 34 et 38.

Figure 7. Logements par latitude.

Dans l'ensemble de données, latitude est une valeur à virgule flottante. Cependant, il n'est pas logique de représenter latitude en tant que caractéristique à virgule flottante dans notre modèle. En effet, il n'existe aucune relation linéaire entre la latitude et les valeurs immobilières. Par exemple, les maisons à une latitude de 35 km ne sont pas \(\frac{35}{34}\) plus chères (ou moins chères) que celles situées à une latitude de 34 km. Pourtant, les latitudes individuelles constituent probablement un bon indicateur de la valeur d'un logement.

Pour que la latitude devienne un indicateur utile, répartissons les latitudes en "bins", comme suggéré par la figure suivante:

Graphique représentant les habitations en fonction de la latitude. Le tracé est divisé en

Figure 8. Valeurs de binning.

Au lieu d'avoir une seule caractéristique à virgule flottante, nous avons désormais 11 caractéristiques booléennes distinctes (LatitudeBin1, LatitudeBin2, ..., LatitudeBin11). Disposer de 11 caractéristiques distinctes n'est pas très élégant, alors réunissons-les en un seul vecteur à 11 éléments. Cela nous permettra de représenter la latitude 37,4 comme suit:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

Grâce au binning, notre modèle peut désormais apprendre des pondérations complètement différentes pour chaque latitude.

Utiliser la barre de lecture

Jusqu'à présent, nous avons supposé que toutes les données utilisées pour l'entraînement et les tests étaient fiables. En pratique, de nombreux exemples dans des ensembles de données ne sont pas fiables pour une ou plusieurs des raisons suivantes:

  • Valeurs omises. Par exemple, une personne a oublié de saisir une valeur pour l'âge d'une maison.
  • Exemples en double : Par exemple, un serveur a importé par erreur les mêmes journaux deux fois.
  • Libellés incorrects. Par exemple, une personne a mal étiqueté l'image d'un chêne comme étant celle d'un érable.
  • Valeurs de caractéristiques incorrectes. Par exemple, quelqu'un a saisi un chiffre en trop ou un thermomètre a été laissé au soleil.

Une fois les mauvais exemples détectés, vous les "corrigez" généralement en les supprimant de l'ensemble de données. Pour détecter des valeurs omises ou des exemples en double, vous pouvez écrire un programme simple. La détection des valeurs de caractéristiques ou des étiquettes incorrectes peut s'avérer beaucoup plus délicate.

En plus de détecter les mauvais exemples individuels, vous devez également détecter les données erronées dans l'agrégat. Les histogrammes sont un excellent mécanisme pour visualiser vos données dans leur agrégation. En outre, il peut être utile d'obtenir des statistiques comme les suivantes:

  • Maximum et minimum
  • Moyenne et médiane
  • Écart type

Envisagez de générer des listes des valeurs les plus courantes pour les caractéristiques discrètes. Par exemple, le nombre d'exemples contenant country:uk correspond-il au nombre attendu ? language:jp est-il vraiment le langage le plus courant dans votre ensemble de données ?

Connaître ses données

Respectez ces règles:

  • Gardez à l’esprit ce à quoi vous pensez que vos données devraient ressembler.
  • Vérifiez que les données répondent à ces attentes (ou que vous pouvez en expliquer la raison).
  • Vérifiez que les données d'entraînement sont en accord avec d'autres sources (les tableaux de bord, par exemple).

Traitez vos données avec le soin de traiter un code stratégique. Un bon ML repose sur de bonnes données.

Informations supplémentaires

Règles du machine learning, Phase II du ML: Extraction de caractéristiques