Was macht einen guten Data Scientist aus? Kurzinterviews mit 6 führenden Experten!

Was macht eigentlichen einen guten Data Scientist aus?

Diese Frage wurde mir von Studenten und Absolventen, aber auch von alteingesessenen CIOs bereits häufiger gestellt. Gerade Deutsche Unternehmen sind hinsichtlich der Möglichkeiten mit Data Science noch nicht so recht aufgeklärt und auch erst seit wenigen Jahren bieten Hochschulen entsprechende Schwerpunkte oder sogar ganze Studiengänge an. Zumindest für Wirtschaftsunternehmen ist Data Science eine neue Disziplin und somit ist es auch nicht verwunderlich, dass für das Berufsbild des Data Scientists noch ganz unterschiedliche Auffassungen vorherrschen – Und ganz ehrlich: Die Recruiter mit ihren wirren Anforderungsprofilen machen es nicht besser!

Dieses Mal möchte ich selbst jedoch einen Schritt zurücktreten und keine konkrete Antwort auf die Frage geben, was denn einen guten Data Scientist ausmacht. Ich habe diese Frage einfach mal an Experten weitergeleitet, die ich zu den führenden Data Science Experten in Deutschland zähle. Und hier sind ihre Antworten: Read more

Einstieg in das Maschinelle Lernen mit Python(x,y)

Python(x,y) ist eine Python-Distribution, die speziell für wissenschaftliche Arbeiten entwickelt wurde. Es umfasst neben der Programmiersprache auch die Entwicklungsumgebung Spyder und eine Reihe integrierter Python-Bibliotheken. Mithilfe von Python(x,y) kann eine Vielzahl von Interessensbereichen bearbeitet werden. Dazu zählen unter anderem Bildverarbeitung oder auch das maschinelle Lernen. Das All-in-One-Setup für Python(x,y) ist für alle gängigen Betriebssysteme online erhältlich. Read more

Datenschutz, Sicherheit und Ethik beim Process Mining – Regel 3 von 4:

Dieser Artikel ist Teil 3 von 4 aus der Reihe Datenschutz, Sicherheit und Ethik beim Process Mining.

english-flagRead this article in English:
Consider Anonymization – Process Mining Rule 3 of 4

 

Anonymisierung in Betracht ziehen

Falls Ihr Datensatz vertrauliche Informationen enthält, können Sie auch Anonymisierungsmethoden anwenden. Wenn Sie einen Wertesatz anonymisieren, werden die tatsächlichen Werte (z.B. die Mitarbeiternamen “Mary Jones”, “Fred Smith” usw.) durch einen anderen Wert ersetzt (z.B. ”Ressource 1”, ”Ressource 2″, etc.).

Falls der gleiche Originalwert mehrfach im Datensatz auftaucht, wird er stets durch den gleichen Wert ersetzt (”Mary Jones” wird immer durch “Ressource 1” ersetzt). Auf diese Weise ermöglicht Ihnen die Anonymisierung, die ursprünglichen Daten zu verschleiern und gleichzeitig wesentliche Muster des Datensatzes für Ihre Analyse zu bewahren. Sie können z.B. die Arbeitsauslastung alle Mitarbeiter analysieren, ohne die tatsächlichen Namen zu sehen.

Einige Process Mining-Tools (wie Disco oder ProM) haben Anonymisierungsfunktionalität bereits eingebaut. Dies bedeutet, dass Sie Ihre Daten in das Process-Mining-Tool importieren und dort auswählen können, welche Datenfelder anonymisiert werden sollen. Sie können beispielsweise die Case-IDs, den Ressourcennamen, die Attributwerte oder die Zeitstempel anonymisieren. Anschließend können Sie den anonymisierten Datensatz exportieren und an Ihr Team für die Analyse weitergeben.

Was man tun sollte:

  • Denken Sie daran, dass trotz einer Anonymisierung bestimmte Informationen immer noch identifizierbar sein können. Vielleicht gibt es beispielsweise nur einen Patienten mit einer sehr seltenen Krankheit oder das Geburtsdatum Ihres Kunden in Kombination mit dem Geburtsort kann die Anzahl der möglichen Personen, auf die dies zutrifft, so stark einschränken, dass die Daten nicht mehr anonym sind.

Was man nicht tun sollte:

  • Anonymisieren der Daten, bevor Sie Ihre Daten bereinigt haben, da nach der Anonymisierung eine Datenreinigung oft nicht mehr möglich ist. Stellen Sie sich beispielsweise vor, dass in verschiedenen Regionen Kundenkategorien unterschiedliche benannt werden, obwohl sie dasselbe bedeuten. Sie möchten diese unterschiedlichen Namen in einem Datenreinigungsschritt zusammenführen. Nachdem Sie jedoch die Namen als “Kategorie 1”, “Kategorie 2” usw. anonymisiert haben, kann die Datenreinigung nicht mehr durchgeführt werden.
  • Anonymisierung von Feldern, die nicht anonymisiert werden müssen. Während eine Anonymisierung dabei helfen kann, die Muster Ihrer Daten zu bewahren, können Sie leicht relevante Informationen verlieren. Wenn Sie beispielsweise die Case-ID in Ihrem Incident-Management-Prozess anonymisieren, können Sie die Ticketnummer des Vorgangs im Service Desk-System nicht mehr ausfindig machen. Durch die Schaffung einer Kooperationskultur rund um Ihre Process Mining-Initiative (siehe Leitfaden Nr. 4) und durch eine verantwortungsvolle, zielorientierte Arbeitsweise, können Sie oft offen mit den ursprünglichen Daten arbeiten.

