Entscheidungsbaumregression in JavaScript: Von der Intuition zum funktionierenden Prototyp

Letzte Aktualisierung: 04/11/2026
  • Entscheidungsbäume modellieren Entscheidungen als verkettete Fragen, wobei Entropie und Informationsgewinn die Auswahl der Aufteilungen sowohl für die Klassifizierung als auch für die Regression steuern.
  • Die verbesserte Entscheidungsbaumregression, wie sie mit LightGBM in Azure Machine Learning implementiert ist, erstellt Ensembles kleiner Bäume, die Restfehler iterativ korrigieren.
  • Überanpassung bei Entscheidungsbäumen wird durch Beschneidung und Parameter wie Tiefe, Blattgröße und Lernrate kontrolliert, während Ensembles wie Random Forests und Boosting die Robustheit verbessern.
  • Designer können interaktive Entscheidungsbäume in reinem JavaScript prototypisch umsetzen, indem sie Knoten als Objekte strukturieren, die Navigation (einschließlich Zurück-Aktionen) verwalten und später Verbindungen zu gelernten Modellen herstellen.

Entscheidungsbaumregression in JavaScript

Wenn Sie ein Designer sind, der bereits ein wenig mit HTML, CSS und reinem JavaScript arbeitet, mag Ihnen der Aufbau eines Entscheidungsbaums oder eines Regressionsmodells zunächst wie dunkle Magie vorkommen. Sie haben vielleicht einen klaren Entscheidungsablauf auf dem Papier, vielleicht sogar einen schönen Figma-Prototyp, aber wenn es darum geht, diese Logik in eine interaktive Webkomponente oder ein kleines Vorhersagemodell umzusetzen, sieht plötzlich nichts mehr so ​​einfach aus wie das Diagramm, das Sie gezeichnet haben.

Die gute Nachricht ist, dass Entscheidungsbäume zu den intuitivsten Modellen des maschinellen Lernens gehören, die man in JavaScript implementieren und visualisieren kann, selbst mit begrenzten Programmierkenntnissen. Darüber hinaus folgen leistungsstarke Boosted Regression Trees, die in Tools wie Azure Machine Learning oder LightGBM verwendet werden, demselben Konzept: einer Abfolge von Fragen, die schrittweise eine numerische Vorhersage verbessern. In diesem Leitfaden zeigen wir Ihnen den Zusammenhang zwischen dem visuellen Entscheidungsbaum, den Sie prototypisch erstellen möchten, den zugrunde liegenden Machine-Learning-Konzepten (Entropie, Informationsgewinn, Pruning, Boosting) und dem praktischen JavaScript-Code, den Sie bereits heute schreiben können.

Bevor man sich mit JavaScript beschäftigt, sollte man Entscheidungsbäume verstehen.

Auf einer sehr hohen Ebene ist ein Entscheidungsbaum lediglich eine strukturierte Art, Fragen zu stellen, wobei jede Antwort zu einem anderen Zweig führt, bis man zu einer endgültigen Entscheidung gelangt. Stellen Sie sich vor, Sie betreten ein Restaurant: Haben Sie Hunger? Wenn ja, möchten Sie etwas Leichtes oder Deftiges? Wenn Sie etwas Leichtes möchten, gibt es Salate auf der Speisekarte? Wenn ja, bestellen Sie einen Salat. Dieser gedankliche Ablauf ist im Grunde ein Entscheidungsbaum: Jede Frage ist ein Knoten, jede Antwort ein Ast und die endgültige Wahl (Salat, Burger, nichts) ein Blatt.

Beim maschinellen Lernen kodieren wir diese Idee mithilfe von Daten: Jede Zeile in einem Datensatz ist ein Beispiel, jede Spalte ein Attribut und das Ziel ist das, was wir vorhersagen wollen. Ein Baumlernalgorithmus ermittelt automatisch, welche Fragen (Aufteilung nach Attributen) am besten geeignet sind, die Daten in homogene Gruppen zu unterteilen. Bei der Klassifizierung speichern die Blätter eine Klassenbezeichnung; bei der Regression speichern sie einen numerischen Wert (z. B. Preis, Punktzahl oder Wahrscheinlichkeit).

Was Bäume so reizvoll macht, insbesondere für Designer und Anfänger, ist ihre natürliche Interpretationsfähigkeit. Man kann den Entscheidungsbaum buchstäblich von oben nach unten als eine Reihe von Regeln lesen: „Wenn die Umgebung niedrig ist und kein Wind weht, wird mit Sicherheit ein Spielzug vorhergesagt.“ Diese Transparenz findet man bei vielen anderen Modellen wie tiefen neuronalen Netzen nicht.

