Perspektiv-Wechsel mit Process Mining

Data Scientists verbringen einen Großteil ihres Tages mit explorativer Analyse. In der 2015 Data Science Salary Survey[1] gaben 46% der Befragten an, ein bis drei Stunden pro Tag auf das Zusammenfassen, Visualisieren und Verstehen von Daten zu verwenden, mehr noch als auf die Datensäuberung und Datenaufbereitung.

Process Mining konzentriert sich auf die Analyse von Prozessen[2], und ist insbesondere für die explorative Analyse von prozessbezogenen Daten ein hervorragendes Werkzeug. Wenn sich Ihr Data-Science-Projekt auf Geschäfts- oder IT-Prozesse bezieht, dann müssen Sie diese Prozesse erst erforschen und genau verstehen, bevor Sie sinnvoll Machine-Learning Algorithmen trainieren oder statistische Analysen fahren können.

Mit Process Mining können Sie eine Prozess-Sicht auf die Daten einnehmen. Die konkrete Prozess-Sicht ergibt sich aus den folgenden drei Parametern:

  • Case ID: Die gewählte Vorgangsnummer bestimmt den Umfang des Prozesses und verbindet die Schritte einer einzelne Prozessinstanz von Anfang bis Ende (z.B. eine Kundennummer, Bestellnummer oder Patienten-ID)
  • Activity: Der Aktivitätsname bestimmt die Arbeitsschritte, die in der Prozesssicht dargestellt werden (z.B. „Bestellung empfangen“ oder „Röntgenuntersuchung durchgeführt“).
  • Timestamp: Ein oder mehrere Zeitstempel pro Arbeitsschritt (z.B. vom Start und vom Ende der Röntgenuntersuchung) werden zur Berechnung der Prozessabfolge und zum Ableiten von parallelen Prozessschritten herangezogen.

Wenn Sie einen Datensatz mit Process Mining analysieren, dann bestimmen Sie zu Beginn der Analyse, welche Spalten in den Daten der Case ID, dem Aktivitätsnamen und den Timestamps entsprechen. Beim Import der Daten in das Process Mining Tool können Sie diese Parameter dann in der Konfiguration einstellen.

Beim Importieren einer CSV-Datei in die Process Mining Software Disco können Sie für jede Spalte in ihrem Datensatz auswählen, wie diese interpretiert werden soll.[a] In dem folgenden abgebildeten Beispiel eines Einkaufsprozesses sind die Case ID-Spalte (die Bestellnummer) als Case ID, die Start- und Complete-Timestamps als Timestamp und die Activity-Spalte als Activity eingestellt. Als Ergebnis produziert die Process Mining Software vollautomatisch eine grafische Darstellung des tatsächlichen Einkaufsprozesses auf Basis der historischen Daten. Der Prozess kann jetzt faktenbasiert weiter analysiert werden.

aFür die Open-Source-Software ProM arbeitet man oft über XML-Formate wie XES oder MXML, die diese Konfiguration abbilden.

In der Regel ergibt sich die erste Prozesssicht – und die daraus abzuleitende Import-Konfiguration – aus der Aufgabenstellung und dem Prozessverständnis.

Allerdings ist vielen Process-Mining-Neulingen noch nicht bewusst, dass eine große Stärke von Process Mining als exploratives Analyse-Werkzeug gerade darin besteht, dass man schnell und flexibel verschiedene Sichten auf den Prozess einnehmen kann. Die oben genannten Parameter funktionieren wie eine Linse, mit der Sie Prozesssichten aus verschiedenen Blickwinkeln einstellen können.

Hier sind drei Beispiele:

1. Anderer Aktivitäts-Fokus

Für den obigen Einkaufsprozess können wir z.B. den Fokus auch auf den organisatorischen Übergabefluss richten, indem wir als Activity die Role-Spalte (die Funktion oder Abteilung des Mitarbeiters) einstellen.

Somit kann der gleiche Prozess (und sogar der gleiche Datensatz) nun aus der organisationalen Perspektive analysiert werden. Ping-Pong-Verhalten und erhöhte Wartezeiten bei der Übergabe von Vorgängen zwischen Abteilungen können sichtbar gemacht und adressiert werden.

2. Kombinierte Aktivität

Anstatt den Fokus zu wechseln können wir auch verschiedene Dimensionen kombinieren, um ein detaillierteres Bild von dem Prozess zu bekommen.

Wenn Sie sich den folgenden Callcenter-Prozess anschauen, dann würden Sie vermutlich zunächst die Spalte ‘Operation’ als Aktivitätsname einstellen. Als Ergebnis sehen wir den folgenden Prozess mit sechs verschiedenen Prozessschritten, die u.a. das Annehmen von eingehenden Kundenanrufen (‚Inbound Call’) und interne Aktivitäten (‚Handle Case’) repräsentieren.

Jetzt stellen Sie sich vor, dass Sie den Prozess gern genauer analysieren würden. Sie möchten gern sehen, wie oft eingehende Anrufe von dem First-Level Support im Callcenter an die Spezialisten im Backoffice weitergeleitet werden. Tatsächlich sind diese Informationen in den Daten enthalten. Das Attribut ‚Agent Position’ gibt an, ob die Aktivität im First-Level Support (als ‘FL’ vermerkt) oder im Backoffice (als ‘BL’ vermerkt) stattgefunden hat.

Um die ‚Agent Position’ in die Aktivitätssicht mitzunehmen, können wir einfach sowohl die Spalte ‘Operation’ als auch die Spalte ‘Agent Position’ als Aktivitätsnamen einstellen. Die Inhalte der beiden Spalten werden nun zusammengefasst (konkateniert).

Als Ergebnis bekommen wir eine detailliertere Sicht auf den Prozess. Wir sehen z.B., dass im First-Level Support angenommene Anrufe 152 mal an das Backoffice zur weiteren Verarbeitung übergeben wurden.

3. Alternativer Case-Fokus

Zuletzt können wir für den gleichen Callcenter-Prozess in Frage stellen, ob die als Vorgangsnummer gewählte Service-Request-ID des CRM-Systems die gewünschte Prozesssicht bietet. Immerhin gibt es auch eine Kundennummer und für ‚Customer 3’ sind mindestens drei verschiedene Service-Anfragen vermerkt (Case 3, Case 12 und Case 14).

