Nous avons récemment écrit un billet de blog sur le TabTransformer et ses idées fondamentales. C'est un nouveau modèle d'apprentissage profond prometteur pour les données tabulaires, mais nous voulions aussi des résultats sur les données et les problèmes que nous rencontrons sur le terrain.
Les données sur lesquelles nous avons effectué nos tests proviennent de la Fédération belge des notaires (FedNot), qui possède un vaste ensemble de données sur les prix des logements en Belgique. Il s'agit donc d'un peu comme les données sur les prix de l'immobilier à Boston, un ensemble de données classique pour l'apprentissage automatique, mais en mieux et en belge.
Les données proviennent de différentes sources. Nous avons combiné des ensembles de données publiques comme OpenStreetMap avec des bases de données internes pseudonymisées de FedNot.
Pour prédire la valeur d'une maison donnée, nous utiliserons un sous-ensemble des caractéristiques disponibles :
Pour nos expériences ultérieures, nous échantillonnons les données et les divisons en trois parties :
Voyons maintenant ce qu'est ce T a b T r a n s f o r m e r .
Le principal argument de vente de ce modèle est qu'il contient des blocs de transformation. Tout comme dans le NLP, les blocs de transformation apprennent des enchâssements contextuels. Cependant, dans ce cas, les entrées ne sont pas des mots mais des caractéristiques catégorielles.
De plus, vous pouvez entraîner le transformateur avec les mêmes techniques non supervisées qu'en NLP ! (Voir GPT, BERT, ...) Nous utiliserons les 300k exemples non étiquetés pour pré-entraîner les couches du transformateur (donc, sans le prix). Cela devrait améliorer les performances lorsque nous n'avons que peu de données étiquetées.
Vous pouvez en savoir plus sur ce modèle dans notre précédent article de blog.
Grâce à Phil Wang, il existe une implémentation de l'architecture du modèle TabTransformer dans PyTorch. Nous allons l'utiliser.
Il ne reste plus qu'à mettre en œuvre la phase de pré-entraînement non supervisée. Dans l'article sur TabTransformer, ils proposent de suivre l'approche d'ELECTRA.
C'est ce qu'il faut faire pour utiliser la technique de préformation Electra :
Cette approche est également appelée "détection des jetons remplacés".
Electra étant proposé comme une technique de pré-entraînement des modèles linguistiques, l'article sur TabTransformer remarque à juste titre que nous devons apporter deux modifications à la technique d'origine.
À l'étape 2 d'Electra, ils entraînent un modèle de générateur personnalisé pour générer des jetons de remplacement plausibles. En effet, il est trop facile de détecter un mot remplacé par un mot aléatoire.
Toutefois, pour les données tabulaires, les jetons sont des caractéristiques catégorielles, de sorte que nous pouvons simplement remplacer une caractéristique par une autre classe de cette caractéristique catégorielle. Quitter le modèle de générateur.
Voici à quoi ressemble l'étape 2 du cadre Electra dans une classe PyTorch Dataset:
Dans l'étape 3 de l'article Electra, le classificateur situé au-dessus du module de transformation est le même pour tous les tokens. C'est logique car tous les mots proviennent de la même distribution.
Dans le cas de données tabulaires, nous pouvons améliorer cela et créer un classificateur distinct pour chacune des colonnes.
Une façon efficace de procéder consiste à définir une couche convolutionnelle par profondeur qui définit un filtre par groupe de profondeur. Chaque groupe correspond alors à une colonne du tableau :
Le pré-entraînement ne couvre que le bloc du transformateur dans le TabTransformer. Après le pré-entraînement, nous devons encore affiner le MLP final où la sortie du transformateur est combinée avec les caractéristiques continues.
Ce réglage fin s'effectue à l'aide des données supervisées qui contiennent également les prix des logements.
Pardonnez mon français, mais voici la section où nous testons si TabTransformer bat LightGBM à plate couture.
Nous avons choisi LightGBM comme référence pour deux raisons. Tout d'abord, parce qu'il s'agit en général d'un excellent modèle. Ensuite, c'est le meilleur modèle sur l'ensemble des données dont nous n'avons pas réservé la plus grande partie à l'apprentissage non supervisé.
Avec cette expérience, nous voulons vérifier si le pré-entraînement non supervisé du TabTransformer est une réussite ou un échec.
Nous suivons la configuration de l'article sur TabTransformer et échantillonnons des ensembles d'entraînement étiquetés (obscènement) de petite taille, allant de 25 à 2000 points de données. En raison de la petite taille des ensembles de données, nous échantillonnons plusieurs versions (par exemple, nous utilisons 70 ensembles d'entraînement différents de 25 points).
Pour chacun de ces ensembles, nous entraînons le modèle LightGBM et affinons le transformateur TabTransformer préalablement entraîné.
Ensuite, nous utilisons l'ensemble de test que nous avons séparé au début pour mesurer les erreurs absolues. Ces erreurs sont représentées sur cette figure :
Avant de discuter de ces résultats, il y a deux autres questions que vous pourriez vous poser :
Ce type de données existe-t-il au moins ?
Imaginez un cas où l'obtention des étiquettes est très coûteuse, ou prend beaucoup de temps, ou peut nuire aux personnes. Par exemple, si nous essayons de prédire si un avion va s'écraser, il est préférable d'avoir le moins d'étiquettes possible.
Pourquoi entraîner un modèle d'apprentissage profond sur des ensembles de données de cette taille ?
La raison la plus importante pour laquelle nous envisageons un modèle d'apprentissage profond dans cette situation est que nous pouvons effectuer le pré-entraînement et garder la couche MLP finale aussi petite que possible. Dans l'article sur TabTransformer, les auteurs s'entraînent également sur les mêmes tailles d'ensembles de données.
Très bien, regardons les résultats. Une première conclusion est que LightGBM est le vainqueur incontesté du maillot jaune au classement général.
MAIS, lorsque nous examinons les deux plus petits ensembles de données, nous concluons que TabTransformer remporte le maillot vert du sprinter. Sur 25 points de données, l'erreur de TabTransformer est plus petite et sur 50 points de données, LGBM a des valeurs aberrantes que TabTransformer n'a pas.
Ce résultat n'est peut-être pas à la hauteur des espérances, mais il est tout de même étonnant, car il signifie que le pré-entraînement non supervisé sur des données tabulaires a fonctionné !
Si nous creusons un peu plus, nous pouvons également expliquer ces résultats. Jetez un coup d'œil aux importances des caractéristiques du modèle LGBM :
Apparemment, les cinq caractéristiques les plus importantes sont les caractéristiques numériques et les sept caractéristiques les moins importantes sont les caractéristiques catégorielles.
Rappelez-vous que pendant la phase de pré-entraînement du TabTransformer, le modèle ne pouvait apprendre que les relations entre les caractéristiques catégorielles. Il est donc logique que même le meilleur module de transformation ne puisse jamais rivaliser avec la puissance d'une utilisation optimale des caractéristiques continues.