R Data Frames meistern mit dplyr – Teil 2

Dieser Artikel ist Teil 2 von 2 aus der Artikelserie R Data Frames meistern mit dplyr.

Noch mehr Datenbank-Features

Im ersten Teil dieser Artikel-Serie habe ich die Parallelen zwischen Data Frames in R und Relationen in SQL herausgearbeitet und gezeigt, wie das Paket dplyr eine Reihe von SQL-analogen Operationen auf Data Frames standardisiert und optimiert. In diesem Teil möchte ich nun drei weitere Analogien aufzeigen. Es handelt sich um die

  • Window Functions in dplyr als Entsprechung zu analytischen Funktionen in SQL,
  • Joins zwischen Data Frames als Pendant zu Tabellen-Joins
  • Delegation von Data Frame-Operationen zu einer bestehenden SQL-Datenbank

Window Functions

Im letzten Teil habe ich gezeigt, wie durch die Kombination von group_by() und summarise() im Handumdrehen Aggregate entstehen. Das Verb group_by() schafft dabei, wie der Name schon sagt, eine Gruppierung der Zeilen des Data Frame anhand benannter Schlüssel, die oft ordinaler oder kategorialer Natur sind (z.B. Datum, Produkt oder Mitarbeiter).

Ersetzt man die Aggregation mit summarise() durch die Funktion mutate(), um neue Spalten zu bilden, so ist der Effekt des group_by() weiterhin nutzbar, erzeugt aber „Windows“, also Gruppen von Datensätzen des Data Frames mit gleichen Werten der Gruppierungskriterien. Auf diesen Gruppen können nun mittels mutate() beliebige R-Funktionen angewendet werden. Das Ergebnis ist im Gegensatz zu summarise() keine Verdichtung auf einen Datensatz pro Gruppe, sondern eine Erweiterung jeder einzelnen Zeile um neue Werte. Das soll folgendes Beispiel verdeutlichen:

Das group_by() unterteilt den Data Frame nach den 4 gleichen Werten von a. Innerhalb dieser Gruppen berechnen die beispielsweise eingesetzten Funktionen

  • row_number(): Die laufende Nummer in dieser Gruppe
  • n(): Die Gesamtgröße dieser Gruppe
  • n_distinct(b): Die Anzahl verschiedener Werte von b innerhalb der Gruppe
  • rank(desc(b)): Den Rang innerhalb der selben Gruppe, absteigend nach b geordnet
  • lag(b): Den Wert von b der vorherigen Zeile innerhalb derselben Gruppe
  • lead(b): Analog den Wert von b der folgenden Zeile innerhalb derselben Gruppe
  • mean(b): Den Mittelwert von b innerhalb der Gruppe
  • cumsum(b): Die kumulierte Summe der b-Werte innerhalb der Gruppe.

Wichtig ist hierbei, dass die Anwendung dieser Funktionen nicht dazu führt, dass die ursprüngliche Reihenfolge der Datensätze im Data Frame geändert wird. Hier erweist sich ein wesentlicher Unterschied zwischen Data Frames und Datenbank-Relationen von Vorteil: Die Reihenfolge von Datensätzen in Data Frames ist stabil und definiert. Sie resultiert aus der Abfolge der Elemente auf den Vektoren, die die Data Frames bilden. Im Gegensatz dazu haben Tabellen und Views keine Reihenfolge, auf die man sich beim SELECT verlassen kann. Nur mit der ORDER BY-Klausel über eindeutige Schlüsselwerte erreicht man eine definierte, stabile Reihenfolge der resultierenden Datensätze.

Die Wirkungsweise von Window Functions wird noch besser verständlich, wenn in obiger Abfrage das group_by(a) entfernt wird. Dann wirken alle genannten Funktionen auf der einzigen Gruppe, die existiert, nämlich dem gesamten Data Frame:

Anwendbar sind hierbei sämtliche Funktionen, die auf Vektoren wirken. Diese müssen also wie in unserem Beispiel nicht unbedingt aus dplyr stammen. Allerdings komplettiert das Package die Menge der sinnvoll anwendbaren Funktionen um einige wichtige Elemente wie cumany() oder n_distinct().

Data Frames Hand in Hand…

In relationalen Datenbanken wird häufig angestrebt, das Datenmodell zu normalisieren. Dadurch bekommt man die negativen Folgen von Datenredundanz, wie Inkonsistenzen bei Datenmanipulationen und unnötig große Datenvolumina, in den Griff. Dies geschieht unter anderem dadurch, dass tabellarische Datenbestände aufgetrennt werden Stammdaten- und Faktentabellen. Letztere beziehen sich über Fremdschlüsselspalten auf die Primärschlüssel der Stammdatentabellen. Durch Joins, also Abfragen über mehrere Tabellen und Ausnutzen der Fremdschlüsselbeziehungen, werden die normalisierten Tabellen wieder zu einem fachlich kompletten Resultat denormalisiert.

