23.04.2020
Moritz Lang
Autor: Moritz Lang

Die Machine Learning Befehle “Train”, “Predict” und “Cluster” am Praxisbeispiel erklärt

Teil 2 – „Cluster“ in „ACL™ Robotics“

Dies ist der zweite Teil einer kurzen Blogpostreihe, in der wir Ihnen zwei Vorgehensweise präsentieren, wie die Analysesoftware „ACL™ Robotics“ - früher „ACL™ Analytics“ - des Softwarehersteller Galvanize die Umsetzung von Machine Learning ermöglicht. Die seit vielen Jahren am Markt etablierte Softwarelösung „ACL™ Robotics“ unterstützt die manuelle und automatisierte Analyse großer Datenmengen. Neben vielen Schnittstellen u.a. zu SAP (via "SAP Connector"), Salesforce, Google Hive, Amazon Redshift, Outlook, PDF-Importen oder beliebigen ODBC-Datenquellen, hilft eine automatisierte Skriptsprache, die Abfolge von Analyseschritten zu automatisieren. Der Hersteller Galvanize ordnet dies dem Bereich RPA (Robotic Process Automation) zu. Einzelne Analyseschritte werden durch Methoden bzw. Kommandos wie Sortierungen, Summenstrukturen, Joins, Relationen oder Verdichtungen wie Kreuztabellen und Summenstrukturen abgebildet. Im Zusammenhang mit diesem Blogpost gehören dazu seit geraumer Zeit auch drei Kommandos im Kontext von Machine Learning: „Train“, „Predict“ und „Cluster“. Wir bringen Ihnen im Folgenden die Verwendung dieser drei Kommandos anhand von konkreten betriebswirtschaftlichen Beispielen näher. Für ACL-Anwender bieten wir zudem die Möglichkeit, ACL-Projekte für die Beispiele herunterzuladen, um jede Methode selbst in der Praxis nachzuvollziehen.

Dieser Blogpost ist auf Grund seiner Länge in zwei Teile aufgeteilt:

  • Teil 1 behandelt die Befehle „Train“ und „Predict“
  • Teil 2 behandelt den Befehl „Cluster“, welcher auf dem k-Means Algorithmus basiert

Das Beispiel für Teil 1 war im Bereich Vertrieb angesiedelt: Kunden bestellen Waren unterschiedlichen Wertes, dabei kann es im Tagesgeschäft natürlich auch zu Retouren kommen. Die Kunden nehmen aus verschiedenen Gründen Rücksendungen vor und bekommen diese dann in Regelfall erstattet. Hier im zweiten Teil geht es nun um die Herausforderung, Kunden in Gruppen mit ähnlichem Verhalten einzuteilen. Da unser Beispiel ein B2B Beispiel ist, sind unsere Kunden ebenfalls Unternehmen. Diesen haben wir eine Zahlungsfrist, anhand der Zahlungsbedingungen in den Stammdaten, von 30 Tagen gewährt. Wir stellen uns exemplarisch die Frage:

Wenn Sie ihren Kunden eine Zahlungsfrist von 30 Tagen gewähren, gibt es dann Gruppen von Unternehmen, welche sich in Bezug auf diese Frist ähnlich verhalten?

Mit Hilfe der Funktionen „Cluster“ in ACL (siehe „Machine Learning“) werden wir diese Frage beantworten. In Abbildung 7 sehen sie den Plot eines fiktiven Datensatzes eines Jahres. Jeder Punkt in der Grafik repräsentiert ein Unternehmen bzw. einen Kunden. Auf der y-Achse wird der Jahresumsatz abgetragen. Auf der x-Achse wird die durchschnittliche Zahlungsverzögerung in Tagen abgetragen, diese Werte sind stets gerundet. Der Durchschnitt ergibt sich jeweils aus mehreren Zahlungsverzögerungen im betrachteten Jahr. Eine durchschnittliche Zahlungsverzögerung größer gleich Null bedeutet, dass die Rechnungen des betrachteten Unternehmens im Durchschnitt vor der Zahlungsfrist von 30 Tagen beglichen wurden. Ein Wert kleiner Null bedeutet, dass die jeweiligen Rechnungen des betrachteten Unternehmens im Durchschnitt nach der Zahlungsfrist von 30 Tagen beglichen wurden. Unternehmen auf der vertikalen blauen Linie zahlten im Durchschnitt fristgerecht zum letztmöglichen Tag.

Abbildung 7: Durchschnittliche Zahlungsverzögerung in Tagen und Jahresumsatz von 1449 Kunden