Um einen guten Entscheidungsbaum zu erstellen, benötigt der Algorithmus eine Möglichkeit, zu entscheiden, welche Frage zuerst, als zweite usw. gestellt werden soll, und hier kommen ein paar einfache mathematische Kenntnisse ins Spiel. Keine Sorge: Sie müssen die Formeln nicht von Hand in Ihrem JavaScript-Code herleiten, aber das Verständnis der Ideen hinter Entropie und Informationsgewinn wird Ihnen helfen, darüber nachzudenken, wie Ihr Baum aufgebaut ist und warum manche Zweige so aussehen, wie sie aussehen.

Entropie und Informationsgewinn: Wie Bäume die richtige Frage auswählen

Entropie ist ein Maß für Unsicherheit oder Unordnung in einem Datensatz und spielt eine zentrale Rolle dabei, wie klassische Entscheidungsbaumalgorithmen wie ID3 oder C4.5 ihre Aufteilungen vornehmen. Gehören alle Beispiele einer Teilmenge derselben Klasse an, beträgt die Entropie null: Der Knoten ist vollkommen rein, es besteht keine Unsicherheit. Sind die Klassen gleichmäßig verteilt (beispielsweise 50 % Ja, 50 % Nein), ist die Entropie maximal, was bedeutet, dass wir uns über die Zuordnung eines zufälligen Elements sehr unsicher sind.