In den Data Frames von R trifft man dieses Modellierungsmuster aus verschiedenen Gründen weit seltener an als in RDBMS. Dennoch gibt es neben der Normalisierung/Denormalisierung andere Fragestellungen, die sich gut durch Joins beantworten lassen. Neben der Zusammenführung von Beobachtungen unterschiedlicher Quellen anhand charakteristischer Schlüssel sind dies bestimmte Mengenoperationen wie Schnitt- und Differenzmengenbildung.

Die traditionelle R-Funktion für den Join zweier Data Frames lautet merge(). dplyr erweitert den Funktionsumfang dieser Funktion und sorgt für sprechendere Funktionsnamen und Konsistenz mit den anderen Operationen.

Hier ein synthetisches Beispiel:

Nun gilt es, die Verkäufe aus dem Data Frame sales mit den Produkten in products zusammenzuführen und auf Basis von Produkten Bilanzen zu erstellen. Diese Denormalisierung geschieht durch das Verb inner_join() auf zweierlei Art und Weise:

Die Ergebnisse sind bis auf die Reihenfolge der Spalten und der Zeilen identisch. Außerdem ist im einen Fall der gemeinsame Schlüssel der Produkt-Id als prod_id, im anderen Fall als id enthalten. dplyr entfernt also die Spalten-Duplikate der Join-Bedingungen. Letzere wird bei Bedarf im by-Argument der Join-Funktion angegeben. R-Experten erkennen hier einen „Named Vector“, also einen Vektor, bei dem jedes Element einen Namen hat. Diese Syntax verwendet dplyr, um elegant die äquivalenten Spalten zu kennzeichnen. Wird das Argument by weggelassen, so verwendet dplyr im Sinne eines „Natural Join“ automatisch alle Spalten, deren Namen in beiden Data Frames vorkommen.

Natürlich können wir dieses Beispiel mit den anderen Verben erweitern, um z.B. eine Umsatzbilanz pro Produkt zu erreichen:

dplyr bringt insgesamt 6 verschiedene Join-Funktionen mit: Neben dem bereits verwendeten Inner Join gibt es die linksseitigen und rechtsseitigen Outer Joins und den Full Join. Diese entsprechen genau der Funktionalität von SQL-Datenbanken. Daneben gibt es die Funktion semi_join(), die in SQL etwa folgendermaßen ausgedrückt würde:

Das Gegenteil, also ein NOT EXISTS, realisiert die sechste Join-Funktion: anti_join(). Im folgenden Beispiel sollen alle Produkte ausgegeben werden, die noch nie verkauft wurden:

… und in der Datenbank

Wir schon mehrfach betont, hat dplyr eine Reihe von Analogien zu SQL-Operationen auf relationalen Datenbanken. R Data Frames entsprechen Tabellen und Views und die dplyr-Operationen den Bausteinen von SELECT-Statements. Daraus ergibt sich die Möglichkeit, dplyr-Funktionen ohne viel Zutun auf eine bestehende Datenbank und deren Relationen zu deligieren.

Mir fallen folgende Szenarien ein, wo dies sinnvoll erscheint:

  • Die zu verarbeitende Datenmenge ist zu groß für das Memory des Rechners, auf dem R läuft.
  • Die interessierenden Daten liegen bereits als Tabellen und Views auf einer Datenbank vor.
  • Die Datenbank hat Features, wie z.B. Parallelverarbeitung oder Bitmap Indexe, die R nicht hat.

In der aktuellen Version 0.5.0 kann dplyr nativ vier Datenbank-Backends ansprechen: SQLite, MySQL, PostgreSQL und Google BigQuery. Ich vermute, unter der Leserschaft des Data Science Blogs dürfte MySQL (oder der Fork MariaDB) die weiteste Verbreitung haben, weshalb ich die folgenden Beispiele darauf zeige. Allerdings muss man beachten, dass MySQL keine Window Funktionen kennt, was sich 1:1 auf die Funktionalität von dplyr auswirkt.

Im folgenden möchte ich zeigen, wie dplyr sich gegen eine bestehende MySQL-Datenbank verbindet und danach einen bestehenden R Data Frame in eine neue Datenbanktabelle wegspeichert:

Die erste Anweisung verbindet R mit einer bestehenden MySQL-Datenbank. Danach lade ich den Data Frame diamonds aus dem Paket ggplot2. Mit str() wird deutlich, dass drei darin enthaltene Variablen vom Typ Factor sind. Damit dplyr damit arbeiten kann, werden sie mit mutate() in Character-Vektoren gewandelt. Dann erzeugt die Funktion copy_to() auf der MySQL-Datenbank eine leere Tabelle namens diamonds, in die die Datensätze kopiert werden. Danach erhält die Tabelle noch drei Indexe (von dem der erste aus drei Segmenten besteht), und zum Schluß führt dplyr noch ein ANALYSE der Tabelle durch, um die Werteverteilungen auf den Spalten für kostenbasierte Optimierung zu bestimmen.

Meistens aber wird bereits eine bestehende Datenbanktabelle die interessierenden Daten enthalten. In diesem Fall lautet die Funktion zum Erstellen des Delegats tbl():

Die Rückgabewerte von copy_to() und von tbl() sind natürlich keine reinrassigen Data Frames, sondern Objekte, auf die die Operationen von dplyr wirken können, indem sie auf die Datenbank deligiert werden. Im folgenden Beispiel sollen alle Diamanten, die ein Gewicht von mindestens 1 Karat haben, pro Cut, Color und Clarity nach Anzahl und mittlerem Preis bilanziert werden:

Die Definition der Variablen bilanz geschieht dabei komplett ohne Interaktion mit der Datenbank. Erst beim Anzeigen von Daten wird das notwendige SQL ermittelt und auf der DB ausgeführt. Die ersten 10 resultierenden Datensätze werden angezeigt. Mittels der mächtigen Funktion explain() erhalten wir das erzeugte SQL-Kommando und sogar den Ausführungsplan auf der Datenbank. SQL-Kundige werden erkennen, dass die verketteten dplyr-Operationen in verschachtelte SELECT-Statements umgesetzt werden.

Zu guter Letzt sollen aber meistens die Ergebnisse der dplyr-Operationen irgendwie gesichert werden. Hier hat der Benutzer die Wahl, ob die Daten auf der Datenbank in einer neuen Tabelle gespeichert werden sollen oder ob sie komplett nach R transferiert werden sollen. Dies erfolgt mit den Funktionen compute() bzw. collect():

Durch diese beiden Operationen wurde eine neue Datenbanktabelle „t_bilanz“ erzeugt und danach der Inhalt der Bilanz als Data Frame zurück in den R-Interpreter geholt. Damit schließt sich der Kreis.

Fazit

Mit dem Paket dplyr von Hadley Wickham wird die Arbeit mit R Data Frames auf eine neue Ebene gehoben. Die Operationen sind konsistent, vollständig und performant. Durch den Verkettungs-Operator %>% erhalten sie auch bei hoher Komplexität eine intuitive Syntax. Viele Aspekte der Funktionalität lehnen sich an Relationale Datenbanken an, sodass Analysten mit SQL-Kenntnissen rasch viele Operationen auf R Data Frames übertragen können.

Zurück zu R Data Frames meistern mit dplyr – Teil 1.

 

Numerical Python – Einführung in wissenschaftliches Rechnen mit NumPy

NumPy steht für Numerical Python und ist eines der bekanntesten Pakete für alle Python-Programmierer mit wissenschaftlichen Hintergrund. Von persönlichen Kontakten erfuhr ich, dass NumPy heute in der Astrophysik fast genauso verwendet wird wie auch von sogenannten Quants im Investment-Banking. Das NumPy-Paket ist sicherlich ein Grundstein des Erfolges für Python in der Wissenschaft und für den häufigen Einsatz für die Implementierung von Algorihtmen des maschinellen Lernens in Python.

Die zentrale Datenstruktur in NumPy ist das mehrdimensionale Array. Dieses n-dimensionale Array (ndarray) ist eine sehr mächtige Datenstruktur und verwende ich beispielsweise in meinem Artikel über den k-Nächste-Nachbarn-Algorithmus. Die Besonderheit des NumPy-Arrays ist, dass es ein mehrdimensionaler Container für homogene Daten ist. Ein Datentyp gilt also für das gesamte Array, nicht nur für bestimmte Zeilen oder Spalten!

Read more

Statistical Relational Learning – Part 2

In the first part of this series onAn Introduction to Statistical Relational Learning”, I touched upon the basic Machine Learning paradigms, some background and intuition of the concepts and concluded with how the MLN template looks like. In this blog, we will dive in to get an in depth knowledge on the MLN template; again with the help of sample examples. I would then conclude by highlighting the various toolkit available and some of its differentiating features.

MLN Template – explained

A Markov logic network can be thought of as a group of formulas incorporating first-order logic and also tied with a weight. But what exactly does this weight signify?

Weight Learning

According to the definition, it is the log odds between a world where F is true and a world where F is false,

and captures the marginal distribution of the corresponding predicate.

Each formula can be associated with some weight value, that is a positive or negative real number. The higher the value of weight, the stronger the constraint represented by the formula. In contrast to classical logic, all worlds (i.e., Herbrand Interpretations) are possible with a certain probability [1]. The main idea behind this is that the probability of a world increases as the number of formulas it violates decreases.

Markov logic networks with its probabilistic approach combined to logic posit that a world is less likely if it violates formulas unlike in pure logic where a world is false if it violates even a single formula. Consider the case when a formula with high weight i.e. more significance is violated implying that it is less likely in occurrence.

Another important concept during the first phase of Weight Learning while applying an MLN template is “Grounding”. Grounding means to replace each variable/function in predicate with constants from the domain.

Weight Learning – An Example

Note: All examples are highlighted in the Alchemy MLN format

Let us consider an example where we want to identify the relationship between 2 different types of verb-noun pairs i.e noun subject and direct object.

The input predicateFormula.mln file contains

  1. The predicates nsubj(verb, subject) and dobj(verb, object) and
  2. Formula of nsubj(+ver, +s) and dobj(+ver, +o)

These predicates or rules are to learn all possible SVO combinations i.e. what is the probability of a Subject-Verb-Object combination. The + sign ensures a cross product between the domains and learns all combinations. The training database consists of the nsubj and dobj tuples i.e. relations is the evidence used to learn the weights.

When we run the above command for this set of rules against the training evidence, we learn the weights as here:

Note that the formula is now grounded by all occurrences of nsubj and dobj tuples from the training database or evidence and the weights are attached to it at the start of each such combination.

