Kreativer Missbrauch von RapidMiner
Eine der unterhaltsamsten Veranstaltungen auf der RapidMiner Wisdom Konferenz ist der live Predictive Analytics Prozessdesign-Wettbewerb „Who Wants to be a Data Miner?“ Bei diesem Wettbewerb müssen die Teilnehmer innerhalb weniger Minuten RapidMiner Prozesse für ein vorgegebenes Ziel entwerfen. Die Aufgaben haben einen Bezug zu Predictive Analytics und Datenanalyse im Allgemeinen, sind aber eher ungewöhnlich. Tatsächlich verlangen die meisten Aufgaben nach Dingen, die RapidMiner nie tun sollte.
Während der RapidMiner Wisdom 2016 in New York City, hatten wir wieder zwei Aufgaben für das Publikum vorbereitet. Drei mutige Teilnehmer kämpften gegeneinander und gegen die Uhr, um die richtige Lösung zu finden (oder zumindest etwas, das nahe genug ist). Die erste Aufgabe in diesem Jahr lautete:
Erstelle den vollständigen Text zu „99 Bottles of Beer on the Wall“
Laut Wikipedia ist „99 Bottles of Beer ein anonymer US-amerikanischer Folksong aus der Mitte des zwanzigsten Jahrhunderts. Es ist ein traditionelles Lied in den Vereinigten Staaten und Kanada. Es wird gerne auf langen Reisen gesungen, da es ein sich stark wiederholendes Format hat, das sich leicht einprägen lässt und lange gesungen werden kann.“
Nun, ja. Einige sagen, dass es zahlreiche Probleme mit diesem Lied gibt, aber das ist – obwohl es lustig zu lesen ist – nicht das Thema dieses Beitrags. (Übrigens ist das Lied auch in der Populärkultur immer wieder aufgetaucht: vielleicht am bekanntesten, zumindest für einige, im Spiel Monkey Island.)
Auf jeden Fall geht das Lied so:
99 Flaschen Bier an der Wand, 99 Flaschen Bier.
Nimm eine runter und reich sie herum, 98 Flaschen Bier an der Wand.
98 Flaschen Bier an der Wand, 98 Flaschen Bier.
Nimm eine runter und reiche sie herum, 97 Flaschen Bier an der Wand.
97 Flaschen Bier an der Wand, 97 Flaschen Bier.
Nimm eine runter und reiche sie herum, 96 Flaschen Bier an der Wand.
…
1 Flasche Bier an der Wand, 1 Flasche Bier.
Nimm eine runter und reiche sie herum, 0 Flaschen Bier an der Wand.
Der vollständige Text kann hier gefunden werden, aber ich denke, du hast die Idee verstanden.
Wie können wir also die obige Aufgabe mit RapidMiner lösen?
Lassen Sie uns zuerst mit einem Screenshot der Lösung beginnen:
Wir beginnen mit dem Operator „Generate Data“ und generieren einen zufälligen Datensatz mit nur 1 Spalte und 100 Beispielen (nehmen Sie die entsprechenden Einstellungen in den Parametern des Operators vor). Dies ist vielleicht nicht der eleganteste Weg, aber einer der einfachsten Wege in RapidMiner, um einen Datensatz mit einer bestimmten Struktur und Größe zu erhalten. Als nächsten Schritt benötigen wir nun Zahlen von 1 bis 100 in einer zusätzlichen Spalte. Auch hier gibt es mehrere Möglichkeiten, dies zu erreichen, aber die einfachste ist wahrscheinlich, den Operator „Generate ID“ zu verwenden, der genau das tut. Wir können nun „Attribute auswählen“ verwenden und die Spalten entfernen, die ursprünglich durch „Daten generieren“ erzeugt wurden, d. h. wir behalten nur unsere neue „id“-Spalte. Das Ergebnis ist ein Datensatz mit 100 Zeilen und den Zahlen 1 bis 100 in einer Spalte mit dem Namen „id“.
Die gesamte Logik findet nun im nächsten Operator statt: „Attribute generieren“. Das Hauptproblem, das es zu lösen gilt, ist die Frage, wie wir die Zahlenfolge von 1 bis 100 in eine Folge von 99 bis 0 umwandeln können. Nun, das ist ganz einfach: Wir können einfach einen neuen Wert erzeugen, indem wir die aktuelle „id“ in jeder Zeile von 100 abziehen. Gleichzeitig fügen wir den Rest des Textes um diese Zahlen herum hinzu. So müssen Sie die Parameter von „Attribute generieren“ einstellen, um dies zu erreichen:
Nun könnten Sie sogar all diese neuen Spalten zu einer einzigen zusammenfügen, wenn Sie das möchten. Ich überlasse es Ihnen, herauszufinden, wie. Das Endergebnis nach Ausführung des Prozesses sieht dann so aus wie der folgende Screenshot (der nur den Anfang zeigt):
Wenn Sie den Prozess selbst ausführen, sehen Sie sich auch die letzte Zeile an. Ich gebe zu, dass wir das etwas besser hinbekommen könnten, denn der erstellte Text endet auf: „0 Bierflaschen an der Wand, 0 Bierflaschen. Nimm eine runter und reiche sie herum. -1 Flaschen Bier an der Wand.“ Nun, für Mathematiker und Physiker ist an -1 Flaschen Bier nichts auszusetzen, aber einige IT-Systeme mögen vielleicht keine negativen Zahlen von Objekten.
RapidMiner für Aufgaben wie diese zu verwenden ist natürlich etwas, nun ja, seltsam. Aber es zeigt auch, wie flexibel und mächtig der visuelle Ansatz von RapidMiner tatsächlich ist. Andere haben Lösungen in praktisch jeder Programmiersprache der Welt erstellt, manche kürzer und manche länger als andere. Aber ich würde die Lösung von RapidMiner immer dem Code der meisten von ihnen vorziehen.
Unten ist das XML des kompletten Prozesses. Sie können es in eine beliebige Datei auf Ihrem System speichern und „File -> Import Process…“ verwenden, um es in RapidMiner zu bekommen.
Viel Spaß beim Ausprobieren!