Beschreibung
Neural Oblivious Decision Ensembles (NODE) ist ein ergänzendes Code-Repository für die Forschungsarbeit über Neural Oblivious Decision Ensembles für Deep Learning auf tabellarischen Daten. Dieses Projekt konzentriert sich auf das Erlernen von Deep Ensembles von oblivious, differenzierbaren Entscheidungsbäumen, die speziell für tabellarische Datensätze entwickelt wurden. Die Kerninnovation liegt in der Anwendung von Deep-Learning-Techniken auf strukturierte Daten, einem Bereich, der traditionell von Gradient-Boosting-Maschinen und einfacheren baumbasierten Modellen dominiert wird.
Die Architektur von NODE ermöglicht die Erstellung komplexer, Ensemble-basierter Modelle, die komplexe Beziehungen innerhalb tabellarischer Daten erfassen können. Durch die Verwendung von differenzierbaren Entscheidungsbäumen kann das System end-to-end mittels Gradientenabstieg trainiert werden, ähnlich wie Standard-Neuronale Netze. Dieser Ansatz bietet eine einzigartige Mischung aus der Interpretierbarkeit und Struktur von Entscheidungsbäumen mit den leistungsstarken Lernfähigkeiten von tiefen neuronalen Netzen.
Das Projekt bietet eine Python-Implementierung, die auf Rechnern mit einer CPU und vorzugsweise einer oder mehreren GPUs ausgeführt werden kann. Obwohl die Ausführung ohne GPU möglich ist, ist sie erheblich langsamer. Die Implementierung ist speicherineffizient und kann erhebliche GPU-Speicher für die Konvergenz erfordern. Sie wurde auf Linux x64-Distributionen wie Ubuntu 16.04 getestet und sollte auf anderen gängigen Linux-Distributionen und macOS funktionieren. Für Windows- und x32-Systeme sind möglicherweise erhebliche Modifikationen erforderlich, und die Verwendung von Docker, insbesondere einer GPU-fähigen Version wie nvidia-docker, wird empfohlen.
Um NODE auszuführen, müssen Benutzer das Repository klonen oder herunterladen, eine Python-Umgebung einrichten (Anaconda wird vorgeschlagen) und die erforderlichen Pakete aus `requirements.txt` installieren. Eine kritische Abhängigkeit ist `torch >= 1.1`. Benutzer benötigen außerdem Jupyter Notebook oder ein ähnliches Werkzeug, um mit den bereitgestellten `.ipynb`-Dateien zu arbeiten. Bevor die erste Zelle in einem Notebook ausgeführt wird, muss die Umgebungsvariable `CUDA_VISIBLE_DEVICES` auf den gewünschten GPU-Index gesetzt werden. Die Notebooks laden Datensätze von Dropbox herunter, was 1-5 GB Speicherplatz erfordert. Die Bibliothek zeigt typische Lernszenarien für Klassifizierungs- und Regressionsaufgaben, wobei detaillierte Trainingsinformationen im Originalforschungsartikel verfügbar sind.
Neural Oblivious Decision Ensembles im Überblick
Deep Learning auf tabellarischen Daten
Ensembles von oblivious, differenzierbaren Entscheidungsbäumen
End-to-End-Training mittels Gradientenabstieg
Unterstützt Klassifizierungsaufgaben
Unterstützt Regressionsaufgaben
GPU-Beschleunigung für schnelleres Training
Python-basierte Implementierung
Ergänzender Code für Forschungsarbeit
Erfordert PyTorch Version 1.1 oder neuer
Erste Schritte mit Neural Oblivious Decision Ensembles
Repository klonen oder herunterladen: Projektdateien von GitHub beziehen.
Python-Umgebung einrichten: Eine Python-Umgebung erstellen und aktivieren (z. B. mit Anaconda).
Abhängigkeiten installieren: `pip install -r requirements.txt` ausführen, um notwendige Pakete zu installieren, wobei sichergestellt wird, dass die PyTorch-Version >= 1.1 ist.
GPU-Nutzung konfigurieren: Die Umgebungsvariable `CUDA_VISIBLE_DEVICES` vor der Ausführung von Notebooks auf Ihren gewünschten GPU-Index setzen.
Notebooks ausführen: Die bereitgestellten Jupyter Notebooks im Verzeichnis `./notebooks/` öffnen und ausführen.
Datensätze herunterladen: Notebooks laden automatisch erforderliche Datensätze herunter (1-5 GB).
Neural Oblivious Decision Ensembles's Anwendungsfälle
- Klassifizierung tabellarischer Daten
- Regression tabellarischer Daten
- Deep-Learning-Forschung
- Alternativen zum Feature Engineering
- Forschung zur Modellinterpretierbarkeit