But it should be noted that there is no network yet and this is just a set of weighted first-order logic formulas. The MLN template we created so far will generate Markov networks from all of our ground formulas. Internally, it is represented as a factor graph.where each ground formula is a factor and all the ground predicates found in the ground formula are linked to the factor.

Inference

The definition goes as follows:

Estimate probability distribution encoded by a graphical model, for a given data (or observation).

Out of the many Inference algorithms, the two major ones are MAP & Marginal Inference. For example, in a MAP Inference we find the most likely state of world given evidence, where y is the query and x is the evidence.

which is in turn equivalent to this formula.

Another is the Marginal Inference which computes the conditional probability of query predicates, given some evidence. Some advanced inference algorithms are Loopy Belief Propagation, Walk-SAT, MC-SAT, etc.

The probability of a world is given by the weighted sum of all true groundings of a formula i under an exponential function, divided by the partition function Z i.e. equivalent to the sum of the values of all possible assignments. The partition function acts a normalization constant to get the probability values between 0 and 1.

Inference – An Example

Let us draw inference on the the same example as earlier.

After learning the weights we run inference (with or without partial evidence) and query the relations of interest (nsubj here), to get inferred values.

Tool-kits

Let’s look at some of the MLN tool-kits at disposal to do learning and large scale inference. I have tried to make an assorted list of all tools here and tried to highlight some of its main features & problems.

For example, BUGS i.e. Bayesian Logic uses a Swift Compiler but is Not relational! ProbLog has a Python wrapper and is based on Horn clauses but has No Learning feature. These tools were invented in the initial days, much before the present day MLN looks like.

ProbCog developed at Technical University of Munich (TUM) & the AI Lab at Bremen covers not just MLN but also Bayesian Logic Networks (BLNs), Bayesian Networks & ProLog. In fact, it is now GUI based. Thebeast gives a shell to analyze & inspect model feature weights & missing features.

Alchemy from University of Washington (UoW) was the 1st First Order (FO) probabilistic logic toolkit. RockIt from University of Mannheim has an online & rest based interface and uses only Conjunctive Normal Forms (CNF) i.e. And-Or format in its formulas.

Tuffy scales this up by using a Relational Database Management System (RDBMS) whereas Felix allows Large Scale inference! Elementary makes use of secondary storage and Deep Dive is the current state of the art. All of these tools are part of the HAZY project group at Stanford University.

Lastly, LoMRF i.e. Logical Markov Random Field (MRF) is Scala based and has a feature to analyse different hypothesis by comparing the difference in .mln files!

 

Hope you enjoyed the read. The content starts from basic concepts and ends up highlighting key tools. In the final part of this 3 part blog series I would explain an application scenario and highlight the active research and industry players. Any feedback as a comment below or through a message is more than welcome!

Back to Part I – Statistical Relational Learning

Additional Links:

[1] Knowledge base files in Logical Markov Random Fields (LoMRF)

[2] (still) nothing clever Posts categorized “Machine Learning” – Markov Logic Networks

[3] A gentle introduction to statistical relational learning: maths, code, and examples

Datenschutz, Sicherheit und Ethik beim Process Mining – Artikelserie

Als ich vor zwölf Jahren in die Niederlande zog und anfing, bei lokalen Supermarktketten wie Albert Heijn einzukaufen, habe ich mich zunächst gegen die Bonuskarte (Treuekarte für Rabatte) gewehrt, da ich nicht wollte, dass das Unternehmen meine Einkäufe nachverfolgen konnte. Ich verstand, dass die Verwendung dieser Informationen ihnen helfen könnte, mich zu manipulieren, indem sie Produkte anwerben oder so arrangieren würden, dass ich mehr kaufen würde, als mir lieb war. Es fühlte sich einfach falsch an.

english-flagRead this article in English:
Privacy, Security and Ethics in Process Mining – Article Series

Fakt ist aber, dass keine Datenanalyse-Technik intrinsisch gut oder schlecht ist. Es liegt allein in den Händen der Menschen, ob sie die Technologie so einsetzen, dass dabei etwas Produktives und Konstruktives entsteht. Während Supermärkte die Informationen ihrer Kunden aufgrund der Treue-Karten benutzen könnten, um sicherzustellen, dass sie den längsten Weg im Geschäft haben, wenn sie ihre gewöhnlichen Produkte einkaufen (und dadurch an soviel anderen Produkten wie möglich vorbeikommen), können sie auf der anderen Seite die Informationen verwenden, um den Einkauf angenehmer zu gestalten und mehr Produkte anzubieten, die wir mögen.

Die meisten Unternehmen haben mit der Anwendung von Datenanalysetechniken begonnen, mit welchen sie ihre Daten auf die eine oder andere Weise analysieren. Diese Datenanalysen können Unternehmen und ihren Kunden gewaltige Chancen einräumen, doch mit der zunehmenden Nutzung der Data-Science-Techniken drängt sich auch die Frage der Ethik und die einer verantwortungsvollen Anwendung in den Vordergrund. Initiativen, wie die Seminarreihe ‘Responsible Data Science [1]’, beschäftigen sich mit dem Thema insofern, als ein Bewusstsein geschaffen wird und die Forscher ermutigt werden, Algorithmen zu entwickeln, die sich auf Konzepte wie Fairness, Genauigkeit, Vertraulichkeit und Transparenz stützen [2].

Process Mining kann Ihnen erstaunlichen Einblicke in Ihre Prozesse verschaffen und Ihre Verbesserungsinitiativen mit Inspiration und Enthusiasmus bereichern, wenn Sie es richtig anwenden. Aber wie können Sie sicherstellen, dass Sie Process Mining verantwortungsvoll anwenden? Was sollten Sie beachten, wenn Sie Process Mining in Ihre eigene Organisation integrieren?

In dieser Artikelserie stellen wir Ihnen vier Richtlinien vor, die Sie befolgen können, um Ihre Process Minining-Analyse verantwortungsvoll vorzubereiten:

Teil 1 von 4: Klarstellung des Analyseziels

Teil 2 von 4: Verantwortungsvoller Umgang mit Daten

Teil 3 von 4: Anonymisierung in Betracht ziehen

Teil 4 von 4: Schaffung einer Kooperationskultur

Danksagung

Wir danken Frank van Geffen und Léonard Studer, der die ersten Diskussionen in der Arbeitsgruppe rund um das verantwortungsvolle Process Mining im Jahr 2015 initiiert haben. Wir danken ausserdem Moe Wynn, Felix Mannhardt und Wil van der Aalst für ihr Feedback zu früheren Versionen dieses Artikels.

 

Wahrscheinlichkeitsverteilungen – Zentralen Grenzwertsatz verstehen mit Pyhton

Wahrscheinlichkeitsverteilung sind im Data Science ein wichtiges Handwerkszeug. Während in der Mathevorlesung die Dynamik dieser Verteilungen nur durch wildes Tafelgekritzel schwierig erlebbar zu machen ist, können wir mit Programmierkenntnissen (in diesem Fall wieder mit Python) eine kleine Testumgebung für solche Verteilungen erstellen, um ein Gefühl dafür zu entwickeln, wie unterschiedlich diese auf verschiedene Wahrscheinlichkeitswerte, Varianz und Mengen an Datenpunkten reagieren und wann sie untereinander annäherungsweise ersetzbar sind – der zentrale Grenzwertsatz. Den Schwerpunkt lege ich in diesem Artikel auf die Binominal- und Normalverteilung.

Für die folgenden Beispiele werden folgende Python-Bibliotheken benötigt:

Read more

Interview – die Zukunft des Data Science

Interview mit Herrn Dr. Helmut Linde von SAP über Data Science heute und in Zukunft

dr-helmut-lindeHerr Dr. Helmut Linde ist Head of Data Science bei SAP Custom Development. Der studierte Physiker und Mathematiker promovierte im Jahre 2006 und war seitdem für den Softwarekonzern mit Hauptsitz in Walldorf tätig. Dort baute Linde das Geschäft mit Dienstleistungen und kundenspezifischer Entwicklung rund um die Themen Prognose- und Optimierungsalgorithmen mit auf und leitet heute eine globale Data Science Practice.

Data Science Blog: Herr Dr. Linde, welcher Weg hat Sie in den Analytics-Bereich der SAP geführt?

Als theoretischer Physiker habe ich mich natürlich immer schon für die mathematische Modellierung komplexer Sachverhalte interessiert. Gleichzeitig finde ich es extrem spannend, geschäftliche Fragestellungen zu lösen und dadurch in der realen Welt etwas zu bewegen. Die SAP mit ihrer weltweiten Präsenz in allen größeren Branchen und ihrer umfassenden Technologie-Plattform hat mir die ideale Möglichkeit geboten, diese Interessen zusammenzubringen.

Data Science Blog: Welche Analysen führen Sie für Ihre Kundenaufträge durch? Welche Vorteile generieren Sie für Ihre Kunden?

Mein Team arbeitet global und branchenübergreifend, d.h. wir befassen uns mit einer großen Bandbreite analytischer Fragestellungen. Oft geht es dabei darum, das Verhalten von Endkunden besser zu verstehen und vorherzusagen. Auch die Optimierung von Lieferketten und Lagerbeständen ist ein häufiger Anwendungsfall. In unseren Projekten geht es z.B. darum, den Absatz von Tageszeitungen zu prognostizieren, Schichten für Call-Center-Mitarbeiter optimal zu planen, Lastspitzen in Stromnetzen zu vermeiden und vieles andere mehr.

Das Hauptaugenmerk meines Teams liegt dabei auf der Entwicklung von analytischen Software-Lösungen. Für unsere Kunden heißt das, dass sie nicht nur einmalig Wettbewerbsvorteile aus ihren Daten ziehen, sondern Prognosen und Optimierung wiederholbar, nachhaltig und skalierbar in ihre Geschäftsprozesse integrieren können. Außerdem profitieren Kunden natürlich von der Größe der SAP und unserer langjährigen Erfahrung. Bei den allermeisten Anfragen können wir sagen: „Ja, etwas sehr ähnliches haben wir schon einmal gemacht.“

Data Science Blog: Viele Unternehmen haben den Einstieg ins Data Science noch nicht gefunden. Woran hängt es Ihrer Erfahrung nach?

Zunächst einmal sehe ich – basierend auf der Menge an Anfragen, die auf meinem Schreibtisch landen – einen äußerst positiven Trend, der zeigt, dass in vielen Unternehmen das Thema Data Science enorm an Bedeutung gewinnt.

Andererseits gibt es sicherlich Fachgebiete, die leichter zugänglich sind. Nicht in jedem Unternehmen gibt es die kritische Masse an Expertise und Unterstützung, die für konkrete Projekte nötig ist.

Data Science Blog: Welche Möglichkeiten bietet Data Science für die Industrie 4.0?

Unter Industrie 4.0 verstehe ich eine immer stärkere Vernetzung von Maschinen, Sensoren und Erzeugnissen. Schon für das Zusammenführen und Bereinigen der dabei anfallenden Daten wird man einen steigenden Grad an Automatisierung durch Algorithmen benötigen, da ansonsten die manuellen Aufwände viele Anwendungsfälle unwirtschaftlich machen. Darauf aufbauend werden Algorithmen den Kern vieler neuer Szenarien bilden. Mit einigen unserer Kunden arbeiten wir beispielsweise an Projekten, bei denen die Qualität von Endprodukten anhand von Maschineneinstellungen und Sensorwerten vorhergesagt wird. Dies erlaubt eine präzisere Steuerung der Produktion und führt zu reduziertem Ausschuss.  Ein anderes Beispiel ist ein Projekt mit einer Eisenbahngesellschaft, bei dem wir automatisch gewisse Stromverbraucher wie Heizungen oder Klimaanlagen für wenige Minuten abschalten, wenn im Stromnetz eine unerwünschte Lastspitze vorhergesagt wird.

Data Science Blog: Welche Tools verwenden Sie bei Ihrer Arbeit? Setzen Sie dabei auch auf Open Source?

In unseren Projekten orientieren wir uns immer an den Notwendigkeiten des konkreten Anwendungsfalles und an der bereits vorhandenen IT-Landschaft beim Kunden. Schließlich muss unsere Lösung dazu passen und sauber integriert und gewartet werden können. Natürlich kommen häufig hauseigene Werkzeuge wie SAP Predictive Analysis für die Modellbildung oder SAP Lumira für schnelle Visualisierung zum Einsatz. Als Plattform spielt SAP HANA eine große Rolle – nicht nur zur Datenhaltung, sondern auch zur Ausführung von Algorithmen und als Anwendungsserver. In SAP HANA gibt es auch eine Schnittstelle zu ‚R‘, so dass in manchen Projekten auch Open Source zum Einsatz kommt.

Data Science Blog: Was sind aktuelle Trends im Bereich Data Science? Um welche Methoden dreht es sich aktuell besonders stark bei SAP?

Einer der größten Trends der letzten Jahre ist sicherlich die zunehmend ganzheitliche Nutzung von Daten, insbesondere auch von rohen, unstrukturierten Daten gepaart mit einem höheren Grad an Automatisierung. Wo vor vielleicht fünf oder zehn Jahren noch großer Wert auf Datenvorverarbeitung und Feature Engineering gelegt wurde, werden diese Schritte heute zunehmend von den Tools selbständig durchgeführt.

Gleichzeitig wachsen klassisches Business Intelligence und Data Science immer mehr zusammen. Wir sehen eine steigende Zahl von Projekten, in denen Kunden analytische Lösungen implementieren, welche in Komplexität und Funktionsumfang deutlich über traditionelle Berichte und Dashboards hinausgehen, dabei aber durchaus ohne fortgeschrittene Mathematik auskommen.

Data Science Blog: Sofern Sie sich einen Ausblick zutrauen, welche Trends kommen 2017 und 2018 vermutlich auf uns zu?

Data-Science-Methoden und traditionelle Geschäftsprozesse werden immer enger verzahnt. In Zukunft übernehmen Algorithmen viel mehr jener Tätigkeiten, die auch nach umfassender Prozessautomatisierung heute immer noch von Sachbearbeitern zu erledigen sind – zum Beispiel eingehende Zahlungen einer Rechnung zuzuordnen, Lebensläufe von Bewerbern vor zu sortieren, die Plausibilität von Abrechnungen zu prüfen und Ähnliches.

Data Science Blog: Gehört die Zukunft weiterhin den Data Scientists oder eher den selbstlernenden Tools, die Analysen automatisiert für das Business entwickeln, durchführen und verbessern werden?

Es gibt definitiv einen Trend zu stärkerer Automatisierung bei den Tools und den starken Wunsch, Kompetenzen näher an die Endanwender zu bringen. Analysen werden zunehmend in den Geschäftsbereichen selbst durchgeführt.

Gleichzeitig sehe ich einen Wandel in der Rolle des Data Scientist. Es reicht nicht mehr, viele Algorithmen und ein paar Data Mining Tools im Detail zu kennen, um wirklich Mehrwert zu stiften. Der Data Scientist der Zukunft ist ein Vordenker, der ganzheitliche Visionen entwickelt, wie geschäftliche Fragestellungen mit Hilfe von Analytik gelöst werden können. Dabei müssen neue oder geänderte Geschäftsprozesse, ihre technische Umsetzung und algorithmische Lösungen gleichermaßen angegangen werden. Nehmen Sie als Beispiel das Thema Predictive Maintenance: Es gibt viele Data Scientists, die aus Sensordaten etwas über den Zustand einer Maschine ableiten können. Aber nur wenige Experten verstehen es, dies dann auch noch sinnvoll in reale Instandhaltungsprozesse einzubetten.

Die Nachfrage nach einem solchen Rollenprofil, für das es heute noch nicht einmal einen wirklich treffenden und allgemein gebräuchlichen Namen gibt, wird auch in Zukunft weit höher sein als die Verfügbarkeit von qualifizierten Kandidaten.

