C ++ Entscheidungsbaumimplementierungsfrage: Think In Code

9

Ich habe schon ein paar Jahre lang gecodiert, aber ich habe immer noch nicht den Anschein von Pseudo-Kodierung bekommen oder habe die Dinge noch im Code nachgedacht. Aufgrund dieses Problems habe ich Probleme herauszufinden, was genau zu tun ist, um einen lernfähigen Entscheidungsbaum zu erstellen.

Hier sind ein paar Seiten, die ich mir angesehen habe und mir vertrauen, dass es noch viel mehr

gäbe

Entscheidungsbaum-Tutorials

DMS-Lernprogramme

Zusammen mit einigen Büchern wie Ian Millingtons KI für Spiele, die eine ordentliche Zusammenfassung der verschiedenen Lernalgorithmen enthält, die in Entscheidungsbäumen verwendet werden, und Verhaltensmathematik für die Spielprogrammierung, die im Grunde alles über Entscheidungsbäume und Theorie ist. Ich verstehe die Konzepte für einen Entscheidungsbaum zusammen mit Entropie, ID3 und ein wenig darüber, wie man einen genetischen Algorithmus verflechtet und einen Entscheidungsbaum hat, der die Knoten für die GA bestimmt. Sie geben einen guten Einblick, aber nicht das, wonach ich wirklich suche.

Ich habe einen Basiscode, der die Knoten für den Entscheidungsbaum erstellt, und ich glaube, ich weiß, wie man wirkliche Logik implementiert, aber es nützt nichts, wenn ich keinen Zweck für das Programm habe oder Entropie oder einen Lernalgorithmus habe beteiligt.

Was ich frage ist, kann mir jemand helfen, herauszufinden, was ich tun muss, um diesen Lern-Entscheidungsbaum zu erstellen. Ich habe meine Knoten in einer eigenen Klasse, die Funktionen durchströmt, um den Baum zu erzeugen, aber wie würde ich Entropie in diese einfügen, und sollte sie eine Klasse haben, eine Struktur, bin ich mir nicht sicher, wie ich sie zusammensetzen soll. Pseudocode und eine Idee, wohin ich mit all dieser Theorie und Zahlen gehe. Ich kann den Code zusammensetzen, wenn ich nur wüsste, was ich programmieren muss. Jede Anleitung würde geschätzt werden.

Wie würde ich grundsätzlich darüber sprechen?

Hinzufügen eines Lernalgorithmus wie ID3 und Entropie. Wie sollte es eingerichtet werden?

Sobald ich herausgefunden habe, wie ich all das angehen soll, werde ich dies in eine Zustandsmaschine implementieren, die verschiedene Zustände in einem Spiel- / Simulationsformat durchläuft. All dies ist bereits eingerichtet, ich denke nur, dass dies stand-alone sein könnte und sobald ich es herausgefunden habe, kann ich es einfach auf das andere Projekt verschieben.

Hier ist der Quellcode, den ich für jetzt habe.

Vielen Dank im Voraus!

Haupt.cpp :

%Vor%

Entscheidungsbaum.h :

%Vor%

Decisions.cpp :

%Vor%

TreeNodes.h :

%Vor%

TreeNodes.cpp :

%Vor%     
CodingImagination 13.04.2011, 08:01
quelle

3 Antworten

1

Bitte korrigiert mich, wenn ich falsch liege, aber nach den Bildern in Ссылка und Ссылка sollte die eigentliche Entscheidungslogik in den Knoten, nicht in der Struktur gehen. Sie könnten dies modellieren, indem Sie polymorphe Knoten haben, einen für jede Entscheidung, die gemacht werden soll. Mit ein wenig Änderung an der Baumkonstruktion und einer kleinen Änderung für die Entscheidungsübertragung sollte Ihr Code in Ordnung sein.

    
LumpN 13.04.2011 09:23
quelle
1

Grundsätzlich müssen Sie alles in Etappen unterteilen und dann jeden Teil des Algorithmus modularisieren, den Sie zu implementieren versuchen.

Sie können dies im Pseudo-Code oder im Code selbst mit Funktionen / Klassen und Stubs tun.

Jeder Teil des Algorithmus können Sie dann in einer Funktion codieren und sogar diese Funktion testen, bevor Sie alles zusammenfügen. Sie werden im Grunde mit verschiedenen Funktionen oder Klassen enden, die für bestimmte Zwecke bei der Implementierung des Algorithmus verwendet werden. In Ihrem Fall für die Baumkonstruktion haben Sie also eine Funktion, die Entropie an einem Knoten berechnet, eine andere, die die Daten in Teilmengen an jedem Knoten partitioniert, usw.

Ich spreche hier im allgemeinen Fall und nicht spezifisch in Bezug auf die Entscheidungsbaumkonstruktion. Schauen Sie sich das Buch zu Machine Learning von Mitchell an, wenn Sie spezifische Informationen zu Entscheidungsbaumalgorithmen und den damit verbundenen Schritten benötigen.

    
indigo 18.05.2012 09:26
quelle
0

Der Pseudocode zur Implementierung eines Entscheidungsbaums ist wie folgt

%Vor%

Sie müssen Knoten auf jeder Ebene mit einem Code wie

speichern

entscheidungsbaum [attr] [val] = neuer_knoten

    
MARK 26.01.2014 21:47
quelle