Représentation: qualités des bonnes caractéristiques

Nous avons exploré les moyens de mapper des données brutes dans des vecteurs de caractéristiques appropriés, mais ce n'est qu'une partie du travail. Nous devons maintenant explorer les types de valeurs qui constituent de bonnes caractéristiques dans ces vecteurs de caractéristiques.

Éviter les valeurs de caractéristiques discrètes rarement utilisées

Les bonnes valeurs de caractéristiques doivent apparaître plus d'au moins 5 fois dans un ensemble de données. Cela permet au modèle de découvrir comment cette valeur de caractéristique est liée à l'étiquette. Autrement dit, le fait d'avoir de nombreux exemples avec la même valeur discrète permet au modèle de voir la caractéristique dans différents contextes, puis de déterminer à son tour si elle constitue un bon prédicteur pour l'étiquette. Par exemple, une caractéristique house_type contient probablement de nombreux exemples dont la valeur est victorian:

house_type: victorian

À l'inverse, si la valeur d'une caractéristique n'apparaît qu'une seule fois ou très rarement, le modèle ne peut pas effectuer de prédictions sur la base de cette caractéristique. Par exemple, unique_house_id est une mauvaise caractéristique, car chaque valeur n'est utilisée qu'une seule fois. Le modèle ne peut donc rien en tirer:

unique_house_id: 8SK982ZZ1242Z

Privilégier les significations claires

Chaque caractéristique doit avoir une signification claire pour toute personne impliquée dans le projet. Par exemple, la bonne caractéristique suivante est clairement nommée et la valeur a du sens en ce qui concerne le nom:

 house_age_years: 27 

À l'inverse, la signification de la valeur de caractéristique suivante est pratiquement indéchiffrable pour quiconque, à l'exception de l'ingénieur qui l'a créée:

house_age: 851472000

Dans certains cas, le bruit (plutôt que les mauvais choix techniques) entraîne des valeurs peu claires. Par exemple, les valeurs user_age_years suivantes proviennent d'une source qui n'a pas vérifié les valeurs appropriées:

user_age_years: 277

Ne pas mélanger des valeurs "magiques" avec des données réelles

Les bonnes caractéristiques à virgule flottante ne contiennent pas de discontinuités particulières ni de valeurs "magiques". Par exemple, supposons qu'une caractéristique contienne une valeur à virgule flottante comprise entre 0 et 1. Des valeurs comme celles-ci sont acceptables:

quality_rating: 0.82
quality_rating: 0.37

Toutefois, si un utilisateur n'a pas saisi de quality_rating, il est possible que l'ensemble de données ait représenté son absence par une valeur magique semblable à celle-ci:

quality_rating: -1

Pour marquer explicitement les valeurs magiques, créez une caractéristique booléenne indiquant si un élément quality_rating a été fourni ou non. Donnez à cette caractéristique booléenne un nom tel que is_quality_rating_defined.

Dans la caractéristique d'origine, remplacez les valeurs magiques comme suit:

  • Pour les variables qui acceptent un ensemble fini de valeurs (variables discrètes), ajoutez une nouvelle valeur à l'ensemble et utilisez-la pour indiquer que la valeur de la caractéristique est manquante.
  • Pour les variables continues, assurez-vous que les valeurs manquantes n'affectent pas le modèle en utilisant la valeur moyenne des données de la caractéristique.

Tenir compte de l'instabilité en amont

La définition d'une caractéristique ne doit pas changer au fil du temps. Par exemple, la valeur suivante est utile, car le nom de la ville ne changera probablement pas. (Notez que nous devrons toujours convertir une chaîne telle que "br/sao_paulo" en vecteur one-hot.)

city_id: "br/sao_paulo"

Toutefois, la collecte d'une valeur déduite par un autre modèle entraîne des coûts supplémentaires. La valeur "219" représente peut-être actuellement São Paulo, mais cette représentation pourrait facilement changer lors d'une exécution ultérieure de l'autre modèle:

inferred_city_cluster: "219"