Die Interpretation dieser Auflistung ist recht einfach: Kunden mit einer Website_Activity von "Frequent" und "Regular", die noch keine digitalen Bücher gekauft haben und die jünger als 53,5 Jahre sind, gehören mit einer Wahrscheinlichkeit von 59,26 % zu den "Early Adopters" (Markierung 1 in Abb. 8). Wenn sie hingegen älter oder gleich 53,5 Jahre alt sind, gehören sie mit einer Wahrscheinlichkeit von 59,46 % zur "Early Majority" (Markierung 2 in Abb. 8).
Der Baum ist allerdings sehr detailliert, was ein Zeichen für sog. Overfitting ist: Die resultierenden Klassen sind klein und wie das bei Stichproben so ist, sinkt natürlich auch die Signifikanz. Ein sog. Pruning, d. h. das Zusammenstutzen des Baums ist zu empfehlen. Alternativ können die Eingabeparameter von "rpart()" so gesetzt werden, dass der Baum erst gar nicht so groß wird.
Die Ergebnisse kann man auch in Excel auswerten. Elemente eines komplexen Objekts können mit "$" ausgewertet werden. Interessant ist es zu wissen, welche Variable den größten Erklärungswert hat. Hierzu wird folgende Abfrage gestartet:
Da die Ergebnismenge eine einfache Matrix ist, ist die Darstellung in Excel einfach. Mit names() kann das Attribut ausgegeben werden. Geben Sie wie in Abb. 9 dargestellt in M13:M20 die folgende Matrixformel ein:
=R.E.eval("names(dt$variable.importance)")&LINKS(M9;0) |
Dann geben Sie in N13:N20 diese Matrixformel ein:
=R.E.eval("dt$variable.importance")&LINKS(M9;0) |
Ganz eindeutig ist die Eigenschaft "Bought_Digital_Books" am bedeutendsten.
Abb. 8: Bedeutung der Attribute
Predictive Analytics bedeutet jedoch nach vorne zu schauen, also zu fragen, ob die Regeln auf Sachverhalte anzuwenden sind, bei denen die Zielvariable noch nicht bekannt ist. In unserem Beispiel soll eingeschätzt werden, ob die Kunden aufgrund ihrer Eigenschaften zu den "Early Adopters" oder zu anderen Gruppen gehören.
Hierzu wird die Prognosedatei benötigt (Abb. 9). Im zweiten Schritt werden nun die Prognosedaten eingelesen. Die Daten werden wieder an R übergeben.
Abb. 9: Prognosedaten
Wieder erfolgt die Aufbereitung:
=R.E.defineDT("DS2"; eReader_Training) |
Jetzt fehlt noch ein Statement zur Prognose. Über die Funktion "predict()", die schon bei der Regression zum Einsatz kam, können die Parameter geschätzt werden:
predict(dt,DS2,type='class') predict(dt,DS2) |
"class" gibt die Vorhersage aus. Wenn nichts angegeben wird, wird "type = prob" angenommen. Über "cbind" (dies steht für Spaltenbindung) kann die Prognosedatei mit der Analyseergebnis verbunden werden.
=R.E.eval("cbind(DS2[,list(User_ID,Gender)],predict(dt,DS2))") |
Abb. 10: Ausschnitt aus der Vorhersage
Es wird dargestellt, mit welcher Wahrscheinlichkeit ein Kunde einer bestimmten Klasse angehört. Es fällt auf, dass die Wahrscheinlichkeiten bei einzelnen Datensätzen gleich sind (z. B. der erste und der vierte Datensatz aus Abb. 10). Dies liegt daran, dass die Datensätze derselben Entscheidungsklasse zugeordnet wurden. Wahrscheinlichkeiten werden aber nur pro Klasse ermittelt. Die Ergebnisse sind einfach Wahrscheinlichkeiten, die durch Zählen des Auftretens, dividiert durch die Gesamtzahl der Klasse ermittelt werden.
Um nun die Qualität dieser Analysemethode zu ermitteln kann der Testdatenbestand als Basis verwendet werden. Bei nominalen Daten sind die einschlägigen Fehlermaße bekannt; bei nominal skalierten Ergebnissen sieht es anders aus. Hierzu kann eine sog. Confusion Matrix erstellt werden. Hier werden die Prognoseergebnisse und die wirklichen Ergebnisse in einer Matrix gegenübergestellt. Nur die Diagonale kennzeichnet korrekte Prognosen. Hieraus kann einfach die Akkuratheit ermittelt werden.
Abb. 11: Confusion Matrix
Hieraus lässt sich die Akkuratheit leicht bestimmen: Man teilt die Diagonalsumme durch die Gesamtsumme.
Mit ein wenig Aufwand kann man die Confusion Matrix durchaus selbst erstellen. Aber es gibt hierzu das Package "caret". Dies stellt eine solche Berechnung zur Verfügung:
=R.E.eval2("library(caret); confusionMatrix(predict(dt,testDS,type='class'),testDS$eReader_Adoption)$table") |
Zur grafischen Darstellung wird ein weiteres Package benötigt. Starten Sie folgende Befehle:
install.packages("rpart.plot") library(rpart.plot) |
Die Erzeugung der Grafik erfolgt über folgenden Befehl:
=R.E.eval("BERT.graphics.device('DecTree');rpart.plot(a)") |
Die Entscheidungsklassen werden nun grafisch direkt in Excel dargestellt (s. Abb. 12)
Abb. 12: Entscheidungsbaum über rpart.plot
Die Analyse startet mit dem Attribut "Website_Activity". Der Anteil der "EarlyAdopters" steigt damit von ursprünglich 30 % auf 40 % usw. Die Interpretation ist genauso durchzuführen wie bei der Textdarstellung aus Abb. 8.
Mit diesen Schritten wurde eine komplette Entscheidungsbaumanalyse durchgeführt. Natürlich empfiehlt es sich, sich etwas genauer mit der Methodik auseinanderzusetzen. Hierzu sei auf die einschlägige Literatur verwiesen.
Welche Konsequenzen ergeben sich aus diesem Entscheidungsbaum für den Controller?
- Werbemaßnahmen können effekti...