Comparer différents encoders catégoriels

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous comparerons les performances de différents encoders catégoriels sur un ensemble de données d'évaluation de vins. Nous utiliserons la colonne cible 'points' comme variable cible à prédire. Nous comparerons les encoders suivants : TargetEncoder, OneHotEncoder, OrdinalEncoder et la suppression de la catégorie. Nous examinerons également comment utiliser la prise en charge native des fonctionnalités catégorielles dans HistGradientBoostingRegressor.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session et nous résoudrons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49316{{"Comparer différents encoders catégoriels"}} end

Chargement des données à partir d'OpenML

Tout d'abord, nous chargeons l'ensemble de données d'évaluations de vins à l'aide de la fonction fetch_openml du module scikit - learn.datasets. Nous n'utiliserons que sous - ensemble de fonctionnalités numériques et catégorielles dans les données. Nous utiliserons le sous - ensemble suivant de fonctionnalités numériques et catégorielles dans les données : caractéristiques_numériques = ["prix"] et caractéristiques_catégorielles = ["pays", "province", "région_1", "région_2", "variété", "vignoble"].

Entraînement et évaluation de pipelines avec différents encoders

Dans cette section, nous évaluerons des pipelines avec HistGradientBoostingRegressor avec différentes stratégies d'encodage. Nous évaluerons les modèles en utilisant la validation croisée et enregistrerons les résultats.

Prise en charge native des fonctionnalités catégorielles

Dans cette section, nous construisons et évaluons un pipeline qui utilise la prise en charge native des fonctionnalités catégorielles dans HistGradientBoostingRegressor, qui ne prend en charge que jusqu'à 255 catégories uniques. Nous regroupons les fonctionnalités catégorielles en fonctionnalités à cardinalité faible et à cardinalité élevée. Les fonctionnalités à cardinalité élevée seront encodées cible et les fonctionnalités à cardinalité faible utiliseront la fonctionnalité catégorielle native dans le gradient boosting.

Traçage des résultats

Dans cette section, nous affichons les résultats en traçant les scores de test et d'entraînement.

Sommaire

Dans ce laboratoire, nous avons comparé les performances de différents encoders catégoriels sur un ensemble de données d'évaluations de vins. Nous avons également étudié la manière d'utiliser la prise en charge native des fonctionnalités catégorielles dans HistGradientBoostingRegressor. Nous avons constaté que supprimer les catégories donne les pires résultats et que les encoders cibles donnent les meilleurs résultats. L'encodage ordinal impose un ordre arbitraire aux fonctionnalités qui sont ensuite traitées comme des valeurs numériques par HistGradientBoostingRegressor. Le schéma d'encodage one - hot aurait probablement entraîné l'overfitting du pipeline car le nombre de fonctionnalités explose avec des occurrences de catégories rares qui sont corrélées au hasard avec la variable cible. Lorsque l'on utilise l'encodeur cible, le même regroupement se produit, mais puisque les valeurs encodées sont statistiquement ordonnées par association marginale avec la variable cible, le regroupement utilisé par HistGradientBoostingRegressor a du sens et conduit à de bons résultats.