Projektdokumentation: Data – Miningcup 2012 Team: Bachelor Mitglieder: Benjamin Krämer Roman Knolle Franz Klaus Aufgabenstellung: Analyse eines Warenkorbs mit 570 Items zur Analyse des Bestellverhaltens. Gegeben ist eine Datei mit einer Auflistung von 570 Items und deren Verkaufsanzahl und Preis über einen Zeitraum von 42 Tagen. Ziel ist es mit Hilfe verschiedener DataMiningverfahren eine Vorhersage über die Verkaufszahlen der Items in den folgenden 14 Tagen. Datenanalyse: Gegeben ist die Anzahl der verkauften Items pro Tag sowie die jeweiligen Preise. Sowohl die Preise als auch die Anzahl der Verkäufe unterliegen mehr oder weniger starken Schwankungen. Erste Überlegungen: Nach ersten groben Analysen ist uns eine Unabhängigkeit der einzelnen Items von deren Preis und der verkauften Menge aufgefallen. Selbst bei steigendem Preis konnte die verkaufte Menge noch steigen. Des Weiteren erkannten wir, dass die Items jeweils auf verschiedene Analyseverfahren besser ansprachen als auf andere. Wir konnten jedoch kein Analyseverfahren finden, welches alle Items zufriedenstellend analysierte. Anhand dieser Erkenntnis fingen wir an, das jeweils beste Analyseverfahren für jedes einzelne Item zu suchen. Im zweiten Schritt haben wir dann eine Abhängigkeit von den Tagen bei jedem Item abgebildet. Dies war sehr wirksam und verkleinerte die Fehlerpunkte sehr stark. Durchschnittsberechnung Im diesem ersten Workflow wird die gegebene Train Datei in 28 und 14 Tage aufgeteilt und es wird die durchschnittliche Anzahl der verkauften Items für den ersten Zeitraum ermittelt. Diese werden dann als Variablenliste in das zweite Workflow eingefügt. Dieser zweite Workflow ist für die Auswertung und die Fehlerwertberechnung des Durchschnittsverfahrens. Wir nehmen für die Auswertung die letzten 14 Tage aus der gegebenen Train Datei und vergleichen die gegebenen Verkaufszahlen mit unserem vorher berechneten Durchschnittswert. Hierbei wird das Quadrat der Differenz von einem Item am jeweiligen Tag berechnet (Sum). Dies ermöglicht einen direkten Vergleich zu anderen Verfahren und die Wurzel der Summe dieser Werte sind die vom Data Mining Cup(DMC) geforderten Fehlerpunkte. Das Durchschnittsverfahren hat für einige der Werte gute Vorhersagen ermöglicht. Als Letztes wird hier der Datensatz auf den Joiner vorbereitet, um die besten Ergebnisse der einzelnen Analyseverfahren zu verbinden. Entscheidungsbaum Das Entscheidungsbaum Verfahren, das wir in diesem Workflow benutzen, ist das erste Verfahren, das wir nutzen, indem wir Bezug auf die von uns erhofften Tagesrhythmen nehmen. Für den Bezug auf die Tagesrhythmen nutzen wir die Variable „Regal“. Diese ist so aufgebaut, dass die Schleife für jedes Item ein Tagesrhythmus von 1 bis 14 durchläuft. Dabei wird in einem Java Snippet in einer neuen Spalte vom ersten Tag bis zum Tagesrhythmus hochgezählt, um dann wieder von 1 zu starten. Der Tagesrhythmus eins wurde von uns aufgenommen, um zu prüfen, ob bei den Items evtl. keine Abhängigkeit von den Tagen vorhanden ist. Dies war bei einigen wenigen Items auch der Fall. Das oben gezeigte Workflow wird genutzt, um die besten Tagesrhythmen für jedes Item zu ermitteln, d.h. dass für jedes Item die geringste Sum gesucht und dieser zusammen mit Item ID und Tagesrhythmus an eine Ausgabedatei weitergegeben wird. Das dritte Workflow bildet wieder die Sum und bereitet die Daten auf den Joiner vor. Support Vector Machine Zunächst haben wir mit einem leicht abweichenden Workflow die besten Tagesrhythmen für die SVM ermittelt. Nach dem das getan war, haben wir mit dem unten angestellten Workflow unsere Regal-Variable so verändert, dass sie nun die Item IDs aller Items enthält, die besten Tagesrhythmen, die wir vorab ermittelt haben und für jedes Item die Sigma Werte von 0,1 bis 1. Mit der so veränderten Regal-Variable und dem oben gezeigten Workflow war es uns möglich, das SVM Verfahren RBF so effektiv wie möglich zu nutzen. Neuronale Netze Bei den Neuronalen Netzen hatten wir das Problem, dass die ausgegebene Vorhersage-Spalte noch normalisiert war. Dies konnten wir beheben, indem wir den maximalen Wert der verkauften Mengen von jedem Item in den ersten 28 Tagen als Variable in die Ausgabedatei schrieben. Da wir die Normalisierung bei den verkauften Mengen über eine Min-Max Normalisation vorgenommen hatten, konnten wir so die benötigten Werte errechnen. Ähnlich wie bei den anderen Analyseverfahren wurde dann ein Tagesrhythmus hinzugefügt. Bei dem letzten Workflow werden die besten Ergebnisse nach dem Tagesrhythmus errechnet und die Datei für den Joiner vorbereitet. Neutonale Netze / Bett Variable Als weiterer Ansatz hatten wir vor, die Neuronalen Netze noch weiter zu optimieren. Dabei hatten wir vor, nach dem Tagesrhythmus noch die Neuronen und Lagen des Netzes zu verändern. Die Variablenliste „Bett“ bildete dabei das jeweilige Item mit dem schon optimierten Tagesrhythmus und einer angepassten Lagenzahl von 1 bis 10 sowie dazu jeweils 1 bis 10 Neuronen. Nach dem Berechnen der Ausgabewerte für die letzten 14 Tage der Train Datei, welches einige Stunden in Anspruch nahm, kamen wir mit diesem Ansatz nicht weiter. Die Auswertung der ca. 800 000 Zeilen hätte einige Tage in Anspruch genommen, welche uns leider nicht mehr zur Verfügung standen. Darum mussten wir für das Joinen der Dateien die Ausgabewerte der Neuronalen Netze ohne die Anpassung an Lage und Neuronen wählen. Join Mit dem oben zu sehenden Workflow haben wir im letzten Schritt die besten Ergebnisse der jeweiligen Analyseverfahren für jedes Item zusammen mit dem dazugehörigen Parametern an eine Datei übergeben, um so die Fehlerpunkte zu minimieren. Mit Hilfe der Verfahren Durchschnitt, Entscheidungsbaum und Neuronale Netze haben wir am Ende für unsere Testdaten einen Gesamtfehlerwert von 391,8 Punkten berechnet.