Information Technology Reference
In-Depth Information
Vektor mit Verweisen auf die Kindknoten. Die Klasse DecisionTree besitzt einen
Namen ( name ), einen Verweis auf ein DataSet-Objekt (wie in den Klassen des Neuro-
nalen Netzes), die Zielvariable classVar sowie eine Liste aller Variablendefinitionen
für die Datenmenge. Der Vektor mit Beispielen enthält die Trainingsdatensätze, die mit
Hilfe des Attributsets aus den ursprünglichen Trainingsdaten abgeteilt wurden. Für den
Entscheidungsbaum gibt es einen einfachen Konstruktor, mit dem der Name eingestellt
werden kann. BuildDecisionTree() ist sicherlich die wichtigste Methode in dieser
Klasse. Sie nimmt drei Parameter auf: einen Vektor mit Beispielen (die Datenmenge),
eine Liste mit Felddefinitionen und den Standardwert, der ausgegeben werden soll, falls
der Entscheidungsbaum versagt. Zuerst wird der Wurzelknoten des Entscheidungbaums
instanziiert. Falls die Trainingsmenge leer ist, wird der Standardwert ausgegeben. Falls
alle Datensätze der Trainingsmenge im Klassenfeld den gleichen Wert aufweisen, wird
ein Blattknoten mit diesem Wert zurückgegeben. Falls keine dieser Bedingungen wahr
ist, muss ein Entscheidungsbaum erzeugt werden. Im ersten Schritt wird dazu ein Attribut
oder eine Variable ausgewählt, mit deren Hilfe die Daten am besten aufgeteilt werden
können. Die Methode chooseVariable() trifft diese Entscheidung auf der Grundlage
der implementierten Enscheidungstheorie. Dabei wird die Wurzel dieses Baums einem
Knoten für diese Variable zugeordnet. Nachdem entschieden ist, nach welcher Variable die
Daten aufgespalten werden, muss bestimmt werden, welcher diskrete Wert dieses Attri-
buts für die Spaltung verwendet werden soll. Die Schleife for() entscheidet dies, indem
sie jeden möglichen Wert der Variable nimmt, die Trainingsdaten (Beispiele) in Unter-
mengen teilt, in denen alle Datensätze den Sollwert dieses Attributs besitzen, und den
Informationsgewinn für diesen Wert der Variablen berechnet. Dabei erfolgt ein rekursiver
Aufruf von buildDecisionTree() , um die Zweige des Baums zu besetzen, solange
bis ein vollständiger Entscheidungsbaum vorliegt, der aus dem Wurzelknoten entspringt.
Die Methode chooseVariable() nimmt zwei Parameter an: die Liste der relevanten
Variablen und eine Untermenge der Trainingsdaten. Zuerst wird allerdings getCount()
aufgerufen, um die Zahl der positiven und negativen Beispiele der Klassenvariablen zu
berechnen, die als Elemente eines Ganzzahlen-Arrays zurückgegeben werden. Dann er-
folgt der Aufruf von computeInfo() , was zur Berechnung des Informationswertes
dieser Datenmenge führt, unter Zuhilfenahme von p und n , die von getCounts() zu-
rückgegeben wurden. In einem letzten Schritt berechnet der Algorithmus den Rest für
jede Variable und wählt denjenigen aus, der den größten Informationsgewinn enthält. Die
Methode computelnfo() nimmt zwei ganzzahlige Parameter, p und n, als Eingabe.
Sie berechnet den Informationswert, wie zuvor in der Formel für I definiert. Der einzige
kompliziertere Schritt ist die Berechnung des Logarithmus log 2 n, bei der man sich die
mathematische Tatsache zunutze macht, dass der Logarithmus zu jeder Basis berechnet
werden kann, indem man den natürlichen Logarithmus von n nimmt und ihn durch den
natürlichen Logarithmus zur Basis 2 teilt. Die Methode computeRemainder() nimmt
eine einzige Variable und eine Datenmenge als Eingabe. Sie berechnet die Zahl der positi-
ven und negativen Fälle für jeden individuellen Wert, den die diskrete Variable annehmen
kann. Anschließend berechnet sie den Informationswert jedes einzelnen Wertes, gemessen
Search WWH ::




Custom Search