Was ist, wenn diese drei Anfragen zusammenhängen und sich die Service-Mitarbeiter nur nicht die Mühe gemacht haben, den bestehenden Case im System zu suchen und wieder zu öffnen? Das Ergebnis wäre eine verminderte Kundenzufriedenheit, weil der ‚Customer 3’  bei jedem Anruf erneut seine Problembeschreibung abgeben muss.

Das Ergebnis wäre außerdem eine geschönte ‚First Call Resolution Rate’: Die ‚First Call Resolution Rate’ ist eine typische Prozesskennzahl in Callcentern, in der gemessen wird, wie oft ein Kundenproblem im ersten Anruf gelöst werden konnte.

ProcessMining-Fig-5

Genau das ist in dem Kundenservice-Prozess eines Internet-Unternehmens passiert[3]. In einem Process-Mining-Projekt wurde zunächst der Kontaktaufnahmeprozess (über Telefon, Internet, E-Mail oder Chat) über die Service ID als Vorgangsnummer analysiert. In dieser Sicht ergab sich eine beeindruckende ‚First Contact Resolution Rate’ von 98%. Unter 21.304 eingehenden Anrufen gab es scheinbar nur 540 Wiederholungsanrufe.

ProcessMining-Fig-6

Dann fiel den Analysten auf, dass alle Service-Anfragen immer ziemlich schnell geschlossen und so gut wie nie wieder geöffnet wurden. Um den Prozess aus Kundenperspektive zu analysieren, verwendeten sie dann die Kundennummer als Case ID. Somit wurden alle Anrufe eines Kunden in dem Zeitraum zu einem Vorgang zusammengefasst und die Wiederholungsanrufe wurden sichtbar.

ProcessMining-Fig-7

Die ‚First Contact Resolution Rate’ betrug in Wirklichkeit nur 82%. Nur 17.065 Fälle wurden in Wirklichkeit von einem eingehenden Anruf gestartet. Über 3000 waren  Wiederholungsanrufe, die aber als neue Serviceanfragen im System (und im Performance-Report!) gezählt wurden.

Fazit

Process Mining ermöglicht es Ihnen eine Prozessperspektive auf Ihre Daten einzunehmen. Darüber hinaus lohnt es sich, verschiedene Sichten auf den Prozess zu betrachten. Halten Sie Ausschau nach anderen Aktivitäts-Perspektiven, möglichen Kombinationen von Feldern und neuen Sichtweisen darauf, was einen Vorgang im Prozess ausmacht.

Sie können verschiedene Blickwinkel einnehmen, um verschiedene Fragen zu beantworten. Oft ergeben erst verschiedene Sichten zusammen ein Gesamtbild auf den Prozess.

Möchten Sie die in diesem Artikel vorgestellten Perspektiv-Wechsel einmal selbst genauer erforschen? Sie können die verwendeten Beispiel-Dateien herunterladen (Zip-Verzeichnis)  und direkt mit der frei verfügbaren Demo-Version unserer Process Mining Software Disco analysieren.

Quellen

[1] 2015 Data Science Salary Survey (von Oreilly.com, PDF)

[2] Komplexe Abläufe verständlich dargestellt mit Process Mining (hier im Data Science Blog)

[3] You Need To Be Careful How You Measure Your Processes (fluxicon.com)

Man redet gerne über Daten, genutzt werden sie nicht

Der Big Data Hype ist vorbei und auf dem Anstieg zum „ Plateau of Productivity“. Doch bereits in dieser Phase klafft die Einschätzung von Analysten mit der Verbreitung von Big Data Predictive Analytics/Data Mining noch weit von der Realität in Deutschland auseinander. Dies belegt u.a. eine Studie der T-Systems Multimedia Solutions, zu welcher in der FAZ* der Artikel Man redet gerne über Daten, genutzt werden sie nicht, erschienen ist. Mich überrascht diese Studie nicht,  sondern bestätigt meine langjährige Markterfahrung.

Die Gründe sind vielfältig: keine Zeit, keine Priorität, keine Kompetenz, kein Data Scientist, keine Zuständigkeit, Software zu komplex – Daten und Use-Cases sind aber vorhanden.

Im folgenden Artikel wird die Datenanalyse- und Data-Mining Software der Synop Systems vorgestellt, welche „out-of-the-box“ alle Funktionen bereitstellt, um Daten zu verknüpfen, zu strukturieren, zu verstehen, Zusammenhänge zu entdecken, Muster in Daten zu lernen und Prognose-Modelle zu entwickeln.

Anforderung an „Advanced-Data-Analytics“-Software

Um Advanced-Data-Analytics-Software zu einer hohen Verbreitung zu bringen, sind folgende Aspekte zu beachten:

  1. Einfachheit in der Nutzung der Software
  2. Schnelligkeit in der Bearbeitung von Daten
  3. Analyse von großen Datenmengen
  4. Große Auswahl an vorgefertigten Analyse-Methoden für unterschiedliche Fragestellungen
  5. Nutzung (fast) ohne IT-Projekt
  6. Offene Architektur für Data-Automation und Integration in operative Prozesse

Synop Analyzer – Pionier der In-Memory Analyse

Um diese Anforderungen zu erfüllen, entstand der Synop Analyzer, welcher seit 2013 von der Synop Systems in den Markt eingeführt wird. Im Einsatz ist die Software bei einem DAX-Konzern bereits seit 2010 und zählt somit zum Pionier einer In-Memory-basierenden Data-Mining Software in Deutschland. Synop Analyzer hat besondere Funktionen für technische Daten. Anwender der Software sind aber in vielen Branchen zu finden: Automotive, Elektronik, Maschinenbau, Payment Service Provider, Handel, Versandhandel, Marktforschung.

Die wesentlichen Kernfunktionen des  Synop Analyzer sind:

a. Eigene In-Memory-Datenhaltung:

Optimiert für große Datenmengen und analytische Fragestellungen. Ablauffähig auf jedem Standard-Rechner können Dank der spaltenbasierenden Datenhaltung und der Komprimierung große Datenmengen sehr schnell analysiert werden. Das Einlesen der Daten erfolgt direkt aus Datenbanktabellen der Quellsysteme oder per Excel, CSV, Json oder XML. Unterschiedliche Daten können verknüpf und synchronisiert werden. Hohe Investitionen für Big-Data-Datenbanken entfallen somit. Eine Suche von Mustern von diagnostic error codes (dtc), welche mind. 300 Mal (Muster) innerhalb 100 Mio. Datenzeilen vorkommen, dauert auf einem I5-Proz. ca. 1200 Sek., inkl. Ausgabe der Liste der Muster. Ein Prognosemodel mittels Naive-Bayes für das Produkt „Kreditkarte“ auf 800 Tsd. Datensätzen wird in ca. 3 Sek. berechnet.