Formal ausgedrückt: Wenn wir mehrere Klassen und p haben,i Wenn der Anteil der Beispiele in Klasse i ist, dann ist die Entropie H(S) einer Menge S gegeben durch: H(S) = – ∑ pi * Protokoll2(piWenn eine Klasse dominiert, ist ihr pi Je näher der Wert an 1 liegt, desto kleiner wird der Logarithmus-Term und desto geringer die Entropie. Bei ausgeglichenen Klassen tragen mehr Terme signifikant bei, und die Entropie nähert sich im binären Fall 1 an.

Der Informationsgewinn misst, wie stark die Entropie sinkt, wenn wir den Datensatz anhand eines bestimmten Attributs aufteilen. Auf diese Weise wählt der Baum an jedem Knoten die beste Frage aus. Für ein Attribut A, das verschiedene Werte v annehmen kann, betrachten wir die Teilmengen Sv Die Teilmengen enthalten nur Beispiele, für die A = v gilt. Der Informationsgewinn IG(S, A) entspricht H(S) abzüglich der gewichteten Summe der Entropien der einzelnen Teilmengen. Das Attribut mit dem höchsten Informationsgewinn liefert die klarste Trennung und wird als Trennkriterium ausgewählt.

Aus diesem Grund sieht man in vielen Beispielen, die auf Wetterdaten basieren, oft Attribute wie „Umwelt“ oder „Aussichten“ an der Wurzel des Baums. In einem konkreten Fall könnte die Variable „Umgebung“ den größten Informationsgewinn liefern (beispielsweise um den Wert von 0.246), was bedeutet, dass sie die Entscheidungen „Spielen“ und „Nicht spielen“ am besten trennt. Abhängig von der Variable „Umgebung“ könnte der Algorithmus anschließend Wind, Luftfeuchtigkeit oder Temperatur heranziehen, um die Unterscheidung weiter zu verfeinern.

Bei der Untersuchung eines trainierten Baums könnten Sie Pfade wie die folgenden sehen: Wenn Environment ≤ 1.5, prüfe Wind; wenn kein Wind weht, sage Play = Ja mit einer Entropie von 0.0 auf Basis von fünf Stichproben voraus. Bei Wind kann der Knoten eine Entropie von 1.0 aufweisen, basierend auf zwei positiven und zwei negativen Messwerten. Dadurch erhöht sich die Unsicherheit, und es können weitere Aufspaltungen auftreten. In anderen Zweigen berücksichtigt der Entscheidungsbaum bei einem Umgebungswert > 1.5 die Luftfeuchtigkeit und prüft die Temperatur nur dann, wenn diese nicht zu niedrig ist, um schwierige Situationen zu klären.

Von einfachen Entscheidungsbäumen zu Regressionsbäumen

Bisher haben wir uns hauptsächlich mit Klassifizierung beschäftigt, aber Sie können genau dieselbe Baumstruktur auch für Regression verwenden, bei der die Ausgabe ein numerischer Wert und keine diskrete Bezeichnung ist. Anstatt an jedem Blatt „play“ oder „don't play“ zu speichern, speichern Regressionsbäume eine Zahl, oft den durchschnittlichen Zielwert der Trainingsbeispiele, die in dieses Blatt fallen.

Bei Regressionsbäumen basiert das Aufteilungskriterium nicht mehr auf der Entropie, sondern auf Maßen wie der Varianzreduktion oder der Minimierung des quadratischen Fehlers. Bei jeder Aufteilung wird versucht, Kindknoten zu erzeugen, deren Zielwerte möglichst ähnlich sind, um die Vorhersage für jedes Blatt zu verbessern. Anders ausgedrückt: Der Algorithmus fragt: „Wenn ich die Daten anhand dieses Attributs aufteile, wie stark kann ich die Variabilität des Zielwerts innerhalb jeder Teilmenge reduzieren?“

Diese Regressionsbäume sind die Bausteine ​​vieler fortgeschrittener Methoden, darunter Gradient-Boosting-Frameworks wie LightGBM, die auf Plattformen wie Azure Machine Learning weit verbreitet sind. In solchen Systemen baut man typischerweise keinen einzigen monolithischen Baum auf, sondern ein Ensemble von Bäumen, von denen jeder versucht, die Fehler der vorherigen zu beheben.

Als JavaScript-Entwickler oder -Designer können Sie sich jeden Regressionsbaum als eine etwas intelligentere Version Ihres handgezeichneten Flussdiagramms vorstellen, bei dem die „Antworten“ an den Blättern Zahlen (wie Preise, Punktzahlen oder Wahrscheinlichkeiten) anstelle von Textbezeichnungen sind. Man kann sich die Logik immer noch als Baum vorstellen, aber die Stärke liegt in der Art und Weise, wie diese Bäume kombiniert und aufeinander abgestimmt werden.

Verbesserte Entscheidungsbaumregression: Wie Ensembles die Genauigkeit verbessern

Boosting ist eine klassische Ensemble-Methode, die viele schwache Modelle (wie kleine Regressionsbäume) erstellt und diese kombiniert, um einen starken Prädiktor mit wesentlich höherer Genauigkeit zu bilden. Anstatt alle Bäume unabhängig voneinander zu trainieren, wie beim Bagging oder Random Forests, fügt Boosting die Bäume nacheinander hinzu, wobei sich jeder neue Baum auf die von den vorherigen Bäumen hinterlassenen Restfehler konzentriert.

Bei der Boosted Decision Tree Regression, die Azure Machine Learning mithilfe von Algorithmen wie LightGBM implementiert, korrigiert jeder neue Baum die Fehler des aktuellen Ensembles, indem er aus den Residuen lernt. Man beginnt mit einem einfachen Modell, beispielsweise einer konstanten Vorhersage. Anschließend berechnet man die Differenz zwischen dieser Vorhersage und den tatsächlichen Werten (die Residuen). Der nächste Entscheidungsbaum wird darauf trainiert, diese Residuen vorherzusagen, und wird mit einer bestimmten Lernrate in das Modell integriert. Durch die wiederholte Anwendung dieses Prozesses verbessert sich die Gesamtvorhersage schrittweise.

Dieser Prozess wird als Gradient Boosting bezeichnet, und MART (Multiple Additive Regression Trees) ist eine bekannte Implementierung, die Azure Machine Learning für Boosting-Bäume verwendet. In jedem Schritt verwendet der Algorithmus eine differenzierbare Verlustfunktion (z. B. den quadratischen Fehler), um den Gradienten des Fehlers zu berechnen und zu entscheiden, wie der nächste Baum angepasst werden soll. In der Praxis erhält man so ein Ensemble vieler kleiner Bäume, von denen jeder einen kleinen Beitrag zum endgültigen numerischen Ergebnis leistet.

Obwohl Boosting in der Regel die Vorhersagegenauigkeit verbessert, kann es die Abdeckung oder Generalisierung verringern, wenn man bei Hyperparametern wie der Anzahl der Bäume, der maximalen Tiefe oder der Lernrate nicht vorsichtig ist., eine Situation im Zusammenhang mit Überanpassung gegen Unteranpassung. Man beginnt mit einem einfachen Modell, beispielsweise einer konstanten Vorhersage. Anschließend berechnet man die Differenz zwischen dieser Vorhersage und den tatsächlichen Werten (die Residuen). Der nächste Entscheidungsbaum wird darauf trainiert, diese Residuen vorherzusagen, und wird mit einer bestimmten Lernrate in das Modell integriert. Durch die wiederholte Anwendung dieses Prozesses verbessert sich die Gesamtvorhersage schrittweise.

Dieser Prozess wird als Gradient Boosting bezeichnet, und MART (Multiple Additive Regression Trees) ist eine bekannte Implementierung, die Azure Machine Learning für Boosting-Bäume verwendet. In jedem Schritt verwendet der Algorithmus eine differenzierbare Verlustfunktion (z. B. den quadratischen Fehler), um den Gradienten des Fehlers zu berechnen und zu entscheiden, wie der nächste Baum angepasst werden soll. In der Praxis erhält man so ein Ensemble vieler kleiner Bäume, von denen jeder einen kleinen Beitrag zum endgültigen numerischen Ergebnis leistet.

Obwohl Boosting in der Regel die Vorhersagegenauigkeit verbessert, kann es die Abdeckung oder Generalisierung verringern, wenn man bei Hyperparametern wie der Anzahl der Bäume, der maximalen Tiefe oder der Lernrate nicht vorsichtig ist. Zu viele oder zu große Bäume können zu einer Überanpassung der Trainingsdaten führen, während eine zu geringe Lernrate bei zu wenigen Bäumen eine Unteranpassung zur Folge haben und wichtige Muster nicht erfassen kann.

Wichtig ist zu beachten, dass es sich bei der Boosted Decision Tree Regression um eine Methode des überwachten Lernens handelt. Das bedeutet, dass Sie einen beschrifteten Datensatz mit einer numerischen Zielspalte bereitstellen müssen. Die Labels (Zielwerte) müssen numerisch sein, da der Algorithmus kontinuierliche Verlustfunktionen optimiert; falls Sie Kategorien haben, müssen Sie diese entweder in Zahlen umwandeln oder stattdessen eine Klassifizierungsvariante von Boosted Trees verwenden.

Wichtige Konfigurationsoptionen in Azure Machine Learning Boosted Trees

Wenn Sie die Komponente „Boosted Decision Tree Regression“ im Designer von Azure Machine Learning verwenden, konfigurieren Sie im Wesentlichen, wie Ihr Ensemble von Bäumen erstellt und trainiert wird. Diese Komponente kapselt eine effiziente LightGBM-basierte Implementierung, stellt aber die wichtigsten Einstellungen in einer benutzerfreundlichen Oberfläche bereit, sodass Sie auch dann experimentieren können, wenn Sie nicht direkt in dieser Umgebung Code schreiben.

Die erste Entscheidung, vor der Sie stehen, ist der Trainer-Erstellungsmodus. Dieser bestimmt, ob Sie eine einzelne Konfiguration festlegen oder eine Reihe von Hyperparametern untersuchen. Im Modus „Einzelparameter“ wählen Sie Werte für Faktoren wie Lernrate, Blattanzahl und Baumanzahl manuell aus: Dies ist praktisch, wenn Sie bereits eine genaue Vorstellung von Ihren Zielen haben. Im Modus „Parameterbereich“ legen Sie Intervalle für jeden Parameter fest. Anschließend testet eine separate Komponente, beispielsweise „Modellhyperparameter optimieren“, automatisch alle Kombinationen, um die beste Performance zu erzielen.

Eine weitere entscheidende Einstellung ist die maximale Anzahl von Blättern pro Baum, die effektiv die Komplexität jedes einzelnen Baums im Ensemble steuert. Mehr Blätter bedeuten mehr Endknoten und detailliertere Regeln. Dies kann die Genauigkeit bei Trainingsdaten erhöhen, birgt aber auch das Risiko von Überanpassung und verlängert die Trainingszeit. Weniger Blätter halten die Bäume einfacher und können die Generalisierung verbessern, allerdings auf Kosten des Risikos, subtile Muster zu übersehen.

Sie müssen außerdem die Mindestanzahl der in jedem Blattknoten erforderlichen Stichproben festlegen. Dies setzt eine Grenze dafür, wie detailliert Ihre Regeln werden können. Beim Standardwert von 1 kann bereits ein einzelnes Trainingsbeispiel ein neues Blatt bilden, wodurch das Modell möglicherweise Rauschen speichert. Eine Erhöhung dieses Mindestwerts auf beispielsweise 5 zwingt jede Regel dazu, mindestens fünf Beispiele mit denselben Bedingungen abzudecken. Dies glättet das Modell und verbessert häufig seine Generalisierungsfähigkeit.

Die Lernrate ist ein Wert zwischen 0 und 1, der angibt, wie groß der Schritt ist, den jeder neue Baum bei der Korrektur von Fehlern aus dem vorherigen Ensemble unternimmt. Eine hohe Lernrate ermöglicht zwar schnelles Lernen, birgt aber das Risiko, die optimale Lösung zu überschreiten; eine sehr niedrige Lernrate sorgt für ein stabileres Training, kann jedoch deutlich mehr Bäume und eine längere Trainingszeit erfordern. Die richtige Balance zu finden, ist entscheidend für ein leistungsfähiges Modell.

Die Anzahl der erstellten Bäume bestimmt, wie oft der Boosting-Schritt wiederholt wird, d. h. wie viele schwache Lerner in das endgültige Modell einbezogen werden. Ein höherer Wert führt im Allgemeinen zu einer besseren Abdeckung, erhöht aber auch die Wahrscheinlichkeit von Überanpassung und den Rechenaufwand. Die Einstellung auf 1 deaktiviert im Wesentlichen das Boosting und führt zu einem einzelnen Regressionsbaum, der zwar einfacher zu interpretieren, aber in der Regel weniger genau ist.

Azure Machine Learning ermöglicht es Ihnen außerdem, einen zufälligen Startwert für die Initialisierung festzulegen. Dies ist nützlich, um reproduzierbare Ergebnisse bei Durchläufen mit denselben Daten und Parametern zu erzielen. Wenn Sie den Standardwert 0 beibehalten, leitet die Plattform den Startwert aus der Systemuhr ab, sodass jeder Trainingslauf leicht unterschiedliche Bäume erzeugen kann. Mit einem festen Startwert können Sie Modelle einfacher debuggen und vergleichen.

Sobald Sie die Komponente konfiguriert haben, müssen Sie zum Trainieren des Modells lediglich die Verbindung zu einem gelabelten Datensatz herstellen und je nach gewähltem Modus entweder die Komponente „Modell trainieren“ oder die Komponente zur Hyperparameteroptimierung verwenden. Nach dem Training können Sie das resultierende Modell in eine „Score Model“-Komponente einbinden, um Vorhersagen für neue Eingaben zu treffen, und Sie können das trainierte Modell im Komponentenbaum registrieren, um es in anderen Pipelines ohne erneutes Training wiederzuverwenden.

Überanpassung, Beschneidung und warum Bäume zu intelligent werden können

Eines der größten Risiken bei der Arbeit mit Entscheidungsbäumen, sei es in einfacher Form oder als Teil von Boosted- oder Random-Forest-Ensembles, ist die Überanpassung, und das Verständnis der Bias-Varianz-Kompromisse hilft zu erklären, warum das Modell so komplex werden kann, dass es die Trainingsdaten auswendig lernt, anstatt allgemeine Regeln zu erlernen. Theoretisch kann ein Baum so lange weiter aufgespalten werden, bis jedes Blatt einer einzelnen Trainingsprobe entspricht. Dabei wird bei bekannten Daten eine perfekte Genauigkeit erreicht, bei unbekannten Beispielen jedoch eine schlechte Leistung erzielt.

Das Beschneiden ist die Standardmethode zur Bekämpfung von Überanpassung bei Entscheidungsbäumen und bedeutet im Wesentlichen, Äste zurückzuschneiden oder das Baumwachstum einzuschränken, damit das Modell einigermaßen einfach bleibt. Viele Bibliotheken und Frameworks bieten Parameter wie maximale Tiefe, minimale Anzahl an Stichproben pro Blatt oder minimale Anzahl an Stichproben pro Verzweigung, die steuern, wie und wann neue Zweige erstellt werden. Durch Erhöhen dieser Schwellenwerte wird der Baum bei der Verzweigung konservativer.

In Pythons scikit-learn sieht man beispielsweise häufig Parameter wie max_depth, min_samples_leaf und min_samples_split, die zur Regularisierung von Bäumen verwendet werden. Ein kleinerer Wert für `max_depth` begrenzt die Anzahl der Frageebenen, die der Entscheidungsbaum stellen kann. Ein höherer Wert für `min_samples_leaf` stellt sicher, dass jedes Blatt eine ausreichend große Gruppe von Beispielen repräsentiert, um statistisch aussagekräftig zu sein. Ein höherer Wert für `min_samples_split` verhindert, dass das Modell neue Zweige von Knoten mit sehr wenigen Beispielen erzeugt.

Auch wenn Sie scikit-learn nicht direkt in JavaScript verwenden, gelten die gleichen Prinzipien, wenn Sie Ihre eigene Baumlogik implementieren oder die Entscheidungsstruktur manuell entwerfen. Sie sollten sich stets fragen, ob ein neuer Zweig tatsächlich ein stabiles Muster darstellt oder lediglich Datenrauschen. In benutzerfreundlichen Entscheidungsbäumen können extrem tiefe oder sehr spezifische Zweige die Benutzer zudem verwirren und die Verständlichkeit der Benutzeroberfläche beeinträchtigen.

Boosted- und Ensemble-Modelle mildern einige Overfitting-Probleme durch die Kombination vieler schwacher Lernalgorithmen, können aber dennoch zu Overfitting führen, wenn die Hyperparameter zu aggressiv eingestellt sind. Die Kontrolle der Anzahl der Bäume, ihrer Tiefe, der Lernrate und der Regularisierungsterme ist in Produktionsumgebungen wie Azure Machine Learning entscheidend. Für interaktives Nutzererlebnis gilt: Weniger ist mehr – sowohl aus UX-Sicht als auch im Hinblick auf die Robustheit.

Vom einzelnen Entscheidungsbaum zu Zufallswäldern

Wenn ein einzelner Entscheidungsbaum zwar leistungsstark, aber auch anfällig ist, so ist ein Random Forest wie ein Komitee von Bäumen, die gemeinsam abstimmen, um zu einer stabileren Vorhersage zu gelangen. Die Idee ist einfach: Man trainiert viele Entscheidungsbäume, von denen jeder eine leicht unterschiedliche Teilmenge der Daten und Attribute sieht, und aggregiert anschließend deren Ausgaben. Bei der Klassifizierung wählen sie die häufigste Klasse; bei der Regression mittelt man ihre numerischen Vorhersagen.

Random Forests führen Zufälligkeit auf zwei wesentliche Arten ein: durch Ziehen von Stichproben aus Trainingsbeispielen mit Zurücklegen (Bootstrap-Sampling) und durch die Auswahl einer zufälligen Teilmenge von Attributen für jede Aufteilung. Diese Zufälligkeit bewirkt, dass sich jeder Baum etwas unterscheidet, sodass sie nicht alle dieselben Fehler wiederholen. In Kombination heben sich die Fehler der einzelnen Bäume tendenziell auf, was zu einem robusteren Modell führt.

Aus der Perspektive des Overfittings generalisieren Random Forests oft besser als ein einzelner tiefer Entscheidungsbaum, da jeder Baum in dem, was er sieht und wie er sich aufteilt, begrenzt ist und die endgültige Vorhersage ein Durchschnitt über viele Perspektiven ist. Mit anderen Worten, die Varianz des Modells wird reduziert, und man erhält ein stabileres Verhalten über verschiedene Datensätze hinweg.

Für jemanden mit Designhintergrund kann man sich einen Random Forest als eine Reihe von leicht unterschiedlichen Entscheidungskarten vorstellen, die von verschiedenen Designern erstellt wurden, wobei jeder Designer leicht unterschiedliche Kriterien verwendet, und dann einen Aggregator, der sich alle ansieht und die Konsensantwort auswählt. Keine einzelne Karte muss perfekt sein; die Weisheit entsteht aus der Gruppe.

Dieser Artikel konzentriert sich zwar auf Entscheidungsbäume und Boosted Regression im Allgemeinen, aber die Intuition hinter Random Forests ist sehr hilfreich, wenn man später fortgeschrittenere JavaScript- oder Python-Bibliotheken erforscht, die Forest- und Ensemble-APIs bereitstellen. Der grundlegende Baustein ist immer derselbe: der Entscheidungsbaum, den Sie jetzt verstehen.

Lernentscheidungsbäume: Kompetenzen, Abzeichen und strukturierte Schulungen

Zahlreiche Lernpfade und Kurse zum Thema maschinelles Lernen strukturieren ihre Inhalte explizit anhand von Entscheidungsbäumen und vergeben häufig Abzeichen oder Zertifikate, wenn man alle Aktivitäten abgeschlossen hat. Diese Programme beginnen typischerweise mit einer Einführung in Entscheidungsbäume und behandeln dann Themen wie die Ermittlung der besten Aufteilung mithilfe von Entropie, dem Gini-Koeffizienten oder Informationsgewinn, wie und warum man Bäume beschneidet und wie sich Bäume im Vergleich zu linearen Modellen verhalten.

Dabei könnten Sie unter anderem Entscheidungsbäume für die Klassifizierung, Entscheidungsbäume für die Regression und die Abwägung zwischen Modelleinfachheit und Vorhersagekraft behandeln. Für viele Lernende sind Entscheidungsbäume der Einstieg in das maschinelle Lernen, da sie dem natürlichen menschlichen Denken in Verzweigungen und Regeln entsprechen. Die Visualisierung eines trainierten Baums verdeutlicht, warum das Modell eine bestimmte Entscheidung getroffen hat, und ist somit eine hervorragende Methode, um Intuition zu entwickeln.

Kurse auf mittlerem Niveau kombinieren üblicherweise konzeptionelle Erklärungen mit praktischen Programmierübungen in Sprachen wie Python unter Verwendung von Bibliotheken wie scikit-learn. Sie können einen Entscheidungsbaum auf einem kleinen Wetterdatensatz implementieren, Entropie und Informationsgewinn manuell berechnen und anschließend die Bibliothek die rechenintensive Arbeit erledigen lassen und die endgültige Struktur visualisieren. Diese Vorgehensweisen helfen Ihnen, die mathematischen Grundlagen mit dem tatsächlichen Modellverhalten zu verknüpfen.

Auch wenn Ihr Ziel letztendlich darin besteht, Entscheidungslogik oder Regressionsbäume in JavaScript zu implementieren, können Übungen in Python sehr aufschlussreich sein, da die meisten Lernressourcen und Erklärungen derzeit in diesem Ökosystem verfasst sind. Sobald man ein Gefühl dafür entwickelt hat, wird die Übertragung der Kernideen auf reines JavaScript – oder der Aufruf eines Backend-Dienstes vom Frontend aus – wesentlich einfacher.

Wer einen solchen Kurs absolviert hat, ist in der Regel mit Entropie, Informationsgewinn, Beschneidungsstrategien, Klassifikations- und Regressionsbäumen vertraut und versteht, wann Bäume einfachen linearen Modellen überlegen sind und wann sie möglicherweise nicht die beste Wahl darstellen. Diese grundlegenden Fähigkeiten sind genau das, was Sie brauchen, bevor Sie in Produktionsumgebungen komplexere Ensembles wie Boosted Trees, Random Forests oder Gradient-Boosted Decision Trees erstellen.

Erstellung eines klickbaren Entscheidungsbaums in reinem JavaScript

Kommen wir zurück zu Ihrem konkreten Problem: Sie haben einen Entscheidungsbaum erstellt und möchten einen klickbaren Prototyp in reinem JavaScript, ohne Frameworks, idealerweise etwas wie einen CodePen, den Sie anpassen können. Viele Menschen finden Demos hilfreich, wie zum Beispiel alte Stifte, die Bäume visualisieren und UX-Funktionen wie „Übergeordnete Elemente anzeigen“ oder „Zurück“ bieten, und sind verwirrt, wenn das Entfernen von Codezeilen plötzlich dazu führt, dass der gesamte Baum verschwindet.

Der Hauptgrund, warum ein Baum verschwindet, wenn man scheinbar unzusammenhängende Teile entfernt, ist, dass diese Teile oft für die Initialisierung, das Rendern oder die Aktualisierung der Visualisierung verantwortlich sind. Beispielsweise könnten Sie den Code löschen, der Ereignis-Listener einrichtet oder die Rendering-Funktion aufruft, in der Annahme, er diene nur zusätzlichen UI-Optionen. Tatsächlich erstellt diese Funktion aber auch den initialen Baum beim Laden der Seite. Wenn Sie sie entfernen, wird der Graph nicht mehr auf dem Bildschirm angezeigt.

Wenn Sie nur einen einfachen „Zurück“-Button benötigen, um durch Ihre Knoten zu navigieren, brauchen Sie keine komplexe Bibliothek; Sie brauchen lediglich eine saubere Möglichkeit, Ihren Baum in JavaScript darzustellen, und ein wenig DOM-Manipulation. Ein gängiges Vorgehen besteht darin, den Entscheidungsbaum als verschachteltes Objekt zu speichern, wobei jeder Knoten eine Frage oder einen Titel, eine Liste der untergeordneten Elemente und optional eine Referenz auf das übergeordnete Element enthält. Anschließend wird der aktuelle Knoten in einer Variablen gespeichert und die Frage sowie die Antworten bei jedem Klick des Benutzers neu gerendert.

Um eine „Zurück“-Funktion zu implementieren, können Sie den vom Benutzer zurückgelegten Pfad in einem Array (einem Stack) speichern und den vorherigen Knoten entfernen, wenn auf die Schaltfläche geklickt wird. Alternativ kann jeder Knoten direkt auf seinen übergeordneten Knoten verweisen, sodass das Zurückkehren so einfach ist wie das Setzen von `currentNode = currentNode.parent` und das erneute Rendern. Dieser Ansatz verwendet einfache Datenstrukturen, bietet aber genau das gewünschte UX-Verhalten.

Wenn Sie einen bestehenden CodePen modifizieren, achten Sie auf jeglichen Initialisierungscode, der beim Laden der Seite ausgeführt wird, sowie auf alle Ereignisbehandler, die an Schaltflächen oder Links angehängt sind. Bevor Sie eine Funktion löschen, prüfen Sie, wo sie verwendet wird: Wenn sie die einzige Stelle ist, die die Zeichenroutine für den Baum aufruft, müssen Sie sie beibehalten oder durch eine Alternative ersetzen. Sie können den Code auch refaktorisieren, indem Sie die reine Rendering-Logik in eine separate Funktion auslagern und diese sowohl beim Laden der Seite als auch bei Navigationsereignissen aufrufen. Dabei können Sie nicht benötigte Funktionen wie „Übergeordnete Elemente anzeigen“ bedenkenlos entfernen.

Da Sie erwähnt haben, dass Sie etwas Minimales in reinem JavaScript wünschen, sollten Sie mit einem sehr kleinen Prototyp beginnen, der lediglich Textknoten und Schaltflächen zur Auswahl rendert. Sobald die Kernnavigation einwandfrei funktioniert und die „Zurück“-Funktion sich wie erwartet verhält, können Sie sie schrittweise erweitern: Fügen Sie CSS-Styling hinzu, vielleicht SVG-Verbinder zwischen den Knoten, und erkunden Sie erst später Bibliotheken für komplexere Layouts.

Von prototypischen UI-Bäumen bis hin zu realen Regressionsmodellen

Es besteht ein wichtiger Unterschied zwischen einem UI-Entscheidungsbaum, den man fest einprogrammiert, damit sich die Benutzer durchklicken können, und einem echten Regressionsbaummodell, das aus Daten lernt, aber sie teilen die gleiche konzeptionelle Struktur. In beiden Fällen gibt es Knoten mit Bedingungen, Verzweigungen basierend auf Antworten und Blätter, die ein Ergebnis ausgeben, sei es eine Empfehlung oder eine Zahl.

Bei einer handgefertigten Benutzeroberfläche gestalten Sie alle Fragen und Ergebnisse selbst und übernehmen damit effektiv die Rolle des Lernalgorithmus. Im Kontext des maschinellen Lernens hingegen lernt ein Algorithmus wie Gradient Boosting diese Aufteilungen anhand eines Datensatzes, gesteuert durch Kriterien wie Entropie, Informationsgewinn oder Varianzreduktion. Man gibt den Baum nicht direkt vor, sondern stellt Beispiele bereit und lässt den Algorithmus die Struktur erkennen.

Ein praktischer Arbeitsablauf besteht darin, zunächst den UI-Baum zu implementieren, der Ihrem aktuellen Verständnis des Problems entspricht, und später, wenn Sie Daten aus der realen Welt sammeln, die manuell entworfene Logik durch ein gelerntes Modell zu ersetzen. Dieses Modell kann in Python oder Azure Machine Learning trainiert, als JSON oder in einem anderen portablen Format exportiert und anschließend von Ihrer JavaScript-Anwendung geladen werden. Jeder Entscheidungsbaum oder jedes Ensemble kann als verschachteltes Objekt dargestellt werden, das Ihre Benutzeroberfläche durchläuft, um Vorhersagen zu treffen oder dem Benutzer eine Erklärung zu liefern.

Bei einigen Produkten kombinieren die Teams beide Ansätze: ein gelerntes Modell zur Berechnung einer numerischen Punktzahl oder Empfehlung und einen separaten, von Menschen entworfenen Baum zur Strukturierung der Fragestellung in der Benutzeroberfläche. Beispielsweise könnte Ihr Modell die Erfolgswahrscheinlichkeit schätzen, während die Benutzeroberfläche die Fragen so organisiert, dass es sich für die Benutzer natürlich anfühlt und dem mentalen Modell entspricht, das Sie aus der Benutzerforschung abgeleitet haben.

Das Verständnis der theoretischen Seite – Entropie, Informationsgewinn, Gradient Boosting, Überanpassung und Beschneidung – hilft Ihnen zu erkennen, wann Ihre UI-Struktur irreführend sein könnte oder wann der Baum eines gelernten Modells zu kompliziert ist und Einschränkungen benötigt. Mit diesem Wissen können Sie Visualisierungen und Interaktionen gestalten, die nicht nur gut aussehen, sondern auch getreu widerspiegeln, wie das zugrunde liegende Modell Entscheidungen trifft.

Alles in allem bieten Entscheidungsbäume eine besonders gelungene Brücke zwischen visuellem Design, intuitivem Denken und rigorosem maschinellem Lernen. Deshalb spielen sie in Kursen, Abzeichen und Plattformen wie Azure Machine Learning eine so wichtige Rolle. Sobald Sie die Grundlagen beherrschen und mit ein paar einfachen JavaScript-Prototypen üben, sind Sie bestens gerüstet, um fortgeschrittenere Ensembles wie Boosted Regression Trees und Random Forests zu erkunden und diese Modelle in reale Webanwendungen zu integrieren, ohne sich dabei verloren zu fühlen.

Regression der Entscheidungsgründe seit Null
Verwandte Artikel:
Entscheidungsbaumregression von Grund auf: Theorie und Praxis
Zusammenhängende Posts: