Doku - Fakultät für Wirtschaftswissenschaften an der Hochschule
Transcription
Doku - Fakultät für Wirtschaftswissenschaften an der Hochschule
Fakultät für Wirtschaftswissenschaften Projektbericht „Don’t get kicked“ - KNIME Zur Veranstaltung Business Intelligence eingereicht von: Birte Spitz (110127) Mandy Schacht (110192) Betreuer: Wismar, den 20. Dezember 2011 Prof. Cleve Inhaltsverzeichnis Inhaltsverzeichnis ............................................................................................................... II Abbildungsverzeichnis ...................................................................................................... IV 1. Aufgabenstellung ......................................................................................................... 1 2. Datenvorbereitung ....................................................................................................... 2 3. Datenvorbereitung – Mandy Schacht .......................................................................... 3 3.1. Datensäuberung ........................................................................................................ 3 3.1.1. Fehlende und inkonsistente Daten ................................................................... 3 3.1.2. Ausreißer ......................................................................................................... 6 3.2. 3.2.1. Dimensionsreduktion ........................................................................................ 6 3.2.2. Aggregation ...................................................................................................... 7 3.3. 4. 5. Datenreduktion ........................................................................................................ 6 Datentransformation ................................................................................................ 8 3.3.1. Anpassung der Datumsangaben ...................................................................... 8 3.3.2. Anpassung der Preisangaben .......................................................................... 8 3.3.3. Berechnung abgeleiteter Werte ........................................................................ 9 3.3.4. Kombination von Attributen .............................................................................10 Datenvorbereitung – Birte Spitz .................................................................................12 4.1. Datenreduktion .......................................................................................................12 4.2. Datensäuberung/-transformation ............................................................................14 4.3. Neu berechnete Spalten .........................................................................................15 Data Mining - Umsetzung in KNIME ...........................................................................17 5.1. Grundsätzlicher Aufbau ..........................................................................................17 5.2. Naive Bayes ...........................................................................................................18 5.3. Decision Tree .........................................................................................................19 5.4. J48/WEKA..............................................................................................................20 II 5.5. Beispiel der Vorgehensweise .................................................................................21 6. Aufgetretene Probleme ...............................................................................................23 7. Fazit ..............................................................................................................................25 8. Anhang - Zeit- und Aufgabenplan ..............................................................................26 III Abbildungsverzeichnis Abbildung 1: Modellierung in KNIME ..................................................................................17 Abbildung 2: Daten Number to String .................................................................................18 Abbildung 3: Modellierung Naive Bayes..............................................................................19 Abbildung 4: Modellierung Decision Tree............................................................................20 Abbildung 5: Modellierung WEKA/J48 ................................................................................21 Abbildung 6: Gini-Index Verlauf ..........................................................................................22 IV 1. Aufgabenstellung Beim Kauf eines gebrauchten Autos bei einer Auktion besteht das Risiko, dass das gekaufte Auto Mängel aufweist. Geschieht dies, nennt man diese unvorteilhaften Käufe „kicks“. Diese unvorteilhaften Käufe resultieren oft aus gefälschten Kilometerzählern, mechanischen Problemen, die der Händler nicht erkennt, Problemen damit den Fahrzeugbrief vom Verkäufer zu bekommen oder anderen unvorhergesehenen Problemen. Diese Autos können nach den Transportkosten, Reparaturkosten und Marktverlusten beim Weiterkauf des Fahrzeuges sehr kostenspielig für den Händler sein. Wenn herausgefunden werden kann, bei welchen Autos ein höheres Risiko besteht, kann dies einen echten Mehrwert für den Händler bedeuten, da diese stets versuchen die bestmögliche Auswahl des Bestandes für den Kunden bereitzustellen. Die Aufgabe ist zu prophezeien, ob es sich beim angebotenen Auto bei einer Auktion um einen schlechten Kauf handelt. 1 2. Datenvorbereitung Aufgabe ist das Treffen der Entscheidung ob das Erwerben eines Autos ein guter oder schlechter Kauf ist. Diese Entscheidung soll anhand verschiedener Daten getroffen werden, die in einer Excel-Datei zur Verfügung gestellt wurden. Damit die Daten in KNIME verarbeitet werden und die Ergebnisse einheitlich interpretierbar sind muss zunächst eine Datenvorbereitung stattfinden. Diese Datenvorbereitung spielt eine wichtige Rolle und nimmt einen Großteil des Gesamtaufwandes ein. Dabei wird zwischen folgenden Klassen unterschieden: • Datenselektion und –integration • Datensäuberung • Datenreduktion • Datentransformation Bei der vorliegenden Aufgabe „Don’t get kicked“ muss die erste Klasse „Datenselektion und –integration“ nicht beachtet werden, da bei den bereitgestellten Daten kein Zusammenfügen o. Ä. mehr notwendig ist. Bei der Durchführung der Datenvorbereitung wurden im Team unterschiedliche Schwerpunkte gesetzt um eine möglichst umfassende Bearbeitung zu ermöglichen und um zu beobachten inwiefern sich die Ergebnisse unterscheiden. Während Birte Spitz den Fokus ihrer Vorbereitungen auf die Datenreduktion gerichtet hat, setzte Mandy Schacht den Schwerpunkt eher auf die anderen Aspekte der Datenvorbereitung. Aus diesem Grund werden im Folgenden die Datenvorbereitungen der Teammitglieder separat geschildert. Der dazugehörigen Zeit- und Aufgabenplan wird im Anhang aufgeführt. 2 3. Datenvorbereitung – Mandy Schacht 3.1. Datensäuberung 3.1.1. Fehlende und inkonsistente Daten In diesem Abschnitt werden die Ursprungsdaten der Trainingsdatei auf fehlende („LEERE“) oder fehlerhafte („NULL“) Angaben überprüft. Wenn eine Änderung der Daten notwendig ist wird die Vorgehensweise dazu gleich anschließend erläutert. Spalte A bis H Spalten : RefId (A), IsBadBuy (B), PurchDate (C), Auction (D), VehYear (E), VehicleAge (F), Make (G), Model (H) Diese Spalten sind vollständig bzw. enthalten kein „Null“, „Leere“ oder „Not Available“. Spalte I - Trim Bei 2360 Datensätzen fehlen die Abkürzungen für das Untermodell. Vorgehensweise: siehe unter Punkt 3.2.1. Spalte I – Trim. Spalte J - SubModel Diese Spalte enthält vollständige Angaben. Spalte K - Color Insgesamt enthalten 102 Autokäufe eine fehlerhafte Farbangabe. Davon wird 94-mal das Kriterium „Not Available“ und achtmal das Kriterium „Null“ angegeben. Vorgehensweise: das Kriterium „Not Available“ wird durch „Null“ ersetzt um eine einheitliche Datenformatierung zu erreichen. Spalte L - Transmission In dieser Spalte sind neun Autokäufe mit fehlenden Angaben zur Schaltungsart. Davon wird einmal das Kriterium „Leere“ und achtmal das Kriterium „Null“ angegeben. Vorgehensweise: das Kriterium „Leere“ wird durch „Null“ ersetzt. Spalte M - WheelTypeID Es fehlt bei 3169 Datensätzen die Reifentyp-ID. Vorgehensweise: das Kriterium „0“ wird durch „Null“ ersetzt. 3 Spalte N - WheelType Bei insgesamt 3174 Autokäufen sind keine genauen Angaben („Null“) zum Reifentyp gemacht. Special Reifen sind bei nur 755 Autokäufen zu finden. Vorgehensweise: Spalte N kann wahlweise herausgenommen und stattdessen mit Spalte M gearbeitet werden. Spalte O (VehOdo) Diese Spalte enthält vollständige Angaben. Spalte P bis R Spalten: Nationality (P), Size (Q), TopThreeAmericanName (R) Bei fünf Datensätzen (RefID 10890, 25171, 37988, 69950, 69960) ist für die drei genannten Spalten jeweils das Kriterium „Null“ angegeben. Spalte S - MMRAcquisitionAuctionAveragePrice (Auktionspreis durchschnittlich) Bei 846 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 18-mal und das Kriterium „0“ 828-mal angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte T - MMRAcquisitionAuctionCleanPrice (Auktionspreis Clean Price) Bei 715 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 18-mal und das Kriterium „0“ 697-mal angegeben. Weiterhin ist bei einem Datensatz ein Preis von 1,-USD angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte U - MMRAcquisitionRetailAveragePrice (Handelspreis durchschnittlich) Bei 846 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 18-mal und das Kriterium „0“ 828-mal angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte V - MMRAcquisitonRetailCleanPrice (Handelspreis Clean Price) Bei 846 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 18-mal und das Kriterium „0“ 828-mal angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. 4 Spalte W - MMRCurrentAuctionAveragePrice (Auktionspreis durchschnittlich, Tageskurs) Bei 819 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 315-mal und das Kriterium „0“ 504-mal angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte X - MMRCurrentAuctionCleanPrice (Auktionspreis Clean Price, Tageskurs) Bei 693 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 315-mal und das Kriterium „0“ 378-mal angegeben. Weiterhin ist bei einem Datensatz ein Preis von 1,-USD angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte Y - MMRCurrentRetailAveragePrice (Handelspreis durchschnittlich, Tageskurs) Bei 819 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 315-mal und das Kriterium „0“ 504-mal angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte Z - MMRCurrentRetailCleanPrice (Handelspreis Clean Price, Tageskurs) Bei 819 Datensätzen sind die Preisangaben fehlerhaft oder fehlen ganz. Das Kriterium „Null“ ist 315-mal und das Kriterium „0“ 504-mal angegeben. Vorgehensweise: das Kriterium „0“ durch „NULL“ ersetzen. Spalte AA – PRIMEUNIT und Spalte AB - AUCGUART Bei 69564 Datensätzen fehlen die Nachfrage- als auch die Garantie-Level-Angaben („Null“). Vorgehensweise: siehe unter Punkt 3.2.1. Spalte AA – PRIMEUNIT und Spalte AB – AUCGUART. Spalte AC bis AE Spalten: BYRNO (AC), VNZIP1 (AD), VNST (AE) Diese Spalten enthalten vollständige Daten. Es ist zu erwähnen, dass einem Bundesstaat (Spalte AE) auch mehrere Postleitzahlen (Spalte AD) zugeordnet werden können. Somit ist zu überlegen ob von einer Entfernung der Postleitzahlen abgesehen werden sollte. 5 Spalte AF – VehBCost Die Spalte mit den Angaben zu den Kaufkosten enthält vollständig Daten. Jedoch ist in einem Datensatz (RefID 20455) ein Kaufpreis von 1,-USD angegeben. Spalte AG – IsOnlineSale und AH – WarrantyCost Beide Spalten enthalten vollständige Daten. 3.1.2. Ausreißer Spalte T – MMRAcquisitionAuctionCleanPrice, Spalte X - MRCurrentAuctionCleanPrice und Spalte AF – VehBCost In diesen Kostenspalten sind Preise in Höhe von 1,- USD angegeben. Dieser Preis scheint jedoch sehr unwahrscheinlich und wurde deshalb durch das Kriterium „NULL“ ersetzt. Denn nur dadurch kann in den weiteren Kostenbe- und verrechnungen eine Verzerrung der Ergebnisse garantiert werden. Spalte K - Color In der Testdatei ist gegenüber den Trainingsdaten noch zusätzlich die Farbe „PINK“ angegeben. Da auch in der Trainingsdatei die Farben klassifiziert werden (Punkt 3.2.2. Aggregation) kann dieser Ausreißer einer Farbklasse zugeordnet und somit eingefangen werden. Dadurch sind die Farbangaben der Trainings- und Testdaten in KNIME wieder vergleichbar. 3.2. Datenreduktion 3.2.1. Dimensionsreduktion Spalte I – Trim Diese Spalte beinhaltet die Abkürzung des in Spalte J angegebenen Untermodells. Die Abkürzungen sind dabei nominal, numerisch als auch eine Kombination beider Möglichkeiten. Weiterhin ist bei 2360 Datensätzen keine Abkürzung des Untermodells angegeben. Aus diesen Gründen haben wir uns dafür entschieden die Spalte H (Trim) zu entfernen und dafür mit den vollständigen Untermodellbezeichnungen (Spalte J) zu arbeiten. Spalte AA – PRIMEUNIT und Spalte AB - AUCGUART Da bei beiden Spalten 69564 Angaben fehlen sind die wenigen vorhandenen Daten nicht aussagefähig genug. Beide Spalten wurden deshalb entfernt. 6 Es wurde als sinnvoll angesehen - außer den bereits genannten - nicht noch weitere Spalten aus der Excel-Datei zu entfernen, da in KNIME mit dem „Column Filter“ noch zusätzlich entschieden werden kann welche Spalten einbezogen werden sollen und welche nicht. 3.2.2. Aggregation Die Attribute bzw. Werte der drei nachfolgenden Spalten wurden unter Bezugnahme von Formeln zu einem übergeordneten Attribut bzw. einem Wert zusammengefasst. Bei den numerischen Werten beinhaltet die Klasse eins dabei die besten Werte. Des Weiteren ist unter dem Punkt 3.3.3. eine weitere Klassifikation zu dem Thema „Berechnung abgeleiteter Werte“ zu finden. Von einer Einordnung an dieser Stelle wurde abgesehen, da sich die Klassifikation auf den Inhalt des Abschnitts 3.3.3. bezieht. Spalte F – VehicleAge Bei dem Alter liegt die Annahme zugrunde, dass ältere Fahrzeuge im Laufe der Jahre mehr genutzt wurden und somit die Wahrscheinlichkeit für den Kauf eines unfallbehafteten oder störanfälligen Fahrzeugs mit zunehmendem Fahrzeugalter steigt. Altersklassen 1 = 0-3 2 = 4-6 3 = 7-9 Formel =WENN(F2<4;1;WENN(F2>6;3;2)) Spalte O – VehOdo Je mehr Kilometer ein Fahrzeug zurückgelegt hat desto größer sind der Verschleiß und die Reparaturanfälligkeit. Kilometerklassen 1 = 0-10000 2 = 10001-79999 3 = ab 80000 Formel =WENN(O2>80000;3;WENN(O2<10000;1;2)) Spalte K - Color Bei der Benennung der Farbklassen wurde die Schreibweise der Umlaute berücksichtigt, da es sonst zu Problemen bei der Datenverarbeitung in KNIME kommen kann. Auch wurde darauf geachtet, dass die Anzahl der Attribute in den einzelnen Klassen gleich ist. Das in den Testdaten zusätzlich auftretende Attribut „PINK“ kann der Farbklasse „ROTTOENE“ zugeordnet werden. Somit kann es in KNIME bei der Datenverarbeitung der Trainings- und Testdaten bezüglich der Farbe zu keinen Problemen kommen. 7 Farbklasse ROTTOENE BRAUNTOENE BLAUTOENE WEISSTOENE METALLICTOENE SCHWARZTOENE GRUENGELBTOENE SONSTIGE Farbe RED, ORANGE BROWN, MAROON BLUE, PURPLE WHITE, BEIGE SILVER, GOLD BLACK, GREY GREEN, YELLOW NULL, OTHER Formel =WENN(ODER(L2="RED";L2="ORANGE");"ROTTOENE"; WENN(ODER(L2="BROWN";L2="MAROON");"BRAUNTOENE"; WENN(ODER(L2="BLUE";L2="PURPLE");"BLAUTOENE"; WENN(ODER(L2="WHITE";L2="BEIGE");"WEISSTOENE"; WENN(ODER(L2="SILVER";L2="GOLD");"METALLICTOENE"; WENN(ODER(L2="BLACK";L2="GREY");"SCHWARZTOENE"; WENN(ODER(L2="GREEN";L2="YELLOW");"GRUENGELBTOENE";"SONSTIGE"))))))) 3.3. Datentransformation 3.3.1. Anpassung der Datumsangaben Die Spalte C (PurchDate) enthält das Datum des Kaufes bzw. das Datum der Auktion auf der das Auto verkauft wurde. Es ist jedoch unklar ob der Zeitpunkt des Kaufes einen Einfluss darauf hat ob das Auto ein guter oder schlechter Kauf ist. Da zwei verschiedene Datumsformate vorliegen muss mit Hilfe der nachfolgenden Formel ein einheitliches Datumsformat erstellt werden. =DATUM(RECHTS(C17;4);LINKS(C17;FINDEN("/";C17)1);TEIL(C17;FINDEN("/";C17;1)+1;2)) Die neue Spalte mit dem einheitlichen Datumsformat wurde „PurchDate2“ benannt und anstelle der alten Datumspalte eingefügt. 3.3.2. Anpassung der Preisangaben Spalte AF – VehBCost In Spalte AF – VehBCost sind 68 Kaufpreise mit amerikanischen Kommastellen angegeben. Da fast ausschließlich alle Preise in der Trainingsdatei ganzzahlig angegeben sind werden die 68 Kaufpreise in Spalte AF daran angepasst, sodass die Kostenangaben vereinheitlicht sind. 8 3.3.3. Berechnung abgeleiteter Werte Die nachfolgend genannten Spalten wurden separat sowohl für den „Average Price“ als auch für den „Clean Price“ eines Fahrzeugs eingefügt und berechnet. Die Daten beziehen sich dabei auf die Kostenangaben aus den Spalten S bis Z und auf die Kaufkosten (Spalte AF – VehBCost). Um Aussagen darüber treffen zu können ob ein Autokauf finanziell positiv für den Käufer ausgefallen und somit lohnenswert ist wurde eine Reihe von Berechnungen vorgenommen. Bei Berechnungen die das Kriterium „Null“ beinhalten wurde darauf geachtet, dass das Ergebnis ebenfalls als „Null“ ausgegeben wird. Zum einen wurde der gezahlte Kaufpreis vom Auktions- bzw. Handelspreis abgezogen. Im Ergebnis ist dann entweder eine Ersparnis (positiver Wert) oder ein Verlust (negativer Wert) zu finden. Ersparnis beim Kauf (+) = Auktionspreis durchschnittlich minus Kaufpreis Ersparnis beim Kauf (+) = Handelspreis durchschnittlich minus Kaufpreis Ersparnis beim Kauf (+) = Auktionspreis Clean Price minus Kaufpreis Ersparnis beim Kauf (+) = Handelspreis Clean Price minus Kaufpreis Um herauszufinden ob ein Auto seit dem Kauf an Wert gewonnen oder verloren hat wurde der „normale“ Auktions- bzw. Handelspreis mit dem Auktions- bzw. Handelspreis zum Tageskurs verrechnet. Wertsteigerung (+) oder Wertminderung (-) seit dem Kauf = Auktionspreis durchschnittlich, Tageskurs minus Auktionspreis durchschnittlich Wertsteigerung (+) oder Wertminderung (-) seit dem Kauf = Handelspreis durchschnittlich, Tageskurs minus Handelspreis durchschnittlich Wertsteigerung (+) oder Wertminderung (-) seit dem Kauf = Auktionspreis Clean Price, Tageskurs minus Auktionspreis Clean Price Wertsteigerung (+) oder Wertminderung (-) seit dem Kauf = Handelspreis Clean Price, Tageskurs minus Handelspreis Clean Price Um nicht nur die Punkte Ersparnis/ Verlust und Wertsteigerung/ Wertminderung separat zu betrachten wurde abschließend noch eine Verrechnung beider Punkte vorgenommen. Der Gedanke hinter dieser Berechnung ist, dass eine Ersparnis beim Autokauf durch eine anschließende Wertminderung aufgezehrt werden kann. Verrechnung Ersparnis mit Wertsteigerung (Auktionspreis durchschnittlich) Verrechnung Ersparnis mit Wertsteigerung (Handelspreis durchschnittlich) 9 Verrechnung Ersparnis mit Wertsteigerung (Auktionspreis Clean Price) Verrechnung Ersparnis mit Wertsteigerung (Handelspreis Clean Price) Den Überlegungen zur Folge sollte eine Ersparnis beim Kauf als auch eine anschließende Wertsteigerung ein Indiz für einen guten Autokauf sein. Im Umkehrschluss sollten dadurch auch die „Bad Buys“ unter dem Aspekt der Kostenbetrachtung identifiziert werden. Aggregation abgeleiteter Werte Für die Klassifizierung der Ergebnisse wurde eine einheitliche Formel benutzt. Wie bereits bei den Klassifizierungen des Alters und des Kilometerstands werden auch hierbei die besten Werte der Klasse eins zugeordnet. Da wie bereits erwähnt in den Kostenspalten und den daraus berechneten Werten auch das Kriterium „Null“ angegeben ist wurde dies in der Klassifizierung berücksichtigt. Kostenklassifizierung Null = Null 1 = 5000 < x 2 = 1000 < x ≤ 5000 3 = 0 < x ≤ 1000 4=x≤0 Formel =WENN(AH2="NULL";"NULL";WENN(AH2<=0;4;WENN(UND (AH2>0;AH2<=1000);3;WENN(UND(AH2>1000;AH2<=5000); 2;WENN(AH2>5000;1))))) 3.3.4. Kombination von Attributen Mit den nachfolgenden Kombinationen soll in KNIME überprüft werden ob die Ergebnisse besser ausfallen, wenn in einer Spalte mehrere verschiedene Attribute angegeben sind. Spalte G – Make, Spalte H – Model und Spalte J – SubModel Die einzelnen Angaben aus den Spalten Make, Model und SubModel wurden in einer neu eingefügten Spalte (Make, Model and Submodel) zusammengefasst. Klassifizierung Altersklasse und Kilometerstand Die Klassifikationen des Alters und Kilometerstands werden in einer neuen Spalte zusammengefasst. Zusammengefasste Klassen Preis durchschnittlich Alle Klassifikationen aus Punkt 3.3.3 mit Bezug auf den durchschnittlichen Preis werden in einer separaten Spalte zusammengefasst. 10 Zusammengefasste Klassen Clean Price Alle Klassifikationen aus Punkt 3.3.3 mit Bezug auf den Clean Price werden in einer einzelnen Spalte zusammengefasst. 11 4. Datenvorbereitung – Birte Spitz 4.1. Datenreduktion Da nicht alle Daten aus den gestellten Tabellen relevant sind, werden mehrere Spalten gelöscht. In der folgenden Tabelle wird erläutert welche Spalten aus welchem Grund entfernt wurden. Die folgenden Spaltenbezeichnungen beziehen sich auf die unbearbeitete Ursprungstabelle! Spalte A RefID Titel Beschreibung Die Spalte enthält nur eine laufende Nummer, die die verschiedenen Käufe bezeichnet und ist somit für das Durchführen der Analyse nicht relevant. C PurchDate Die Spalte enthält das Datum des Kaufes bzw. das Datum der Auktion auf der das Auto verkauft wurde. Da dieses Datum keinen Einfluss darauf hat, ob das Auto ein guter oder ein schlechter Kauf ist, wird diese Spalte nicht mit einbezogen. D Auction Spalte D enthält den Auktions-Anbieter. In den Daten werden zwei konkrete Namen genannt, dies betrifft in den Trainingsdaten ca. 55 000 der insgesamt 72 984 Datensätze (ca. 15 000 Adesa, ca. 41 000 Manheim). Die restlichen Daten sind keiner konkreten Auktion zugeordnet. Da nicht davon ausgegangen werden kann, dass einer der beiden Anbieter nur gute oder nur schlechte Autos verkauft, ist diese Spalte nicht relevant. E VehYear Diese Spalte enthält das Herstellungsjahr des Autos und ist prinzipiell wichtig. In der nächsten Spalte (F) wird diese Information allerdings noch einmal aufgegriffen (bzw. neu errechnet), diesmal wird das Alter in Jahren angegeben. Da mit dieser kleineren Zahl besser weiter gearbeitet werden kann, wird diese beibehalten und die Spalte E mit der prinzipiell gleichen Aussage aussortiert. I J Trim SubModel Die Spalten I und J beschreiben das Auto, neben der Angabe des Herstellers und der Angabe des Modells, noch genauer. Wir nehmen an, dass die noch genauere Beschreibung des Modells keine entscheidungsrelevanten Daten mehr enthält und das alle wichtigen Daten zum Autotyp schon in der Angabe des Herstellers und des Modells 12 zu finden sind. Somit entfallen diese beiden Spalten. N WheelType In der Spalte WheelType ist die Information zu finden ob das Auto Radkappen oder Felgen besitzt. Dies könnte zwar eine wichtige Information sein, allerdings hat die vorherige Spalte (M) die gleiche Aussage mit der Ausnahme, dass sie die verschiedenen Varianten in Form einer Zahl ausdrückt. Da mit dieser Zahl besser weiter gearbeitet werden kann, bleibt diese erhalten und die Spalte N wird nicht berücksichtigt. P Nationality Spalte P sagt etwas über das Herkunftsland des gekauften Autos aus, wobei die vorhandenen Angaben zum einen wenig aussagekräftig sind (American, Top Line Asian, Other Asian, Other) und zum anderen die Entscheidung, ob ein guter/schlechter Kauf vorliegt, nicht weiterbringt. Auch in den Trainingsdaten erhält man, wie vermutet, keinen eindeutigen Hinweis ob eine Nationalität auf einen guten/schlechten Kauf deutet. R TopThreeAmerican Names In dieser Spalte wird angegeben ob es sich beim Auto um eine der größten amerikanischen Automarken (Ford, Chrysler, GM) handelt oder nicht. Diese Aussage hat keinerlei Relevanz für die Entscheidung. Zum einen, da dies aus der Marke selbst abgelesen werden kann, die schon vorher ausgegeben wird. Zum anderen kann nicht gesagt werden, dass diese bzw. die übrigen Autos auf jeden Fall einen guten oder schlechten Kauf darstellen. T V X Z MMRAcquisitionAuctionCleanPrice MMRAcquisitonRetailCleanPrice MMRCurrentAuctionCleanPrice MMRCurrentRetailCleanPrice Diese vier Zeilen beschreiben den jeweiligen Preis des gekauften Autos in einem überdurchschnittlichen Zustand. Da wir keinerlei Hinweise darauf haben, ob sich das Auto in einem überdurchschnittlichen oder durchschnittlichen Zustand befindet, gehen wir immer von den durchschnittlichen Werten aus und die Anschaffungspreise für den überdurchschnittlichen Zustand werden gelöscht. 13 AA Primeunit Die Spalte „Primeunit“ drückt aus, ob eine höhere Nachfrage nach dem Auto vorhanden ist oder nicht. Diese Spalte wird aussortiert, da sich diese höhere Nachfrage augenscheinlich nach der Garantie in Spalte AB richtet. Ist diese auf dem Status „GREEN“ ist eine höhere Nachfrage angegeben. Des Weiteren enthält sie in den Trainingsdaten in nur rund 69 000 Spalten eine Aussage. AC BYRNO In der Spalte AC ist die Käufernummer angegeben. Offenbar wurde jedem Käufer eine bestimmte Zahl zugewiesen. Bei genauerer Untersuchung wird deutlich, dass ein Käufer sehr viele Autos kauft, es scheint sich also um größere Händler zu handeln. Dies sagt allerdings nichts über die Qualität des Kaufes aus. AD AE VNZIP1 VNST Diese Spalten geben den Staat und die konkrete Postleitzahl an in dem das Auto gekauft wurde. Diese Daten sagen nichts darüber aus, ob es sich um einen guten oder schlechten Kauf handelt. AG IsOnlineSale Spalte AG enthält die Information ob der angegebene Kauf über eine Online-Auktion abgewickelt wurde oder nicht. Diese Spalte wird nicht mit in die Entscheidung einbezogen, da sie in den Trainingsdaten nur knapp 2 000 der Käufe betrifft und bei diesen Käufen auch kein Hinweis darauf entdeckt werden konnte, ob dieser Sachverhalt auf einen guten/schlechten Kauf hinweist. 4.2. Datensäuberung/-transformation Nach der Datenreduktion ist der Umfang der nun vorliegenden Daten sehr viel übersichtlicher geworden. In der folgenden Tabelle wird nun erläutert welche Änderungen an den noch verbliebenen Daten vorgenommen wurden. Die folgenden Spaltenbezeichnungen beziehen sich auf die unbearbeitete Ursprungstabelle! Spalte K Farbe N WheelTypeID Titel Beschreibung In dieser Spalte wurde die Eintragung NOT AVAIL und leere Felder durch NULL ersetzt um die Werte einheitlicher zu gestalten. In dieser Spalte wurde 0 durch NULL ersetzt, 14 da dies in Spalte N „WheelType“ die gleiche Aussage zur Folge hat. So gibt es dann außerdem eine Variante weniger zu beachten. T V X Z MMRAcquisitionAuctionCleanPrice MMRAcquisitonRetailCleanPrice MMRCurrentAuctionCleanPrice MMRCurrentRetailCleanPrice In diesen vier Zeilen werden alle Felder, die einen Preis von 0 ausgeben, durch NULL ersetzt. Es erscheint höchst unwahrscheinlich, dass die Preise dieser Autos 0 betragen, es liegt näher, dass der Preis nicht bekannt ist. 4.3. Neu berechnete Spalten Titel Altersklassen Beschreibung In der neu eingefügten Spalte „Altersklassen“ wird das Alter in Klassen eingeteilt (Klasse 1: 0-3 Jahre, Klasse 2: 4-6 Jahre, Klasse 3: 7-9 Jahre) Schaltung-ID In der neuen Spalte „Schaltung-ID“, die nach Spalte L „Transmission“ eingefügt wurde, wird die Getriebe-Art mit einer Zahl „codiert“ (MANUAL = 1, AUTO = 2, NULL = NULL). KM-Stand gerundet Diese Spalte wurde nach der Spalte O „VehOdo“ eingesetzt. Sie hat die Funktion den Kilometerstand auf volle 10.000er zu runden um die Klassifizierung in der nächsten Spalte zu erleichtern. KM-Klasse Es wurde eine neue Spalte eingefügt, in der der Kilometerstand (Spalte O) eines jeden Autos einer Klasse zugeordnet wird. Die verwendete Formel bezieht sich dabei allerdings auf die zuvor eingefügte Spalte „KM-Stand gerundet“. Folgende Unterteilung wurde vorgenommen: Klasse 1: bis 30.000, Klasse 2: 40.000 – 60.000, Klasse 3: 70.000 – 90.000, Klasse 4: >= 100.000. Garantie-ID Nach Spalte AB „AUCGUART“, die den Garantielevel anzeigt, wird eine Zeile eingeführt, die dem Garantielevel eine ID zuordnet. Dabei scheint in Spalte AB der Wert „GREEN“ die stärkste Aussage zu haben, diesem wird also eine 0 zugeordnet, während allen anderen Werten (YELLOW, RED, NULL) eine 1 zugeordnet wird. Auktionspreis vs. Preis Handel (Tageskurs) In dieser Spalte wird die Differenz zwischen dem tagesaktuellen Preis im Handel (Spalte Y) und dem Kaufpreis auf der Auktion (AF) ausgegeben. Ist das Ergebnis positiv, war der Einkaufspreis auf der Auktion günstiger als im Handel und dem Wert wird in der nächsten Spalte „Ersparnis?“ eine 0 zugeordnet. Dies könnte auf einen guten Kauf hindeuten. Ist die Differenz negativ, war der Ersparnis? 15 Auktionspreis teurer als der im Handel und in der nächsten Spalte „Ersparnis?“ steht eine 1. Dies könnte auf einen schlechten Kauf hindeuten. Werteverlust/-zuwachs Werteverlust/-zuwachs-ID In dieser Spalte wird vom durchschnittlichen Auktionspreis vom Zeitpunkt des Kaufes der durchschnittliche Auktionspreis zum Tageskurs abgezogen (Spalte S - Spalte W), um herauszufinden um wie viel sich der Wert des Fahrzeuges im Laufe der Zeit verändert hat. In der nächsten Spalte (Werteverlust/-zuwachs-ID) wird diesem Wert, je nachdem ob ein Gewinn oder ein Verlust vorliegt, eine 0 oder 1 zugeordnet. 16 5. Data Mining - Umsetzung in KNIME 5.1. Grundsätzlicher Aufbau Das Data Mining selbst wurde im Programm KNIME vorgenommen. Abbildung 1: Modellierung in KNIME Der erste Knoten in KNIME muss erst einmal ein Knoten sein, mit dem die bearbeiteten Excel-Werte in das Programm eingelesen werden können. Dies ist (wie oben dargestellt) der File Reader. Schon hier stießen wir auf erste Probleme: Weder in diesem File Reader noch im extra installiertem XLS-Reader können die Excel-Daten eingelesen werden. Nach Umwandlung der Excel-Datei ins CSV-Format wurde diese zwar nicht im CSV-Reader, aber immerhin im File Reader erkannt. Im darauffolgenden Knoten „Number to String“ werden, wie der Name schon sagt, Zahlen in Zeichenketten umgewandelt. Dies ist bei ordinalen Datentypen sinnvoll. Also bei Daten mit denen man nicht rechnen kann, sondern die nur eine Ordnungsrelation darstellen. Solche Daten sind z. B. die in der folgenden Abbildung aufgeführten Daten. 17 Abbildung 2: Daten Number to String Im „Column Filter“ kann dann noch einmal eine Datenselektion vorgenommen werden. Hier können Spalten in die Analyse ein- und ausgeschlossen werden. Nach dem Colum Filter folgt die Analyse der Daten mit drei verschiedenen Verfahren. 5.2. Naive Bayes Bei dem Naive Bayes-Verfahren wird davon ausgegangen, dass alle Attribute voneinander unabhängig sind. Im ersten Knoten des Verfahrens („Partitioning“) werden die eingespielten Daten prozentual in zwei Mengen geteilt. In unserer Einstellung umfasst ein Teil der Daten 60%, der andere 40%. Nun verlassen den Knoten „Partitioning“ zwei Verbindungen: Eine führt zum „Naive Bayes Learner“, der andere zum „Naive Bayes Predictor“. D.h. mit 60% der Daten lernt KNIME das Muster der Daten nach dem Naive Bayes-Verfahren kennen (im Knoten „Naive Bayes Learner“) und wendet diese Erkenntnisse dann auf die restlichen 40% der Daten im Knoten „Naive Bayes Predictor“ an. Der nachgeschaltete Scorer zeigt dann an, wie gut die Vorhersage ausgefallen ist bzw. wie viel Prozent der guten und schlechten Käufe richtig vorhergesagt wurden. 18 Um dieses Muster auf die Testdaten anzuwenden, müssen diese im File Reader unten eingelesen werden. Nach den Knoten für die üblichen Einstellungen erfolgt die Anwendung des gelernten Musters aus dem Naive Bayes Learner im Naive Bayes Predictor, dafür werden nun die Test- und nicht mehr die Trainingsdaten mit dem Predictor verbunden (gestrichelte Linie). Der Scorer gibt nun verständlicherweise keine Ergebnisse aus. Im nachfolgenden Column Filter wird nun nur die Spalte mit der Vorhersage „Winner“ ausgewählt und schon gibt der CSV Writer eine CSV-Datei mit den Vorhersagen aus, die nun auf kaggle.com hochgeladen und bewertet werden können. Abbildung 3: Modellierung Naive Bayes 5.3. Decision Tree Dem Vorgehen nach der Methode des Decision Trees bzw. des Entscheidungsbaum in KNIME ähnelt dem Vorgehen nach Naive Bayes sehr. Wieder werden die Daten im ersten Knoten „Partitioning“ in zwei Mengen (60/40) aufgeteilt, wobei KNIME von den 60% der Daten die Muster nach dem Decision Tree-Verfahren lernt und dann auf 40% der Daten anwendet. Im Scorer kann man sich auch dann wieder das Ergebnis anzeigen lassen. 19 Problematisch bei diesem Vorgehen ist allerdings, dass dieses Verfahren anscheinend nur mit einer begrenzten Datenmenge arbeiten kann. Werden im Column Filter umfangreich Daten selektiert, bringt der Decision Tree ganz KNIME zum Absturz. Das Vorgehen zur Anwendung der Testdaten und zur Ausgabe der CSV-Daten ist dem oben beschriebenen sehr ähnlich (wieder gestrichelte Linie). Anfangs trat allerdings ein Problem auf: Aus Gründen, die nicht nachvollzogen werden können, wird für manche Zeilen keine Prognose ausgegeben. Somit kann ein solches Ergebnis auch nicht auf kaggle.com hochgeladen und bewertet werden. Dieses Problem konnte behoben werden, indem der Knoten „Missing Value“ vorgeschaltet wird mit dem alle fehlenden Werte in der PrognoseSpalte durch 0 oder 1 ersetzt werden. Dies führt dann allerdings bei ca. 20 Zeilen zu verfälschten Werten. Insgesamt haben diese aber einen geringen Einfluss. Abbildung 4: Modellierung Decision Tree 5.4. J48/WEKA Auch WEKA generiert mit dem J48-Algorithmus einen Entscheidungsbaum. Die Vorgehensweise in KNIME ist den beiden vorherigen wieder sehr ähnlich. Allerdings kann dieser Algorithmus nur mit numerischen Werten arbeiten, also wird vor den Knoten „Partitioning“ noch der Knoten „String to Number“ geschaltet. 20 Abbildung 5: Modellierung WEKA/J48 5.5. Beispiel der Vorgehensweise Bei der Spaltenauswahl im „Column Filter“ wurden von Mandy Schacht mehr als 57 Möglichkeiten ausprobiert um die besten Ergebnisse zu erzielen. Jedoch konnte schon mit den ursprünglich enthaltenen Spalten der Trainingsdatei nach der Datenvorbereitung bereits im zweiten Versuch eine gute Trefferquote bei den Vorhersagen erreicht werden. Mit dem Naive Bayes Learner betrug die richtige Vorhersage fast 75 Prozent, davon wurden 1778 sogenannte Bad Buys richtig erkannt. Eine so gute Vorhersage der Bad Buys zu Beginn der Versuche erschwerte allerdings das Finden einer besseren Lösung. In der nachstehenden Tabelle ist beispielhaft festgehalten, welche Kombinationsmöglichkeiten der Spalten eine Verbesserung oder Verschlechterung im Vergleich zum vorherigen Upload bewirkten. Die grau hinterlegten Felder kennzeichnen dabei den Gini-Index, der gegenüber dem vorherigen Versuch eine Verbesserung darstellt. In den Versuchen sechs, sieben und acht konnten kontinuierlich Plätze gewonnen werden, jedoch wird es mit zunehmend steigendem Gini-Index schwerer eine Verbesserung gegenüber der Vorlösung zu erreichen. 21 Abbildung 6: Gini-Index Verlauf Aufbauend auf dem Ergebnis des zweiten Versuchs wurden abwechselnd Spalten vom Training ausgeschlossen um herauszufinden, welche Auswirkungen das Fehlen einer bestimmten Spalte auf die Vorhersage mit dem Naive Bayes Learner hat. Die besten Ergebnisse konnten mit den Möglichkeiten 50 und 54 erreicht werden, bei denen der Gini-Index jeweils über 0,13 lag. Dabei wurde in der Möglichkeit Nummer 50 neben einer Anzahl anderer Spalten auch die Klassifizierung der Farbe, die zusammengefassten Klassen der Preise als auch die acht ursprünglichen Preisspalten einbezogen. Bei der Möglichkeit Nummer 54 wurden dagegen die in Nummer 50 noch einbezogenen Spalten „PurchDate2“ und Klassifizierung der Farbe rausgenommen. 22 6. Aufgetretene Probleme Im Laufe der Versuche stellte sich heraus, dass die Bewertung der Daten von Kaggle nicht vollständig nachvollzogen werden kann. Im Laufe der Versuche bestärkte sich die Vermutung, dass es nicht auf die prozentuale Gesamtheit der richtig identifizierten Käufe ankommt, sondern vielmehr darauf, wie viele Bad Buys (1) richtig identifiziert werden konnten. Diesbezüglich konnte beobachtet werden, dass bei einer allgemeinen Trefferquote von durchschnittlich 70 bis 75 Prozent die richtige Vorhersage bei den Bad Buys mit einer Anzahl von 1600 bis 1900 am größten war. Dagegen sank die Anzahl der vorhergesagten Bad Buys mit zunehmender allgemeiner prozentualer Richtigkeit der Vorhersagen. Des Weiteren hat die Bewertung von Kaggle vor Ende des Wettbewerbes keine 100%ige Aussagekraft, da nur 30% der hochgeladenen Daten zur Bewertung herangezogen werden. Erst bei Wettbewerbsende erfolgt eine vollständige Berechnung der Daten und somit auch erst dann ein gültige Bewertung. Ein weiteres Problem wurde bereits oben in 4.1. beschrieben: Der erste Knoten in KNIME muss erst einmal ein Knoten sein, mit dem die bearbeiteten Excel-Werte in das Programm eingelesen werden können. Allerdings können weder im File Reader noch im extra installiertem XLS-Reader die Excel-Daten eingelesen werden. Nach Umwandlung der ExcelDatei ins CSV-Format wurde diese zwar nicht im CSV-Reader, aber immerhin im File Reader erkannt. Weiterhin ergaben sich bei der Modellierung mit KNIME, insbesondere bei der Anwendung des Decision Trees, einige Schwierigkeiten. Zum einen kann dieses Verfahren nur beim Input weniger Daten angewendet werden. Werden zu viele Daten zur Berechnung ausgewählt, bringt dies ganz KNIME zum Absturz. Zum anderen prognostiziert der Decision Tree nicht für alle Daten ein Ergebnis, was dazu führt, dass das Ergebnis nicht bei Kaggle hochgeladen und bewertet werden kann. Dem kann vorgebeugt werden indem durch den Knoten „Missing Value“ die fehlenden Daten durch einen festgelegten Wert ersetzt werden. Dies führt allerdings insgesamt zu einem leicht verfälschten Ergebnis. Außerdem konnte beobachtete werden, dass die Teilung der Daten in Trainings- und Testdaten im Knoten Partitioning immer unterschiedlich vorgenommen wird. Dies führt zu unterschiedlichen Ergebnissen bei gleichen Einstellungen, was die eigene Bewertung der ausgewählten Daten erschwert. Beim Anwenden der Verfahren auf die Testdaten fiel außerdem auf, dass diese teilweise andere Werte beinhaltet als die Trainingsdatei (z.B. Spalte Farbe). Bei der Berechnung kommt es so bei diesen für KNIME unbekannten Werten also zu Problemen. Diesem kann 23 entweder durch eine Klassifizierung oder durch das Ändern des jeweiligen Wertes in der Testdatei vorgebeugt werden. 24 7. Fazit Für die Lösung der Aufgabe „Don’t get kicked“ in KNIME konnten die besten Ergebnisse mit dem Naive Bayes-Verfahren erzielt werden. Zum einen war die Modellierung unkompliziert, da dieser nominale und numerische Attribute verarbeiten kann. Zum anderen waren die Ergebnisse im Gegensatz zu den anderen beiden genutzten Methoden (WEKA/J48 und Entscheidungsbaum) eindeutig die besten. Das Verfahren WEKA/J48 lieferte grundsätzlich die schlechtesten Ergebnisse. Insgesamt kann kaum eine allgemein gültige Aussage bezüglich der Auswahl der Daten getroffen werden, da es immer darauf ankommt, welche Daten kombiniert werden. Dennoch konnten einige Tendenzen, die nachfolgend aufgeführt sind, beobachtet werden. In der Regel führen weder die Klassifizierungen des Alters noch die Klassifikation des Kilometerstandes zu einer Verbesserung der Ergebnisse. Das Weglassen der absoluten Werte, also nur die Verwendung der Klassen, führte sogar zu schlechteren Ergebnissen. Dies war, entgegen der Erwartung, auch bei Anwendung des Decision Trees der Fall. Des Weiteren führen die acht Spalten, die die verschiedenen Anschaffungspreise beinhalten, zu einer gewissen Unübersichtlichkeit. Auch die Definitionen dieser Preise sind schwierig abzugrenzen. Dennoch dürfen diese bei der Bearbeitung nicht vernachlässigt werden, da dies die Ergebnisse massiv verschlechtert. Der Versuch die verschiedenen Preise mit dem Kaufpreis in Beziehung zu setzen bzw. aus den Preisen aussagekräftige Kennzahlen zu errechnen, brachte im Ergebnis keine Verbesserung. Werden nur wenige, aber zentral wichtige Daten als Input gewählt, z. B. Kilometerstand, Alter, Hersteller und Kaufpreis, werden ebenfalls sehr schlechte Ergebnisse erzielt. Dies lässt den Schluss zu, dass die wichtigsten Datenkombinationen nicht in den für Privatpersonen zentralsten Datensätzen liegen bzw. für ein gutes Ergebnis mehrere Spalten benötigt werden. Abschließend konnte eine wirklich gute Lösung nicht erreicht werden. Auch bei Abschluss des Projekts konnten aufgrund der sehr vielen Kombinationsmöglichkeiten und Ergebnisse nur schwer Aussagen darüber getroffen werden welche Spalten verzichtbar für ein gutes Ergebnis sind und welche nicht. Auch die unterschiedliche Schwerpunktsetzung konnte nicht dazu beitragen. Somit kann letztendlich auch keine der beiden Vorgehensweisen als besser oder erfolgreicher bezeichnet werden. 25 8. Anhang - Zeit- und Aufgabenplan 26