Im Folgenden gruppieren wir mit Hilfe von ACL und der Funktion „Cluster“ die Daten aus Abbildung 7, um die Ausgangsfrage zu beantworten. Die verwendete Funktion „Cluster“ basiert auf dem Algorithmus k-Means.

Workshop:

  1. Daten downloaden: Öffnen Sie ACL und das Projekt „cluster_customers.acl“ hier kostenfrei downloaden, dieses enthält die zwei Tabellen: „turnover_and_delay“ und „turnover_and_delay_with_GAP“. Im Folgenden wird auf Basis der ersten Tabelle geclustert. Die zweite Tabelle spielt vorerst keine Rolle.
  2. Daten clustern: Klicken Sie auf „turnover_and_delay“ in der Sidebar, Sie sehen nun die zugehörige Tabelle in der Grundansicht. Wählen Sie „Machine Learning“ -> „Cluster“. Verändern Sie nun die Parameter und Einstellungen und starten Sie das Clustering mit „OK“ (vgl. Abbildung 8).

Abbildung 8: Eingabemaske für das Clustering mit veränderten Parametern

  • „Number of clusters (K Value)“: Dieser Wert bestimmt, in wie viele Cluster der betrachtete Datensatz aufgeteilt wird. ACL empfiehlt verschiedene Werte auszuprobieren. Zudem wird geraten, einen ersten Versuch mit 8-10 Cluster vorzunehmen. Mit Hilfe von Abbildung 7 entscheiden wir uns in diesem Beispiel für 4 Cluster.
  • „Number of initializations“: K-Means hängt von den gewählten Startpunkten ab, aus diesem Grund wird bei ACL der Algorithmus automatisch mehrmals mit verschiedenen Startpunkten wiederholt. Der beste Durchlauf, also das beste Clustering, wird anschließend gewählt. Mit „Number of initializations“ bestimmen Sie, wie oft der Algorithmus mit verschiedenen Startpunkten durchlaufen werden soll.
  • „Maximum number of iterations“: Wie viele Iterationen soll der Clustering-Algorithmus pro Initialisierung maximal ausführen. Je höher dieser Wert gewählt wird, desto besser werden die Clusterings aus jedem Durchlauf.
  • „Seed“: K-Means hängt von den zufällig gewählten Startpunkten ab. „Seed“ beeinflusst den Zufallszahlengenerator. Falls Sie das Clustering immer wieder mit demselben Wert für „Seed“ und den identischen Parametern wiederholen, bekommen Sie jedes Mal dasselbe Ergebnis. Ändern Sie ausschließlich „Seed“ und wiederholen das Clustering, dann bekommen Sie jedes Mal etwas andere Cluster. Dies basiert auf der Wahl der zufällig gewählten Startwerte, welche von „Seed“ abhängig sind.
  • „Preprocessing“: Hier können Sie ihre Felder vor dem Clustering bearbeiten, dies macht Sinn, wenn ihre „Key-Fields“, z.B. durch die Wahl der Einheiten der einzelnen Felder, extreme Unterschiede bei den Wertebereiche aufweisen.
  • „Cluster on…“: Hier wählen Sie die Felder auf deren Basis geclustert werden soll, in unserem Fall die durchschnittliche Zahlungsverzögerung.
  • „Other Fields…“: Hier können Sie Felder angeben, welche in der Ergebnistabelle mit angezeigt werden sollen.
  • „If…“ und „More“: Hier können Sie optional Einträge aus dem Datensatz ausschließen.
  • „To…“: Hier bestimmen Sie den Namen der Ergebnistabelle.

Nach der Berechnung sehen Sie in ihrer Sidebar die Tabelle „clustered_customers“. Die ersten k Zeilen dieser Tabelle enthalten stets die Mittelpunkte der gefundenen Cluster. Das Feld „Cluster“ gibt für jeden Datensatz das zugehörige Cluster an. Das Feld „Distanz“ enthält den Abstand zum zugehörigen Clustermittelpunkt. In Abbildung 9 wird das Clustering aus ACL farblich verdeutlicht.

Abbildung 9: Durchschnittliche Zahlungsverzögerung in Tagen und Jahresumsatz, 1449 Kunden geclustert in vier Gruppen

Das Clustering erzeugt folgende Gruppen:

 

Clusterfarbedurchschnittliche Zahlungsverzögerung MINdurchschnittliche Zahlungsverzögerung MAX
Blau-88-38
Grün-33-9
Schwarz-810
Rot1129