b. Vielzahl an Analyse-Methoden

Um eine hohe Anzahl an Fragestellungen zu beantworten, hat der Synop Analyzer eine Vielzahl an vorkonfigurierten Analyse- und Data-Mining-Verfahren (siehe Grafik) implementiert. Daten zu verstehen wird durch Datenvisualisierung stark vereinfacht. Die multivariate Analyse ist quasi interaktives Data-Mining, welches auch von Fachanwendern schnell genutzt wird. Ad hoc Fragen werden unmittelbar beantwortet – es entstehen aber auch neue Fragen dank der interaktiven Visualisierungen. Data-Mining-Modelle errechnen und deren Modellgüte durch eine Testgruppe zu validieren ist in wenigen Minuten möglich. Dank der Performance der In-Memory-Analyse können lange Zeitreihen und alle sinnvollen Datenmerkmale in die Berechnungen einfließen. Dadurch werden mehr Einflussgrößen erkannt und bessere Modelle errechnet. Mustererkennung ist kein Hokuspokus, sondern Dank der exzellenten Trennschärfe werden nachvollziehbare, signifikante Muster gefunden. Dateninkonsistenzen werden quasi per Knopfdruck identifiziert.

synop-systems-module

c. Interaktives User Interface

Sämtliche Analyse-Module sind interaktiv und ohne Programmierung zu nutzen. Direkt nach dem Einlesen werden Grafiken automatisiert, ohne Datenmodellierung, erstellt.  Schulung ist kaum oder minimal notwendig und Anwender können erstmals fundierte statistische Analysen und Data-Mining in wenigen Schritten umsetzen. Data-Miner und Data Scientisten ersparen sich viel Zeit und können sich mehr auf die Interpretation und Ableitung von Handlungsmaßnahmen fokussieren.

d. Einfacher Einstieg – modular und mitwachsend

Der Synop Analyzer ist in unterschiedlichen Versionen verfügbar:

– Desktop-Version: in dieser Version sind alle Kernfunktionen in einer Installation kombiniert. In wenigen Minuten mit den Standard-Betriebssystemen MS-Windows, Apple Mac, Linux installiert. Außer Java-Runtime ist keine weitere Software notwendig. Somit fast, je nach Rechte am PC, ohne IT-Abt. installierbar. Ideal zum Einstieg und Testen, für Data Labs, Abteilungen und für kleine Unternehmen.

– Client/Server-Version: In dieser Version befinden die Analyse-Engines und die Datenhaltung auf dem Server. Das User-Interface ist auf dem Rechner des Anwenders installiert. Eine Cloud-Version ist demnächst verfügbar. Für größere Teams von Analysten mit definierten Zielen.

– Sandbox-Version: entspricht der C/S-Server Version, doch das User-Interface wird spezifisch auf einen Anwenderkreis oder einen Anwendungsfall bereitgestellt. Ein typischer Anwendungsfall ist, dass gewisse Fachbereiche oder Data Science-Teams eine Daten-Sandbox erhalten. In dieser Sandbox werden frei von klassischen BI-Systemen, Ad-hoc Fragen beantwortet und proaktive Analysen erstellt. Die Daten werden per In-Memory-Instanzen bereitgestellt.

Fazit:  Mit dem Synop Analyzer erhalten Unternehmen die Möglichkeit Daten sofort zu analysieren. Aus vorhandenen Daten wird neues Wissen mit bestehenden Ressourcen gewonnen! Der Aufwand für die Einführung ist minimal. Der Preis für die Software liegt ja nach Ausstattung zw. 2.500 Euro und 9.500 Euro. Welche Ausrede soll es jetzt noch geben?

Nur wer früh beginnt, lernt die Hürden und den Nutzen von Datenanalyse und Data-Mining kennen. Zu Beginn wird der Reifegrad klein sein: Datenqualität ist mäßig, Datenzugriffe sind schwierig. Wie in anderen Disziplinen gilt auch hier: Übung macht den Meister und ein Meister ist noch nie von Himmel gefallen.

Text Mining mit R

R ist nicht nur ein mächtiges Werkzeug zur Analyse strukturierter Daten, sondern eignet sich durchaus auch für erste Analysen von Daten, die lediglich in textueller und somit unstrukturierter Form vorliegen. Im Folgenden zeige ich, welche typischen Vorverarbeitungs- und Analyseschritte auf Textdaten leicht durchzuführen sind. Um uns das Leben etwas leichter zu machen, verwenden wir dafür die eine oder andere zusätzliche R-Library.

Die gezeigten Schritte zeigen natürlich nur einen kleinen Ausschnitt dessen, was man mit Textdaten machen kann. Der Link zum kompletten R-Code (.RMD) findet sich am Ende des Artikels.

Sentimentanalyse

Wir verwenden das Anwendungsgebiet der Sentimentanalyse für diese Demonstration. Mittels der Sentimentanalyse versucht man, Stimmungen zu analysieren. Im Prinzip geht es darum, zu erkennen, ob ein Autor mit einer Aussage eine positive oder negative Stimmung oder Meinung ausdrückt. Je nach Anwendung werden auch neutrale Aussagen betrachtet.

Daten einlesen

Datenquelle: ‘From Group to Individual Labels using Deep Features’, Kotzias et. al,. KDD 2015

Die Daten liegen als cvs vor: Die erste Spalte enhält jeweils einen englischen Satz, gefolgt von einem Tab, gefolgt von einer 0 für negatives Sentiment und einer 1 für positives Sentiment. Nicht alle Sätze in den vorgegebenen Daten sind vorklassifiziert.

Wir lesen 3 Dateien ein, fügen eine Spalte mit der Angabe der Quelle hinzu und teilen die Daten dann in zwei Datensätze auf. Der Datensatz labelled enthält alle vorklassifizierten Sätze während alle anderen Sätze in unlabelled gespeichert werden.

Wir haben nun 3000 vorklassifizierte Sätze, die entweder ein positives oder ein negatives Sentiment ausdrücken:

Textkorpus anlegen

Zuerst konvertieren wir den Datensatz in einen Korpus der R-Package tm:

Wir können uns nun einen Eindruck über die Texte verschaffen, bevor wir erste Vorverarbeitungs- und Säuberungsschritte durchführen:

  • Fünf Dokumente mit negativem Sentiment, die das Wort “good” enthalten: Not a good bargain., Not a good item.. It worked for a while then started having problems in my auto reverse tape player., Not good when wearing a hat or sunglasses., If you are looking for a good quality Motorola Headset keep looking, this isn’t it., However, BT headsets are currently not good for real time games like first-person shooters since the audio delay messes me up.
  • Liste der meist verwendeten Worte im Text: all, and, are, but, film, for, from, good, great, had, have, it’s, just, like, movie, not, one, phone, that, the, this, very, was, were, with, you
  • Anzahl der Worte, die nur einmal verwendet werden: 4820, wie z.B.: ‘film’, ‘ive, ’must’, ‘so, ’stagey’, ’titta
  • Histogramm mit Wortfrequenzen:

Plotten wir, wie oft die häufigsten Worte verwendet werden:

Vorverarbeitung

Es ist leicht zu erkennen, dass sogenannte Stoppworte wie z.B. “the”, “that” und “you” die Statistiken dominieren. Der Informationsgehalt solcher Stopp- oder Füllworte ist oft gering und daher werden sie oft vom Korpus entfernt. Allerdings sollte man dabei Vorsicht walten lassen: not ist zwar ein Stoppwort, könnte aber z.B. bei der Sentimentanalyse durchaus von Bedeutung sein.

Ein paar rudimentäre Vorverarbeitungen:

Wir konvertieren den gesamten Text zu Kleinbuchstaben und entfernen die Stoppworte unter Verwendung der mitgelieferten R-Stoppwortliste für Englisch (stopwords(“english”)). Eine weitere Standardoperation ist Stemming, das wir heute auslassen. Zusätzlich entfernen wir alle Sonderzeichen und Zahlen und behalten nur die Buchstaben a bis z:

 

Schlagwortwolke bzw Tag Cloud

Schließlich erzeugen wir eine Tag-Cloud aller Worte, die mindestens 25 mal im Text verwendet werden. Tag-Clouds eignen sich hervorragend zur visuellen Inspektion von Texten, allerdings lassen sich daraus nur bedingt direkte Handlungsanweisungen ableiten:

schlagwortwolke

Word-Assoziationen

Wir können uns für bestimmte Worte anzeigen lassen, wie oft sie gemeinsam mit anderen Worten im gleichen Text verwendet werden:

  • Worte, die häufig gemeinsam mit movie verwendet werden:

  • Worte, die häufig gemeinsam mit product verwendet werden:


 

Text-Mining

Wir erzeugen einen Entscheidungsbaum zur Vorhersage des Sentiments. Entscheidungsbäume sind nicht unbedingt das Werkzeug der Wahl für Text-Mining aber für einen ersten Eindruck lassen sie sich bei kleinen Datensätzen durchaus gewinnbringend einsetzen:

 

Eine Fehlerrate von über 50% auf den Trainingsdaten für positive Sentiments ist natürlich nicht berauschend und daher testen wir zum Schluß noch Support Vector Machines:

Die Ergebnisse sehen deutlich besser aus, müssten aber natürlich noch auf unabhängigen Daten verifiziert werden, um z. B. ein Overfittung zu vermeiden.

Download-Link zum kompletten R-Code für dieses Text-Mining-Beispiel: https://www.data-science-blog.com/download/textMiningTeaser.rmd

Wie lernen Maschinen?

Im zweiten Teil wollen wir das mit Abstand am häufigsten verwendete Optimierungsverfahren – das Gradientenverfahren oder Verfahren des steilsten Abstiegs – anhand einiger Beispiele näher kennen lernen. Insbesondere werden wir sehen, dass die Suchrichtung, die bei der Benennung der Verfahren meist ausschlaggebend ist, gar nicht unbedingt die wichtigste Zutat ist.

Read more

Daten in Formation bringen

Bei den vielfach stattfindenden Diskussionen um und über den Begriff Big Data scheint es eine Notwendigkeit zu sein, Daten und Informationen gegeneinander abzugrenzen. Auf Berthold Brecht geht folgendes Zitat zurück: „Ein Begriff ist ein Griff, mit denen man Dinge bewegen kann“. Folgt man dieser Aussage, so kann man leicht die falschen Dinge bewegen, wenn man die Begriffe nicht im Griff hat.
Eine mögliche Herangehensweise zur Unterscheidung der Begriffe Daten und Informationen liefert dabei die Semiotik (Zeichentheorie), welche in Syntax, Semantik und Pragmatik untergliedert werden kann:

Unter Syntax (altgr.: Ordnung, Reihenfolge) versteht man im Allgemeinen Regeln, welche es erlauben, elementare Zeichen zu neuen, zusammengesetzten Zeichen, Worten und Wortgruppen zu kombinieren. Daten sind tendenziell diesem Bereich zuzuordnen.

Beispiel:    10:30    24    Essen

Die Semantik (griech.: bezeichnen, zum Zeichen gehörend, auch Bedeutungslehre) indes beschäftigt sich mit Beziehungen und Bedeutung von Zeichen (Kontext). Regeln der Zusammensetzung aus der Syntax stehen demnach den Interpretationsregeln der Semantik gegenüber. Mit anderen Worten, der Kontext (Bezugsrahmen), in welchem die Zeichen verwendet werden, bestimmt deren Bedeutung. Ludwig Wittgenstein (1889 – 1951) verglich Worte mit Schachfiguren und postulierte, dass die Verwendung eines Wortes dessen Bedeutung bestimmt.

Beispiel:    10:30 Uhr    24 Grad Celcius    Stadt Essen

Pragmatik wiederum beschäftigt sich mit dem Gebrauch von Worten und somit der Verwendung von Sprache in spezifischen Situationen. Bei Informationen stehen dabei Handlungsorientierung sowie subjektiver Nutzen im Vordergrund. Informationen reduzieren Unsicherheit beim Empfänger, sie bereiten eine Entscheidung vor.

Beispiel: Auf Grund der Temperatur in der Stadt Essen um 10:30 Uhr benötige ich keine Jacke

Abbildung 1 Daten versus Informationen, eigene Darstellung

Abbildung 1 Daten versus Informationen, eigene Darstellung

Fazit:

(Big) Daten sind eine notwendige, aber keine hinreichende Bedingung für die Bildung von entscheidungsrelevanten Informationen. In anderen Worten, Daten sind vergleichbar mit Ziegelsteinen. Wenn man aus Ziegelsteinen (Daten) kein Haus (Kontext, Informationen) baut, sind es bloß Ziegelsteine. Man kann Informationen wiederum als Rohstoff interpretieren, aus welchem Entscheidungen hergestellt werden (können).

Text-Mining mit dem Aika Algorithmus

In diesem Beitrag möchte ich das Open Source Projekt Aika vorstellen. Ziel des Projektes ist es einen Text-Mining Algorithmus zu entwickeln, der ein künstliches Neuronales Netz (kNN) mit einem Pattern Mining Algorithmus kombiniert. Dabei dient die Silbentrennung von Wörtern als initiale Aufgabe, anhand derer der Algorithmus weiterentwickelt wird. Für diese Aufgabe soll allerdings kein vordefiniertes Wörterbuch verwendet werden. Stattdessen sollen die Silben in ihrer Eigenschaft als häufig auftretende Muster in rohem Text erkannt werden. Hier reicht es allerdings nicht einen Mining Algorithmus nach häufig auftretenden Strings suchen zu lassen, da sich viele der Strings überlappen oder schlicht keinen Sinn ergeben würden. Es ist also wichtig, dass sich die erkannten Silben gegenseitig unterdrücken können und dass der Algorithmus in der Lage ist, die so entstehenden unterschiedlichen Interpretationen eines Wortes miteinander zu vergleichen und die am höchsten gewichtete auszuwählen. Beispielsweise taucht die Silbe ‘der’ zu Beginn des Wortes ‘de-re-gu-lie-ren’ auf. In diesem Fall muss der Algorithmus erkennen, dass die erste Silbe des Wortes nicht ‘der’ sondern nur ‘de’ ist.

Wenn nun nach häufig auftretenden Mustern in Text gesucht werden soll, warum verwenden wir nicht einen reinen Pattern Mining Algorithmus? Der Grund für die Kombination mit einem kNN liegt darin, dass die erkannten Muster innerhalb einer kNN Topologie aufeinander aufsetzen können. Wenn z. B. das Wort “hausboot” als Muster erkannt werden soll, dann entstünden in der Datenstruktur des Mining Algorithmus sehr viele Teilmuster, die alle evaluiert werden müssten. Viel leichter wäre es für den Algorithmus, wenn die Muster “haus” und “boot” bereits erkannt worden wären und nun als Eingaben für die Erkennung des Wortes “hausboot” dienen könnten. So ist der Algorithmus zum einen in der Lage komplexere Muster zu erkennen und muss gleichzeitig weniger Teilmuster untersuchen. Ausserdem erlaubt es ein kNN ‘weiche’ Muster zu erlernen, also Muster bei denen einzelne Eingänge optional sind, die aber trotzdem noch sicher erkannt werden. Dadurch kann eine höhere Toleranz gegenüber Fehlern erreicht werden.

Im Gegensatz zu einem klassischen kNN nutzt Aika einen eher mit Googles Pagerank vergleichbaren Ansatz um Gewichte zwischen den einzelnen Neuronen des Netzwerks zu propagieren. Der Grutext-pattern-knnndgedanke dabei ist es, dass Neuronen entsprechend höher gewichtet werden sollten, wenn sie mit anderen hoch gewichteten Neuronen in Beziehung stehen. Wenn also beispielsweise eine Silbe in vielen hoch gewichteten Worten auftaucht, wird sie selbst entsprechend höher gewichtet.

Neuronen eines kNN erlauben es aber nicht nur Konjunktionen wie etwa bei Mustern zu erlernen, sondern auch Disjunktionen. Disjunktionen sind insbesondere beim Erlernen von Grammatikregeln wichtig, wenn z. B. einzelne Worte als Nomen erkannt werden sollen. Wenn nun solche Disjunktionen erlernt werden sollen, können auch hier häufige Muster behilflich sein. Angenommen, es wurden durch den Mining Algorithmus bereits die folgenden häufigen Muster gefunden: “der Baum” (f=4), “der Hammer” (f=3) und “der Nagel” (f=6). Dann können diese Muster so umgeformt werden, dass ein neues, deutlich häufigeres Muster “der <NOMEN>” (f=13) und eine Disjunktion <NOMEN> = “Baum” oder “Hammer” oder “Nagel”, entsteht.

Die üblichen Verdächtigen – 8 häufige Fehler in der Datenanalyse

Das eine vorab: eine Liste der meist begangenen Fehler in der Datenanalyse wird in jedem Fall immer eine subjektive Einschätzung des gefragten Experten bleiben und unterscheidet sich je nach Branche, Analyse-Schwerpunkt und Berufserfahrung des Analysten. Trotzdem finden sich einige Missverständnisse über viele Anwendungsbereiche der Datenanalyse hinweg immer wieder. Die folgende Liste gibt einen Überblick über die acht am häufigsten begangenen Fehler in der angewandten Datenanalyse von denen ich behaupte, dass sie universell sind.

  1. Statistische Signifikanz versus Relevanz

Die Idee der statistischen Signifikanz wird oft missverstanden und deswegen fälschlicherweise mit statistisch belegter Relevanz gleichgesetzt. Beide messen jedoch sehr unterschiedliche Dinge. Statistische Signifikanz ist ein Maß der Gewissheit, welches die Zufälligkeit von Variation berücksichtigt. „Statistisch signifikant“ bedeutet also, dass es unwahrscheinlich ist, dass ein bestimmtes Phänomen nur zufällig auftritt. „Statistisch nicht signifikant“ bedeutet, dass neben der zufälligen Variation keine systematische bewiesen werden konnte. Wichtig: dies bedeutet nicht, dass es keine Effekte gibt, sondern, dass diese nicht belegt werden konnten. Statistische Signifikanz lässt sich mit ausreichend vielen Beobachtungen allerdings auch für sehr kleine Unterschiede belegen. Generell gilt: je größer die Stichprobe, desto kleiner werden die Unterschiede, welche als statistisch signifikant getestet werden. Deswegen unterscheidet sich die statistische Relevanz von der statistischen Signifikanz.

Statistische Relevanz misst hingegen die Effektstärke eines Unterschiedes. Die Größe eines Unterschiedes wird dazu in Relation zur Streuung der Daten gesetzt und ist damit unabhängig von der Stichprobengröße. Je größer die Varianz der Zufallsvariablen, desto kleiner wird die Effektstärke.

  1. Korrelation versus Kausalität

Wird eine hohe Korrelation zwischen zwei Größen festgestellt, so wird oft geschlussfolgert, dass eine der beiden Größen die andere bestimmt. In Wahrheit können auch komplexe statistische und ökonometrische Modelle keine Kausalität beweisen. Dies gilt sogar, wenn die Modellierung einer theoretischen Grundlage folgt, denn auch die kann falsch sein. Regelmäßig lehnen sich Forscher und Analysten aus dem Fenster, indem sie Wirkungen behaupten, welche eine genaue Prüfung nicht aushalten. Standardfragen, die als Automatismus einer jeden Analyse folgen sollte, welche behauptet Effekte gefunden zu haben sind: Welche Rolle spielen unbeobachtete Heterogenitäten, umgekehrte Kausalität und Messfehler in den Variablen für das Schätzergebnis? Erst wenn diese drei Quellen von Endogenität kontrolliert werden und außerdem davon ausgegangen werden kann, dass die Stichprobe die Grundgesamtheit repräsentiert, kann ein kausaler Zusammenhang angenommen und quantifiziert werden.

  1. Unbeobachtete Einflussfaktoren

Nicht messbare und deswegen nicht erhobene Einflüsse verzerren die geschätzten Parameter der kontrollierbaren Faktoren, sofern letztere mit den unbeobachteten im Zusammenhang stehen. In anderen Worten: der geschätzte Effekt wird fälschlicherweise der beobachteten Größe zugeschrieben, wenn eigentlich eine dritte, nicht beobachtete Größe die Zielgröße bedingt und gleichzeitig mit der beobachteten Größe korreliert. Das Lehrbeispiel
für Verzerrungen durch unbeobachtete Größen ist die Lohngleichung – eine Gleichung die seit nunmehr 60 Jahren intensiv beforscht wird. Die Schwierigkeit bei der Quantifizierung des Effektes von Ausbildung liegt darin, dass die Entlohnung nicht nur über Alter, Berufserfahrung, Ausbildung und den anderen Kontrollvariablen variiert, sondern auch durch das unterschiedlich ausgeprägte Interesse an einem lukrativen Erwerb und die Fähigkeit des Einzelnen, diesen zu erlangen. Die Herausforderung: es gibt keinen statistischen Test, welche eine Fehlspezifikation durch unbeobachtete Größen angibt. Unabdingbar ist deswegen ein tiefgehendes Verständnis des Analyseproblems. Dieses befähigt den Analysten Hypothesen zu formulieren, welche unbeobachteten Größen über eine Korrelation mit dem getesteten Regressor im Fehlerterm ihr Unwesen treiben. Um Evidenz für die Hypothesen zu schaffen, müssen smarte Schätzdesigns oder ausreichend gute Instrumente identifiziert werden.statistische-verzerrung

  1. Selektionsverzerrung

Eine Selektionsverzerrung liegt vor, wenn Beobachtungen nicht für jedes Individuum vorliegen oder von der Analyse ausgeschlossen werden. Die Grundvoraussetzung für jeden statistischen Hypothesentest ist die Annahme einer Zufallsstichprobe, so dass die Zielpopulation repräsentativ abgebildet ist. In der Praxis ergeben sich allerdings oft Situationen, in denen bestimmte Merkmale nur für eine Gruppe, aber nicht für eine zweite beobachtet werden können. Beispielsweise kann der Effekt einer gesundheitsfördernden Maßnahme eines Großbetriebes für die gesamte Belegschaft nicht durch die freiwillige Teilnahme einiger Mitarbeiter gemessen werden. Es muss explizit dafür kontrolliert werden, welche Unterschiede zwischen Mitarbeitern bestehen, welche das Angebot freiwillig in Anspruch nehmen im Vergleich zu denen, die es nicht annehmen. Eine Gefahr der Über- oder Unterschätzung der Effekte besteht generell immer dann, wenn über die Beschaffenheit der Stichprobe im Vergleich zur Grundgesamtheit nicht nachgedacht wird. Auf Basis einer nicht repräsentativen Stichprobe werden dann fälschlicherweise Generalisierungen formuliert werden, welche zu falschen Handlungsempfehlungen führen können.

  1. Überanpassung und hohe Schätzervarianz

Überanpassung passiert, wenn der Analyst „zu viel“ von den Daten will. Wird das Model überstrapaziert, so erklären die Kontrollvariablen nicht nur die Zielgröße sondern auch das weiße Rauschen, also die Zufallsfehler. Die Anzahl der Regressoren im Verhältnis zur Anzahl der Beobachtungen ist in solch einer Spezifikation übertrieben. Das Problem: zu wenig Freiheitsgrade und das vermehrte Auftreten von Multikollinearität führen zu einer hohen Varianz in der Verteilung der Schätzer. Ein Schätzergebnis einer Spezifikation mit einer hohen Schätzervarianz kann also Schätzergebnisse produzieren, welche vom wahren Wert weiter entfernt sind als ein verzerrter Schätzer. Tatsächlich ist ein „falsches“ meistens ein Hinweis auf Multikollinearität.verlorene-effizienz-statistisches-modell

Oft macht es Sinn, die Spezifikation anzupassen, indem man die korrelierten Regressoren ins Verhältnis zueinander zu setzt. In der Praxis geht es immer darum, einen Kompromiss aus Verzerrung und Varianz zu finden. Das Kriterium hierfür ist die Minimierung des mittleren quadratischen Fehlers. Um zu überprüfen, ob der Analyst über das Ziel hinausgeschossen ist, gibt es zudem verschiedene Validierungsmethoden, welche je nach Methode einen bestimmten Anteil oder sogar keine Daten „verschwenden“, um das Modell zu überprüfen.kompromiss-quadratischer-fehler-statistisches-modell

  1. Fehlende Datenpunkte

Beobachtungen mit fehlenden Datenpunkten werden in der Praxis aus der Analyse in den meisten Fällen ausgeschlossen, einfach deswegen, weil das am schnellsten geht. Bevor das gemacht wird, sollte allerdings immer die Frage vorangestellt werden, wieso diese Datenpunkte fehlen. Fehlen sie zufällig, so führt der Ausschluss der Beobachtungen zu keinen unterschiedlichen Ergebnissen. Fehlen sie allerdings systematisch, beispielsweise wenn Personen mit bestimmten Merkmalen spezifische Daten lieber zurückhalten, so ergeben sich daraus Herausforderungen. Es sollte dann darum gehen, diese gesamte Verteilung zu ermitteln. Ist unklar, ob die Daten zufällig oder systematisch fehlen, so sollte sich der Analyst im Zweifel dieser Frage annehmen. Es müssen dann Informationen identifiziert werden, welche helfen die fehlenden Daten zu imputieren.

  1. Ausreißer

Ausreißer werden in vielen Anwendungen mit standardisierten Verfahren identifiziert und aus dem Datensatz entfernt. Dabei lohnt es sich in vielen Fällen, die Daten ernst zu nehmen. Die Voraussetzung hierfür: die Datenpunkte müssen legitim sein. Problemlos ausschließen lassen sich Datenpunkte, welche durch Eingabefehler und bewusste Falschmeldung erzeugt wurden. Legitime Datenpunkte sind hingegen “echte” Werte. Die Einbeziehung von Ausreißern kann mitunter einen inhaltlichen Beitrag zur Analyse leisten, da auch sie einen Teil der Population im Ganzen sind. Problematisch wird die Beibehaltung von Ausreißern, wenn durch sie Zusammenhänge identifizierbar werden, die auf den Rest der Population nicht zutreffen. Mögliche Verfahren, welche Ausreißer mit dem Rest der Beobachtungen versöhnen, sind Transformationen der Daten oder die Anwendung robuster Schätzverfahren. Beide Ansätze spielen mit einer stärkeren Gewichtung der mittleren Verteilung. Außerdem kann beispielsweise in Regressionen überprüft werden, inwieweit etwa ein nicht-linearer Fit die Ausreißer besser in die Schätzung aufnimmt.

  1. Spezifizierung versus Modellierung

Allzu oft werden komplizierte statistische Modelle gebaut, bevor überprüft wurde, was ein einfaches Modell leisten kann. Bevor jedoch komplexe Modelle gestrickt werden, sollte zuerst an der Spezifikation des Modells gearbeitet werden. Kleine Anpassungen wie die Inklusion verbesserter Variablen, die Berücksichtigung von Interaktionen und nicht-linearen Effekten bringen uns in manchen Fällen der Wahrheit näher als ein aufwendiges Modell und sollten in jedem Fall ausgereizt werden, bevor ein aufwendigeres Modell gewählt wird. Je einfacher das Modell, desto einfacher ist es in der Regel auch die Kontrolle darüber zu behalten. In jedem Fall sollten die gewählten Spezifikationen immer durch Sensitivitätsanalysen unterstützt werden. Unterschiede in der Variablendefinition und der Selektion der Daten, sollten sowohl getestet als auch berichtet werden. Einen guten Grund, das Modell zu wechseln hat der Analyst dann, wenn daraus ersichtlich wird, dass Annahmen des einfachen Modells verletzt werden und dieses deswegen keine validen Ergebnisse produziert.

Komplexe Abläufe verständlich dargestellt mit Process Mining

Stellen Sie sich vor, dass Ihr Data Science Team dabei helfen soll, die Ursache für eine wachsende Anzahl von Beschwerden im Kundenservice-Prozess zu finden. Sie vertiefen sich in die Daten des Service-Portals und generieren eine Reihe von Charts und Statistiken zur Verteilung der Beschwerden auf die verschiedenen Fachbereiche und Produktgruppen. Aber um das Problem zu lösen, müssen die Schwachstellen im Prozess selbst offengelegt und mit dem Fachbereich kommuniziert werden.

Nach Einbeziehen der CRM-Daten sind Sie mit Process Mining schnell in der Lage etliche unerwünschte Schleifen und Verzögerungen im Prozess zu identifizieren. Und diese Abweichungen werden sogar vollautomatisch als graphische Prozesskarte abgebildet! Der Fachbereichsleiter sieht auf den ersten Blick, wo das Problem liegt, und kann umgehend Verbesserungsmassnahmen einleiten.

Genau hier sehen wir eine zunehmende Begeisterung für Process Mining über alle Branchen hinweg: Der Datenanalyst kann nicht nur schnell Antworten liefern sondern auch die Sprache des Prozessmanagers sprechen und die entdeckten Prozessprobleme eindrücklich visuell machen.

Data Scientists bewegen sich geschickt durch eine ganze Reihe von Technologien. Sie wissen, dass 80% der Arbeit in der Aufbereitung und dem Säubern der Daten besteht. Sie können mit SQL, NoSQL, ETL-Tools, Statistik, Skriptsprachen wie Python, Data-Mining-Werkzeugen und R umgehen. Aber für viele von ihnen ist Process Mining noch nicht Teil der Data-Science-Tool-Box. Read more

Auswertung von CSV- und Log-Dateien auf der Command Line mit awk

Die Programmiersprache awk ist klein und unscheinbar, unter Data Science at the Command Line-Verfechtern allerdings ein häufiges Tool zur schnellen Analyse von CSV-Datein und vergleichbar strukturierten Daten (z. B. Logfiles) mit über Trennzeichen differenzierten Spalten. Auch in Shell-Skripten kommt awk meistens dann zum Einsatz, wenn es um den Zugriff, aber auch um die Manipulation von solchen Dateien geht.

Data Science at the Command Line: Facing the Future with Time-Tested Tools

awk wird als Skriptsprache mit nahezu jeder Linux-Distribution ausgeliefert und ist recht einfach eingehalten, kann jedoch auch schnell kryptisch werden. awk wird meistens ad-hoc auf der Kommandozeile ausgeführt, es können jedoch auch Skripte in awk-Dateien erstellt werden. Häufiger Grund für den Einsatz von awk ist die Anwendung von regulären Ausdrücken (Textmustersuche) auf Logdateien.

Nachfolgend ein kleines Tutorial für den Schnelleinstieg in diese interessante Analysetool auf Kommandozeile. Die CSV-Datei einfach hier downloaden: (einen Überblick über den Inhalt bietet auch eine Einführung in Python, die ebenfalls auf dieser CSV-Datei basiert)

CSV-Datei gedownloaded? Dann kann es losgehen im Terminal jeder beliebiger Linux-Distribution:

Anweisungen, so auch die obige, beginnen stets mit “awk”. Da diese CSV-Datei nicht mit dem Standardchar (Komma), sondern einem vertikalen Strich (Pipe) getrennt ist, muss dies via “-F’|'” angegeben werden. Wäre das Trennzeichen ein Semikolon, wäre der Parameter “-F’;'” korrekt. Der Befehl gibt jede Zeile des CSV in der Kommandozeile aus, so dass wie nachfolgend den gesamten Dateiinhalt sehen:

