Tag Archive for: SAP

How to reduce costs for Process Mining

Process mining has emerged as a powerful Business Process Intelligence discipline (BPI) for analyzing and improving business processes. It involves extracting data from source systems to gain insights into process behavior and uncover opportunities for optimization. While there are many approaches to create value with process mining, organizations often face challenges when it comes to the cost of implementing the necessary solution. In this article, we will highlight the key elements when it comes to process mining architectures as well as the most common mistakes, to help organizations leverage the power of process mining while maintain cost control.

Process Mining - Elements of Process Mining and their cost aspects

Process Mining – Elements of Process Mining and their cost aspects

Data Extraction for process mining

Most process mining projects underestimate the complexity of data extraction. Even for well-known sources like SAP-ERP’s, the extraction often consumes 50% of the first pilot’s resources. As a result, the extraction pipelines are often built with the credo of “asap” and this is where the cost-drama begins. Process Mining demands Big Data in 99% of the cases, releasing bad developed extraction jobs will end in big cost chunks down the value stream. Frequently organizations perform full loads of big SAP tables, causing source system performance impact, increasing maintenance, and moving hundred GB’s of data on daily basis without any new value. Other organizations fall for the connectors, provided by some process mining platform tools, promising time-to-value being the best. Against all odds the data is getting extracted then into costly third-party platforms where they can be only consumed by the platforms process mining tool itself. On top of that, these organizations often perform more than one Business Process Intelligence discipline, resulting in extracting the exact same data multiple times.

Process Mining - Data Extraction

Process Mining – Data Extraction

The data extraction for process mining should be well planed and match the data strategy of the organization. By considering lightweighted data preprocessing techniques organizations can save both time and money. When accepting the investment character of big data extractions, the investment should be done properly in the beginning and therefore cost beneficial in the long term.

Cloud-Based infrastructure with process mining?

Depending on the data strategy of one organization, one cost-effective approach to process mining could be to leverage cloud computing resources. Cloud platforms, such as Amazon Web Services (AWS), Microsoft Azure, or Google Cloud Platform (GCP), provide scalable and flexible infrastructure options. By using cloud services, organizations can avoid the upfront investment in hardware and maintenance costs associated with on-premises infrastructure. They can pay for resources on a pay-as-you-go basis, scaling up or down as needed, which can significantly reduce costs. When dealing with big data in the cloud, meeting the performance requirements while keeping cost control can be a balancing act, that requires a high skillset in cloud technologies. Depending the organization situation and data strategy, on premises or hybrid approaches should be also considered. But costs won’t decrease only migrating from on-premises to cloud and vice versa. What makes the difference is a smart ETL design capturing the nature of process mining data.

Process Mining Cloud Architecture on "pay as you go" base.

Process Mining Cloud Architecture on “pay as you go” base.

Storage for process mining data

Storing data is a crucial aspect of process mining, as in most cases big data is involved. Instead of investing in expensive data storage solutions, which some process mining solutions offer, organizations can opt for cost-effective alternatives. Cloud storage services like Amazon S3, Azure Blob Storage, or Google Cloud Storage provide highly scalable and durable storage options at a fraction of the cost of process mining storage systems. By utilizing these services, organizations can store large volumes of event data without incurring substantial expenses. Moreover, when big data engineering technics, consider profound process mining logics the storage cost cut down can be tremendous.

Process Mining - Infrastructure Cost Curve - On-Premise vs Cloud

Process Mining – Infrastructure Cost Curve: On-Premise vs Cloud

Process Mining Tools

While some commercial process mining tools can be expensive, there are several powerful more economical alternatives available. Tools like Process Science, ProM, and Disco provide comprehensive process mining capabilities without the hefty price tag. These tools offer functionalities such as event log import, process discovery, conformance checking, and performance analysis. Organizations often mismanage the fact, that there can and should be more then one process mining tool available. As expensive solutions like Celonis have their benefits, not all use cases make up for the price of these tools. As a result, these low ROI-use cases will eat up the margin, or (and that’s even more critical) little promising use cases won’t be investigated on and therefore high hanging fruits never discovered. Leveraging process mining tools can significantly reduce costs while still enabling organizations to achieve valuable process insights.

Process Mining Tool Landscape

Process Mining Tool Landscape (examples shown)

Collaboration

Another cost-saving aspect is to encourage collaboration within the organization itself. Most process mining initiatives require the input from process experts and often involve multiple stakeholders across different departments. By establishing cross-functional teams and supporting collaboration, organizations can share resources and distribute the cost burden. This approach allows for the pooling of expertise, reduces duplication of efforts, and facilitates knowledge exchange, all while keeping costs low.

