Description
Neural Oblivious Decision Ensembles (NODE) est un dépôt de code complémentaire pour l'article de recherche sur les Neural Oblivious Decision Ensembles pour le Deep Learning sur Données Tabulaires. Ce projet se concentre sur l'apprentissage d'ensembles profonds d'arbres de décision oblivieux et différentiables, spécifiquement conçus pour les jeux de données tabulaires. L'innovation principale réside dans l'application des techniques de deep learning aux données structurées, un domaine traditionnellement dominé par les machines à gradient boosting et les modèles plus simples basés sur des arbres.
L'architecture de NODE permet la création de modèles complexes basés sur des ensembles, capables de capturer des relations complexes au sein des données tabulaires. En utilisant des arbres de décision différentiables, le système peut être entraîné de bout en bout à l'aide de la descente de gradient, similaire aux réseaux neuronaux standards. Cette approche offre un mélange unique d'interprétabilité et de structure des arbres de décision avec les puissantes capacités d'apprentissage des réseaux neuronaux profonds.
Le projet fournit une implémentation Python qui peut être exécutée sur des machines dotées d'un CPU et, de préférence, d'un ou plusieurs GPU. Bien qu'il soit possible de l'exécuter sans GPU, cela est considérablement plus lent. L'implémentation est notée comme étant inefficace en mémoire et peut nécessiter une mémoire GPU substantielle pour la convergence. Elle a été testée sur des distributions Linux x64 comme Ubuntu 16.04 et devrait fonctionner sur d'autres distributions Linux populaires et macOS. Pour les systèmes Windows et x32, des modifications importantes pourraient être nécessaires, et l'utilisation de Docker, en particulier une version compatible GPU comme nvidia-docker, est recommandée.
Pour exécuter NODE, les utilisateurs doivent cloner ou télécharger le dépôt, configurer un environnement Python (Anaconda est suggéré) et installer les paquets requis à partir de `requirements.txt`. Une dépendance critique est `torch >= 1.1`. Les utilisateurs auront également besoin de Jupyter Notebook ou d'un outil similaire pour travailler avec les fichiers `.ipynb` fournis. Avant d'exécuter la première cellule d'un notebook, la variable d'environnement `CUDA_VISIBLE_DEVICES` doit être définie sur l'index du GPU souhaité. Les notebooks téléchargent des jeux de données depuis Dropbox, nécessitant 1 à 5 Go d'espace disque. La bibliothèque présente des scénarios d'apprentissage typiques pour les tâches de classification et de régression, avec des informations d'entraînement détaillées disponibles dans l'article de recherche original.
Points forts de Neural Oblivious Decision Ensembles
Deep learning sur données tabulaires
Ensembles d'arbres de décision différentiables et oblivieux
Entraînement de bout en bout via descente de gradient
Supporte les tâches de classification
Supporte les tâches de régression
Accélération GPU pour un entraînement plus rapide
Implémentation basée sur Python
Code complémentaire pour l'article de recherche
Nécessite PyTorch version 1.1 ou ultérieure
Premiers pas avec Neural Oblivious Decision Ensembles
Cloner ou télécharger le dépôt : Obtenez les fichiers du projet depuis GitHub.
Configurer l'environnement Python : Créez et activez un environnement Python (par exemple, en utilisant Anaconda).
Installer les dépendances : Exécutez `pip install -r requirements.txt` pour installer les paquets nécessaires, en vous assurant que la version de PyTorch est >= 1.1.
Configurer l'utilisation du GPU : Définissez la variable d'environnement `CUDA_VISIBLE_DEVICES` sur l'index de votre GPU souhaité avant d'exécuter les notebooks.
Exécuter les notebooks : Ouvrez et exécutez les notebooks Jupyter fournis dans le répertoire `./notebooks/`.
Télécharger les jeux de données : Les notebooks téléchargeront automatiquement les jeux de données requis (1-5 Go).
Cas d'utilisation de Neural Oblivious Decision Ensembles
- Classification de données tabulaires
- Régression de données tabulaires
- Recherche en Deep Learning
- Alternatives à l'ingénierie des caractéristiques
- Recherche sur l'interprétabilité des modèles