Das blaue Cluster enthält 1,8% der Unternehmen, diese haben im betrachteten Jahr im Durchschnitt zwischen 88 und 38 Tage zu spät bezahlt. Für das grüne Cluster (3,8%) erfolgt die Interpretation analog, mit den Werten aus der obigen Tabelle. Das schwarze Cluster enthält Kunden (34,6%) welche im Durchschnitt sowohl fristgerecht als auch nicht firstgerecht ihren Forderungen nachkamen. Das rote Cluster (59,8%), enthält ausschließlich Unternehmen, welche fristgerecht zahlten. Beim Betrachten von Abbildung 9 fällt auf, dass k-Means die Daten relativ gut in Gruppen aufteilt. Das Clustering weist dennoch eine entscheide Schwachstelle auf: Wünschenswert wäre, dass jede Gruppe entweder komplett links- oder rechtsseitig von der Null liegt. Die Interpretation des Ergebnisses ist einfacher, wenn die Cluster ausschließlich Unternehmen enthalten, welche fristgerecht bzw. nicht fristgerecht bezahlten. Das schwarze Cluster liegt aber sowohl links- und rechtsseitig um die Null. Aus diesem Grund wenden wir einen Trick an und wiederholen das obige Vorgehen. Wir erzeugen eine künstliche Lücke um die Null (vgl. Abbildung 10). Alle Punkte welche in Bezug auf die x-Achse im Bereich zwischen einschließlich -8 und ausschließlich der 0 liegen, werden exakt auf x=-8 verschoben. Punkte, welche zwischen einschließlich 0 und einschließlich 8 liegen, werden exakt auf x=8 verschoben.

Abbildung 10: Transformierte durchschnittliche Zahlungsverzögerung in Tagen und Jahresumsatz von 1449 Kunden

Wiederholen wir nun das Clustering in ACL, ergibt sich die Gruppierung aus Abbildung 11.

Abbildung 11: Transformierte durchschnittliche Zahlungsverzögerung in Tagen und Jahresumsatz, 1449 Kunden geclustert in vier Gruppen

Durch diesen Trick ist wie gewünscht jedes Cluster entweder komplett links- bzw. rechtsseitig von der Null. Das Vorgehen funktioniert auch mit anderen Konstanten als -8 und 8. Die Gruppierung wurde von ACL wie folgt bestimmt:

 

Clusterfarbedurchschnittliche Zahlungsverzögerung MINdurchschnittliche Zahlungsverzögerung MAX
Blau-88-31
Grün-29-1
Schwarz014
Rot1529

Die Gruppierung kann wie folgt interpretiert werden: Alle 1449 Datenpunkte lassen sich in vier Teilmengen aufteilen. Einerseits liegen 88% der Kunden rechtsseitig von der Null - diese bezahlten im Durchschnitt fristgerecht. Wohin gegen 12% auf der linken Seite der Null liegen - diese Unternehmen bezahlten im Durchschnitt nicht fristgerecht. Die rechte Seite der Null, wurde weiter in zwei Gruppen geteilt: In das schwarze Cluster, welches Kunden enthält, welche im Durchschnitt zwischen 14 Tage vor Frist und zum spätestmöglichen Zeitpunkt bezahlten. Das rote Cluster enthält Unternehmen welche im Durchschnitt bereits 29 bis 15 Tage vor Frist bezahlten. Die Interpretation ergibt sich analog, lediglich mit Beachtung der veränderten Vorzeichen, für die grüne und blaue Gruppe.

Das vorgestellte Vorgehen mit der Funktion „Cluster“ aus ACL wird dem Unsupervised-Learning zugeordnet. Im Vergleich zu dem Beispiel mit dem geschätzten Retourenwert aus Teil 1 wird kein Wert geschätzt, sondern eine Gruppierung der Daten vorgenommen. Es existiert also keine „Feature-Variable“.

 

In diesem zweiten Teil unseres Blogposts über Machine Learning haben wir Ihnen gezeigt, wie Sie Ihre Daten gruppieren können.

Die notwendigen Schritte lassen sich abstrahiert wie folgt zusammenfassen:

  1. Erstellen Sie eine Tabelle mit den gewünschten „Key-Variablen“, auf Basis welcher k-Means clustern soll
  2. Führen Sie „Cluster“ mit geeigneten Parametern durch

Durch die Wahl der „Key-Variablen“ sowie der genannten Parameter beeinflussten Sie das Clustering maßgeblich.

Wir hoffen, dass Ihnen beide Teile dieses Blogposts gefallen haben und einen Nutzen für Sie haben. Viel Spaß beim Ausprobieren dieser Methoden - wenden Sie sich bei Fragen gerne jederzeit an uns.


Kommentare (0)
Sei der erste, der diesen Blog-Beitrag kommentiert.
Blog Anmeldung

Sie sind nicht angemeldet. Bitte melden Sie sich an um diesen Blogbeitrag zu kommentieren.

anmelden