Process Mining Team Structure

Process Mining Team Structure

Conclusion

Process mining offers tremendous potential for organizations seeking to optimize their business processes. While many organizations start process mining projects euphorically, the costs set an abrupt end to the party. Implementing a low-cost and collaborative architecture can help to create a sustainable value for the organization. By leveraging cloud-based infrastructure, cost-effective storage solutions, big data engineering techniques, process mining tools, well developed data extractions, lightweight data preprocessing techniques, and fostering collaboration, organizations can embark on process mining initiatives without straining their budgets. With the right approach, organizations can unlock the power of process mining and drive operational excellence without losing cost control.

One might argue that implementing process mining is not only about the costs. In the end each organization must consider the long-term benefits and return on investment (ROI). But with a cost controlled and sustainable process mining approach, return on investment is likely higher and less risky.

This article provides general information for process mining cost reduction. Specific strategic decisions should always consider the unique requirements and restrictions of individual organizations.

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.

Benford-Analyse

Das Benfordsche Gesetz beschreibt eine Verteilung der Ziffernstrukturen von Zahlen in empirischen Datensätzen. Dieses Gesetz, welches kein striktes Naturgesetz ist, sondern eher ein Erklärungsversuch in der Natur und in der Gesellschaft vorkommende Zahlenmuster vorherzusagen.

Das Benfordsche Gesetz beruht auf der Tatsache, dass die Ziffern in einem Zahlensystem hierarchisch aufeinander aufbauen: Es beginnt mit der 1, dann folgt die 2, dann die 3 usw. In Kombination mit bestimmten Gesetzen der Natur (der natürliche Wachstumsprozess, dabei möglichst energiesparend wachsen/überleben) oder Ökonomie (so günstig wie möglich einkaufen) ist gemäß des Benfordschen Gesetz zu erwarten, dass die Ziffer 1 häufiger vorkommt als die 2, die wiederum häufiger vorkommt als die 3. Die Ziffer 9 braucht demnach den längsten Weg und kommt entsprechend verhältnismäßig seltener vor.

Dieses Phönomen hilft uns bei echten Zufallszahlen nicht weiter, denn dann sind alle Ziffern nicht aufeinander aufbauend, sondern mehr oder weniger gleichberechtigt in ihrem Auftrauen. Bei der klassischen und axiomatischen Wahrscheinlichkeit kommen wir damit also nicht ans Ziel.

Die Benford-Analyse ist im Grunde eine Ausreißeranalyse: Wir vergleichen Ziffernmuster in Datenbeständen mit der Erwartungshaltung des Benfordschen Gesetzes. Weicht das Muster von dieser Erwartung ab, haben wir Diskussionsbedarf.

Moderne Zahlensysteme sind Stellenwert-Zahlensysteme. Neben den Dual-, Oktal- und Hexadezimalzahlensystemen, mit denen sich eigentlich nur Informatiker befassen, wird unser Alltag vom Dezimalzahlensystem geprägt. In diesem Zahlensystem hat jede Stelle die Basis 10 (“dezi”) und einen Exponenten entsprechend des Stellenwertes, multipliziert mit der Ziffer d. Es ist eine Exponentialfunktion, die den Wert der Ziffern in bestimmter Reihenfolge ermittelt:

Z =sum_{i=-n}^{m}d_{i}cdot10^{i}

Die Benford-Analyse wird meistens nur für die erste Ziffer (also höchster Stellenwert!) durchgeführt. Dies werden wir gleich einmal beispielhaft umsetzen.

Die Wahrscheinlichkeit des Auftretens der ersten “anführenden” Ziffer d ist ein Logarithmus zur Basis B. Da wir im alltäglichen Leben – wie gesagt – nur im Dezimalzahlensystem arbeiten, ist für uns B = 10.

p(d)=log_{B}left( 1 +frac{1}{d} right)

Im Standard-Python lässt sich diese Formel leicht mit einer Schleife umsetzen:

import math

[round(math.log10(1+1/float(i))*100.0, 2) for i in range(1,10)]
Out: [30.1, 17.61, 12.49, 9.69, 7.92, 6.69, 5.8, 5.12, 4.58]

Benford-Algorithmus in Python mit NumPy und Pandas

Nachfolgend setzen wir eine Benford-Analyse als Minimalbeispiel in NumPy und Pandas um.

import numpy as np

x = np.arange(1,10) # NumPy-Array erstellen
x
Out: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9])

