Wir haben uns bislang mit metrisch skalierten Prognosen beschäftigt. Genauso wichtig sind jedoch auch nominale Prognosen, also Prognosen auf Kategorien wie Kündiger/Nichtkündiger etc. Hier kommen Verfahren wie Entscheidungsbäume, logistische Regression etc. zum Einsatz. Standard-Excel bietet hier fast nichts.
In einem einfachen Entscheidungsbaumverfahren wird eine Zielvariable (z. B. Kauf von E-Reader) mit unabhängigen Variablen (z. B. Dauer der Kundenbeziehung, Kaufverhalten) auf der Basis von Istdaten verglichen und mögliche Abhängigkeiten herausgearbeitet. So könnte es bspw. eine Abhängigkeit zwischen der Dauer der Kundenbeziehung und der Kaufwahrscheinlichkeit geben. Beim Entscheidungsbaumverfahren werden solche Regeln nach Signifikanz hierarchisch angewendet. Eine typische Regel könnte sein: "Wenn eine Kundenbeziehung länger als 2 Jahre dauert und dieser Kunde einen Kaufanteil an elektronischen Artikeln von mehr als 50 % hat, steigt die Kaufwahrscheinlichkeit auf 40 %".
Um die Qualität der Ergebnisse beurteilen zu können, trennt man zwischen Trainings- und Testdaten. Beide enthalten unabhängige Attribute und die abhängige Zielgröße. Der Algorithmus lernt anhand der Trainingsdaten. Testdaten werden zur Überprüfung des Lösungsverfahrens verwendet, indem das Algorithmus-Ergebnis mit der auch in den Testdaten vorhandenen Zielgröße verglichen wird. Die Trennung ist notwendig, denn wenn man mit den Trainingsdaten auch testet, werden letztendlich die Hypothesen bestätigt. Auf der anderen Seite tut es natürlich weh, wenn man die Trainingsdaten reduzieren muss. Allerdings kann man ja nach erfolgreichem Training und Testen, die Testdaten zu einer erweiterten Trainingsauswertung heranziehen.
Bei unserem Beispiel handelt es sich um fiktive Webnutzer eines Shops. Im Beispiel soll untersucht werden, wie hoch die Neigung der Bestandskunden ist, auf eReader umzusteigen. Hierzu steht eine Menge von Attributen pro Kunde zur Verfügung, wie bspw. Käufe in der Vergangenheit, Alter, Geschlecht, Zahlungsmethoden etc.. Hypothesen über Einflussfaktoren sind zunächst nicht vorhanden.
1.3.1 Daten importieren
Eine Trainings-Datei (eReader_Training.csv) kann einfach in Excel über das Band "Daten", Button "Aus Text/CSV" eingelesen werden.
Die Datei hat Feldüberschriften und der Separator ist ein Komma (Abb. 5). Das gewünschte Ergebnis zeigt Abb. 6.
Abb. 5: Ausführung des Import-Assistenten
Abb. 6: Import-Ergebnis
Es wird nun wieder "R.E.defineDT()" zur Übernahme der Daten verwendet:
=R.E.defineDT("DS";eReader_Training) |
1.3.2 Daten trennen
Nun soll noch eine Trennung nach Trainings- und Testdaten vorgenommen w erden. Dies kann mit folgender Sequenz erreicht werden.
set.seed(101); s=sample(nrow(DS),0.8*nrow(DS)) trainDS=DS[s,] testDS = DS[-s,] |
"set.seed()" setzt den Startwert bei "sample()". Damit wird immer die gleiche Aufteilung vorgenommen. "sample()" zieht zufällig eine bestimmte Anzahl an Elementen aus einem Vektor.
1.3.3 Entscheidungsbaum einrichten
Jetzt wird noch ein Entscheidungsbaumalgorithmus benötigt. Hierzu wird ein Package verwendet. Entscheidungsbäume sind in verschiedenen Packages implementiert. Nur: Welcher ist am besten geeignet? Es ist sinnvoll, in einschlägigen Communities oder Büchern zu stöbern. "rpart" wird häufig verwendet, weil die Methode einfach anzuwenden und recht robust ist. Führen Sie also folgenden Befehl in der R-Konsole aus:
install.packages(“rpart“) |
Die Library muss schließlich noch aktiviert werden. Dies ist sinnvoll, um den Arbeitsspeicher nicht unnötig zu belasten. Während "install.packages()" nur einmal ausgeführt wird, muss "library()" bei Neustart von R immer wieder aufgerufen werden. Somit empfiehlt es sich, dieses Statement entweder als oberste Zeile im function-Script oder direkt in die aufrufende Funktion zu packen.
Nun könnten wir den Algorithmus starten. Die Funktion "rpart" wird wie folgt aufgerufen:
=R.E.eval("dt=rpart(eReader_Adoption ~ . – User_ID ,data=trainDS)") |
Hierbei ist wieder die spezielle Syntax zur Kennzeichnung der abhängigen und unabhängigen Variablen zu beachten. Die Zielvariable (hier "eReader_Adoption") wird vorangestellt und mit der Tilde mit den gewünschten unabhängigen Variablen verbunden. Der Punkt dient übrigens als Vereinfacher für die Auswahl aller in der Tabelle vorhandenen Felder (mit Ausnahme der Zielvariable natürlich). Da die User_ID sicherlich keinen erklärenden Einfluss haben wird, kann sie mit dem Minuszeichen aus der Analyse ausgeklammert werden.
Das mit dem oben aufgeführten R-Befehl erzeugte Objekt "dt" ist eine Liste mit vielen geschachtelten Detailinformationen, die nicht einfach als Matrix angezeigt werden kann. Daher zeigt Excel als Ergebnis "#WERT" an, was nicht schön aber unproblematisch ist. In R kann nun die Analyse erfolgen.
Geben Sie in der R-Konsole "dt <RETURN>" ein. Nun werden die Baumelemente mit den jeweiligen Wahrscheinlichen aufgelistet (Abb. 7). Der Entscheidungsbaum wird durch Einrückungen dargestellt. Für jede Klasse wird eine Wahrscheinlichkeitsaussage getroff...