Viele CSV- und Logdateien haben keinen Header, diese hier hat jedoch die erste Zeile als Header, die daher bei der Analyse nicht als Werte-Zeile fehlinterpretiert werden darf, daher wird nachfolgend von nun an die Anweisung “NR>1” mitgegeben:

Spalten werden in awk über das Dollarzeichen angesprochen, folgende Anweisung zeigt uns alle Zeilen der zweiten Spalte:

Diese Skriptsprache beherrscht assoziative Arrays. Es können demnach auch nicht-numerische Schlüssel für den Zugriff auf Datenfelder verwendet werden. Dies machen wir uns für das Anzeigen aller Standorte mit Angabe der jeweiligen Mitarbeiterzahl an dem Standort zu nutze. Die Variable a speichert alle Mitarbeiterzahlen in Spalte 4 über den Schlüssel des Standortnamens in Spalte 2, dann endet der Anweisungsblock und es folgt eine For-Schleife, die alle Schlüsselwerte ausgibt und den dazugehörigen Speicherwert (Mitarbeiterzahl) ausgibt.

Auch If-Anweisungen sind einfach machbar. Folgendes Beispiel unterscheidet die Zeilennummern (Spalte1) nach geraden und ungeraden Zahlen und gibt den dazugehörigen Standortnamen (Spalte 2) aus.

Folgendes Beispiel klassifiziert alle Standorte mit weniger als 10 Mitarbeitern, allerdings nicht über “if…else…”, sondern über die Kurzabfrage nach dem Schema a>b?”True”:”False”.

Folgendes Code-Beispiel zeigt die Zählung der Vorkommnisse (Entsprechung: GROUP BY Spalte3, Count(*)).

Etwas umformuliert, können wir auch die Werte pro Gruppe aufsummieren, nachfolgend beispielhaft der Gewinn (Einnahmen aus Spalte 5 – Kosten aus Spalte 6) und die Mitarbeiterzahl über die jeweilige Gruppe.

Das Zusammenführen von Zeichenketten erfolgt simpel durch Aneinandereihung:

Ein letztes Beispiel möchte keine einzelnen Zeilen des Datensatzes auflisten und auch keine Gruppierung unterscheiden, sondern die Zusammenfassung über die Angabe der gesamten Mitarbeiteranzahl und der Gewinn-Summe über alle Standorte angeben.

Fazit

Als Programmiersprache ist awk sicherlich nur ein nice-to-have, aber wenn man das Prinzip dieser Sprache erstmal verstanden hat, kann sie ein interessantes Tool darstellen, um schon auf Kommandozeilenebene sich schnell einen Überblick über Datenbestände zu beschaffen und auch um Datenqualitätstests durchzuführen.

 

Datenvisualisierung in Python [Tutorial]

Python ist eine der wichtigsten Programmiersprachen in der Data Science Szene. Der Einstieg in diese Programmiersprache fällt zum Beispiel im Vergleich zur Programmiersprache R etwas einfacher, da Python eine leicht zu verstehende Syntax hat. Was jedoch beim Einstieg zur größeren Hürde werden kann, ist der Umgang mit den unüberschaubar vielen Bibliotheken. Die wichtigsten Bibliotheken für Data Science / Data Analytics stellte ich bereits in diesem Artikel kurz vor. Hier ist es wichtig, einfach erstmal anzufangen – Warum nicht mit den ersten Datenvisualisierungen?

Natürlich gibt es sehr viele tolle und schön anzusehende Visualisierungen, die teilweise sehr speziell sind. In einem anderen Artikel stellte ich beispielsweise die 3D-Visualisierung von Graphen mit Python und UbiGraph vor. Dieser Artikel hier gilt aber vor allem Einsteigern, die erste Diagramme hergezaubert bekommen möchten.

Damit wir beginnen können, müssen im Python-Skript zuerst zwei wichtige Bibliotheken eingebunden werden:

import matplotlib.pyplot as pyplot

import pandas as pandas

Beide Bibliotheken können direkt gedownloaded werden, sind aber auch im Anaconda Framework enthalten (Empfehlung: Anaconda für Python 2.7).

Die Bibliothek matplotlib (library) ist mit Sicherheit die gängigste zur Visualisierung von Daten. Die Bibliothek pandas ist eine der verbreitetsten, die für den Zugriff, die Manipulation und Analyse von Daten eingesetzt wird. In diesen einfachsten Beispielen benutzen wir pandas nur zum Zugriff auf Daten.

Für die Visualisierung benötigen wir natürlich auch ein Beispiel-Dataset (Tabelle). Eine solche kann sich jeder selber erstellen, wer die nachfolgenden Code-Beispiele aber nachstellen möchte, kann diese Daten verwenden:

Diese 20 Zeilen können einfach via Copy + Paste in eine Datei kopiert werden, die dann als data-science-blog-python-beispiel.txt abgespeichert werden kann.

Der Zugriff von Python aus erfolgt dann mit pandas wie folgt:

dataset = pandas.read_csv("data-science-blog-python-beispiel.txt", sep="|", header=0, encoding="utf8")

Kreisdiagramm

Ein Kreisdiagramm (Pie Chart) lässt sich basierend auf diesen Daten beispielsweise wie folgt erstellen:

kreisdiagramm

Balkendiagramm

Balkendiagramme können einfachste Größenverhältnisse aufzeigen.

balkendiagram

Gestapeltes Balkendiagramm

Mit nur wenig Erweiterung wird aus dem einfachen Balkendiagramm ein gestapeltes.

balkendiagram-gestapelt

Histogramm (Histogram)

Histogramme sind ein wichtiges Diagramm der Statistik, mit dem sich Verteilungen aufzuzeigen lassen.

histogramm

Lininediagramm

Der Beispieldatensatz gibt kein gutes Szenario her, um ein korrektes Liniendiagramm darstellen zu können; aber dennoch hier ein How-To für ein Liniendiagramm:

line-diagam

Kastengrafik (Box Plot)

Ein Box Plot zeigt sehr gut Schwerpunkte in einer Verteilung.

box-plot-diagam

Punktverteilungsdiagramm (Scatter Plot)

punktdiagramm

Blasendiagramm (Bubble Chart)

Das Punktdiagramm kann leicht durch hinzufügen einer dritten Dimension zu einem Bubble-Chart erweitert werden. In dieser Darstellung mit logarithmischen x-/y-Achsen (log).

bubblechart