benford = np.round(np.log10(1+1/x) * 100.0, decimals=2) # Den Logarithmus auf das NumPy-Array anwenden und runden
Out: array([ 30.1 ,  17.61,  12.49,   9.69,   7.92,   6.69,   5.8 ,   5.12,
         4.58])

Nun möchten wir eine Tabelle erstellen, mit zwei Spalten, eine für die Ziffer (Digit), die andere für die relative Häufigkeit der Ziffer (Benford Law). Dazu nutzen wir das DataFrame aus dem Pandas-Paket. Das DataFrame erstellen wir aus den zwei zuvor erstellten NumPy-Arrays.

import pandas as pd

benfordFrame = pd.DataFrame({'Digit': x, 'Benford Law': benford})

benfordFrame
Out: 
   Benford Law  Digit
0        30.10      1
1        17.61      2
2        12.49      3
3         9.69      4
4         7.92      5
5         6.69      6
6         5.80      7
7         5.12      8
8         4.58      9

Man könnte sicherlich auch den natürlichen Index des DataFrames nutzen, indem wir diesen nur um jeweils 1 erhöhen, aber das verwirrt später nur und tun wir uns jetzt daher lieber nicht an…

benfordFrame.plot('Digit', 'Benford Law', kind='bar', title='Benford', legend=False)

Das Dataframe-Objekt kann direkt plotten (das läuft über die matplotlib, die wir aber nicht direkt einbinden müssen):benfordsches_gesetz_dezimalzahlen_ziffern

Diese neun Balken zeigen die Verteilung der Ziffernhäufigkeit nach dem Benfordschen Gesetz, diese Verteilung ist unsere Erwartungshaltung an andere nummerische Datenbestände, wenn diese einem natürlichen Wachstum unterliegen.

Analyse der Verteilung der ersten Ziffer in Zahlungsdaten

Jetzt brauchen wir Daten mit nummerischen Beträgen, die wir nach Benford testen möchten. Für dieses Beispiel nehme ich aus einem ein SAP-Testdatensatz die Spalte ‘DMBTR’ der Tabelle ‘BSEG’ (SAP FI). Die Spalte ‘DMBTR’ steht für “Betrag in Hauswährung’, die ‘BSEG’ ist die Tabelle für die buchhalterischen Belegsegmente.
Die Datei mit den Testdaten ist über diesen Link zum Download verfügbar (Klick) und enthält 40.000 Beträge.

Wir laden den Inhalt der Datei via NumPy.LoadTxt() und machen aus dem resultierenden NumPy-Array wieder ein Pandas.DataFrame und holen uns die jeweils erste Ziffer für alle Einträge als Liste zurück.

financialTransactions = np.loadtxt("[DEIN LOKALER PFAD]\BSEG_DMBTR.csv", skiprows=1)

financialTransactionsFrame = pd.DataFrame({'Zahlungen':financialTransactions})

firstDigits = [str(value)[0:1] for value in financialTransactionsFrame['Zahlungen']]

Die Einträge der ersten Ziffer in firstDigits nehmen wir uns dann vor und gruppieren diese über die Ziffer und ihrer Anzahl relativ zur Gesamtanzahl an Einträgen.

percentDigits = np.asarray([[i, firstDigits.count(str(i))/float(len(financialTransactionsFrame['Zahlungen']))*100] for i in range(1, 10)])

percentDigits.T[1].sum()
Out: 94.0

Wenn wir die Werte der relativen Anzahl aufsummieren, landen wir bei 94% statt 100%. Dies liegt daran, dass wir die Ziffer 0 ausgelassen haben, diese jedoch tatsächlich vorkommt, jedoch nur bei Beträgen kleiner 1.00. Daher lassen wir die Ziffer 0 außenvor. Wer jedoch mehr als nur die erste Ziffer prüfen möchte, wird die Ziffer 0 wieder mit in die Betrachtung nehmen wollen. Nur zur Probe nocheinmal mit der Ziffer 0, so kommen wir auf die 100% der aufsummierten relativen Häufigkeiten:

percentDigits = np.asarray([[i, firstDigits.count(str(i))/float(len(financialTransactionsFrame['Zahlungen']))*100] for i in range(0, 10)])
percentDigits.T[1].sum()
Out: 100.0

Nun erstellen wir ein weiteres Pandas.DataFrame, mit zwei Spalten: Die Ziffern (Digit) und die tatsächliche Häufigkeit in der Gesamtpopulation (Real Distribution):

percentDigitsFrame = pd.DataFrame({'Digit':percentDigits[:,0], 'Real Distribution':percentDigits[:,1]})

Abgleich der Ziffernhäufigkeit mit der Erwartung

Nun bringen wir die theoretische Verteilung der Ziffern, also nach dem zuvor genannten Logarithmus, und die tatsächliche Verteilung der ersten Ziffern in unseren Zahlungsdaten in einem Plot zusammen:

import matplotlib.pyplot as pyplot 

fig = pyplot.figure()

ax = fig.add_subplot(111)
ax2 = ax.twinx()

percentDigitsFrame.plot('Digit', 'Real Distribution', kind='bar', ax=ax2, width = 0.4, color="green", position=0, legend=False)
benfordFrame.plot('Digit', 'Benford Law', kind='bar', ax=ax, width = 0.4, color="blue", position=1, legend=False)

lines, labels = ax.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc=0)

ax.set_ylim(1,35)
ax2.set_ylim(1,35)

pyplot.show()

In dem Plot wird deutlich, dass die Verteilung der führenden Ziffer in unseren Zahlungsdaten in ziemlich genau unserer Erwartung nach dem Benfordschen Gesetz entspricht. Es sind keine außerordentlichen Ausreißer erkennbar. Das wäre auch absolut nicht zu erwarten gewesen, denn der Datensatz ist mit 40.000 Einträgen umfassend genug, um dieses Muster gut abbilden zu können und von einer Manipulation dieser Beträge im SAP ist ebenfalls nicht auszugehen.

benford-analyse-python-fuer-sap-bseg-dmbtr

Gegenüberstellung: Computer-generierte Zufallszahlen

Jetzt wollen wir nochmal kurz darauf zurück kommen, dass das Benfordsche Gesetz für Zufallszahlen nicht unwendbar ist. Bei echten Zufallszahlen bin ich mir da auch sehr sicher. Echte Zufallszahlen ergeben sich beispielweise beim Lotto, wenn die Bälle mit Einzel-Ziffern durch eine Drehkugel hüpfen. Die Lottozahl-Ermittlung erfolgt durch die Zusammenstellung von jeweils gleichberechtigt erzeugten Ziffern.
Doch wie ist dies bei vom Computer generierten Zufallszahlen? Immerhin heißt es in der Informatik, dass ein Computer im Grunde keine Zufallszahlen erzeugen kann, sondern diese via Takt und Zeit erzeugt und dann durchmischt. Wir “faken” unsere Zahlungsdaten nun einfach mal via Zufallszahlen. Hierzu erstellen wir in NumPy ein Array mit 2000 Einträgen einer Zufallszahl (NumPy.Random.rand(), erzeugt floats 0.xxxxxxxx) und multiplizieren diese mit einem zufälligen Integer (Random.randint()) zwischen 0 und 1000.

from random import randint

financialTransactions = np.round(np.random.rand(2000) * randint(0,1000),decimals=2) # Zufallszahlen erzeugen, die auf dem ersten Blick als Zahlungsdaten durchgehen :-)

Erzeugen wir die obigen Datenstrukturen erneut, zeigt sich, dass die Verteilung der Zufallszahlen ganz anders aussieht: (vier unterschiedliche Durchläufe)

benford-analyse-python-numpy-pseudo-zufallszahlen

Anwendung in der Praxis

Data Scientists machen sich das Benfordsche Gesetz zu Nutze, um Auffälligkeiten in Zahlen aufzuspüren. In der Wirtschaftsprüfung und Forensik ist diese Analyse-Methode recht beliebt, um sich einen Eindruck von nummerischen Daten zu verschaffen, insbesondere von Finanztransaktionen. Die Auffälligkeit durch Abweichung vom Benfordchen Gesetz entsteht z. B. dadurch, dass Menschen eine unbewusste Vorliebe für bestimmte Ziffern oder Zahlen haben. Greifen Menschen also in “natürliche” Daten massenhaft (z. B. durch Copy&Paste) ein, ist es wahrscheinlich, dass sie damit auch vom Muster des Benfordschen Gesetzes abweichen. Weicht das Muster in Zahlungsströmen vom Bendfordsche Erwartungsmuster für bestimmte Ziffern signifikant ab, könnte dies auf Fälle von unnatürlichen Eingriffen hindeuten.

Die Benford-Analyse wird auch gerne eingesetzt, um Datenfälschungen in wissenschaftlichen Arbeiten oder Bilanzfälschungen aufzudecken. Die Benford-Analyse ist dabei jedoch kein Beweis, sondern liefert nur die Indizien, die Detailanalysen nach sich ziehen können/müssen.