Data Science Blog: Wie sieht Ihrer Erfahrung nach der Arbeitsalltag als Data Scientist nach dem morgendlichen Café bis zum Feierabend aus?

Unsere Arbeitstage sind sehr abwechslungsreich. Jeder Data Scientist hat meistens ein größeres Kundenprojekt, das 60% bis 90% der Arbeitszeit benötigt. Dazu gehören normalerweise Workshops beim Kunden vor Ort – je nach Projekt und Standort können das zwei Tage in der Schweiz oder auch mal zwei Wochen in China sein. Außerdem fließt natürlich viel Zeit in die Analyse und Visualisierung von Daten, das Programmieren von Algorithmen und Anwendungen sowie die Erstellung von Unterlagen. Manchmal arbeiten wir nebenbei noch an einem anderen kleineren Projekt, zum Beispiel der Entwicklung eines Prototyps für eine Kundenpräsentation.

Einen Großteil unserer Projektarbeit liefern wir remote, das heißt, wir sind nur zu Workshops oder bei besonderem Bedarf beim Kunden vor Ort. Die Entwicklungs- und Analysearbeit erfolgt dann aus dem Büro oder, je nach Präferenz, auch aus dem Home Office. Insgesamt ermöglicht die Arbeitsweise eine gute Work-Life-Balance für alle Lebensmodelle.

Data Science Blog: Welches Wissen und welche Erfahrung setzen Sie für Ihre Data Scientists voraus? Und nach welchen Kriterien stellen Sie Data Science Teams für Ihre Projekte zusammen?

Der Großteil unserer Data Scientists hat einen akademischen Hintergrund mit Promotion und teilweise auch Post-Doc-Erfahrung in einem quantitativen Feld. Man sollte neben oder nach dem Studium schon einige Jahre praktische Erfahrung in quantitativen Analysen und idealerweise auch in Software-Entwicklung gesammelt haben, um als Data Scientist in Projekten erfolgreich zu sein. Daneben ist uns eine hohe Selbständigkeit und Eigenmotivation sehr wichtig, da wir in Projekten mit sehr unterschiedlichen Herausforderungen und vielen neuen und wechselnden Technologien konfrontiert sind, die hohe Umsicht und Flexibilität erfordern.

Unsere Projektteams stellen wir je nach Anforderungen zusammen. Bei Projekten, die stärker auf das Ergebnis einer Analyse abzielen, stellen wir oft ein kleines Projektteam komplett aus geeigneten Data Scientists zusammen. Wenn der Fokus stärker in Richtung eines Software-Produkts geht, wird häufig nur der analytische Kern und ggf. Anforderungs- und Projektmanagement von Data Scientists aus meinem Team übernommen. Dazu stoßen dann noch Kollegen aus anderen Bereichen, die beispielsweise Erfahrung mit bestimmten Backend-Technologien, als Software-Architekt, oder als UX-Designer mitbringen.

Data Science Blog: Grenzen Sie auch andere Rollen ab, wie beispielsweise den Data Engineer? Oder sind beide Tätigkeitsfelder untrennbar miteinander verbunden?

Aus meiner Sicht ist es wichtig, dass der Data Scientist, der für die Analyse der Daten verantwortlich ist, so weit wie möglich auch in die Vorverarbeitung und Vorbereitung der Daten mit einbezogen wird. Je nach Projekt können gewisse Tätigkeiten auch von Kollegen mit anderem Profil übernommen werden, aber die dedizierte Rolle eines Data Engineers gibt es bei uns nicht.

Data Science Blog: Sind gute Data Scientists Ihrer Erfahrung nach tendenziell eher Beratertypen oder introvertierte Nerds?

Ein wirklich guter Data Scientist passt weder in die eine noch in die andere Schublade. Sie oder er überzeugt in erster Linie durch Kompetenz – und zwar sowohl in geschäftlichen Fragestellungen als auch in technischen und mathematischen. Gleichzeitig ist die Fähigkeit notwendig, gegenüber Projektpartnern und Kunden überzeugend aufzutreten und komplexe Sachverhalte klar und anschaulich zu strukturieren.

Data Science Blog: Für alle Studenten, die demnächst ihren Bachelor, beispielsweise in Informatik, Mathematik oder Wirtschaftslehre, abgeschlossen haben, was würden sie diesen jungen Damen und Herren raten, wie sie einen guten Einstieg ins Data Science bewältigen können?

Seien Sie neugierig und erweitern Sie Ihren Horizont! Die führenden Data Scientists sind Unternehmensberater, Software-Architekt und Mathematiker in einer Person. Versuchen Sie, systematisch Erfahrung in allen drei Bereichen aufzubauen.

Data Leader Mindset

Wie werden Führungskräfte zum Data Leader?

Als eine Keynote am Data Leader Day 2016 (www.dataleaderday.com) erläuterte ich den Weg einer gewöhnlichen Führungskräft hin zum Data Leader, gemäß meiner Erfahrung. Ein Data Leader ist eine Führungskraft mit datengetriebener, problemlösungsorientierter Denkweise.

Die Präsentation findet sich nachfolgend eingebettet und zeigt die Route von der konventionellen Führungskraft zum innovativen Data Leader:

Read more