Die Abschätzung von Pi mit Apache Spark

Auf den Berliner Data Science/Big Data/Data Analytics/…-Meetups auf denen ich in letzter Zeit des Öfteren zugegen war, tauchte immer wieder der Begriff Spark auf. Ich wollte wissen was es hiermit auf sich hat. Nachdem ich Spark 1.5.1 lokal auf meinem Mac installiert hatte, fing ich an Wörter in frei verfügbaren Texten zu zählen. Da es mir aber zu aufwändig schien, extrem lange Texte im Internet zu suchen und ich ein Gefühl für die Leistungsfähigkeit von Spark bekommen wollte, widmete ich mich einem skalierbaren Problem: der Abschätzung von Pi mit der Monte Carlo-Methode.

 1000 Zufallspunkte lokal auf Mac

spark-scala-interface-pi-example

Dies war wie zu erwarten keine Herausforderung für meine Hardware. Was passiert bei 10^6/ 10^7/ 10^8/ 10^9… Zufallspunkten?

dataset-spark-pi-example-1

An dieser Stelle stieß ich auf ein “Integer-Problem“. Weil 3*10^9 > 2^31 – 1, kann in diesem Fall nicht mehr der Datentyp Integer verwendet werden, sondern man müsste „long Integer“ (64 bit) nehmen. Was mich nun jedoch viel mehr interessierte als mit Zufallspunkten > 2^31 – 1  zu experimentieren, war eine Spark-Installation auf AWS und die entsprechenden Berechnungszeiten. Ich installierte Spark 1.5.0 (auf Hadoop 2.6.0 YARN) auf einem AWS-Cluster (2 Core/1 Master x m3.xlarge). Zu meiner Überraschung ergab sich Folgendes:

dataset-spark-pi-example-2

Warum war mein Mac schneller als ein AWS-Cluster? Eine m3.xlarge-Instanz hat 4 Kerne und 15 GB Arbeitsspeicher, mein Mac ziemlich genau die Hälfte… Gut, dann probieren wir das Ganze mal mit einem 4 Core/1 Master x m3.xlarge-Cluster.

dataset-spark-pi-example-3

Es ergibt sich kein signifikanter Unterschied. Erst die Verwendung von einem 3 Core/1 Master x r3.2xlarge-Cluster brachte eine Beschleunigung. Wo ist der Flaschenhals? Um Netzwerkeffekte zu prüfen, habe ich schließlich eine 0 Core/1 Master-AWS-Installation getestet.

dataset-spark-pi-example-4

Dieser letzte Test skalierte zu meinen vorherigen Tests auf dem AWS-System, und er wies darauf hin, dass der Flaschenhals kein Netzwerkeffekt war.

Bei heise Developer fand ich einen sehr interessanten Artikel, welcher sich dem Thema „optimale Konfiguration der virtualisierten Cloud-Hardware für den jeweiligen Anwendungsfall finden“ widmet: Benchmarking Spark: Wie sich unterschiedliche Hardware-Parameter auf Big-Data-Anwendungen auswirken

Für heute belasse ich es bei dem vorgestellten Experiment.

To be continued…,

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).

Wie lernen Maschinen?

Machine Learning ist eines der am häufigsten verwendeten Buzzwords im Data-Science- und Big-Data-Bereich. Aber lernen Maschinen eigentlich und wenn ja, wie? In den meisten Fällen lautet die Antwort: Maschinen lernen nicht, sie optimieren. Fällt der Begriff Machine Learning oder Maschinelles Lernen, so denken viele sicherlich zuerst an bekannte “Lern”-Algorithmen wie Lineare Regression, Logistische Regression, Neuronale Netze oder Support Vector Machines. Die meisten dieser Algorithmen – wir beschränken uns hier vorerst auf den Bereich des Supervised Learning – sind aber nur Anwendungen einer anderen, grundlegenderen Theorie – der mathematischen Optimierung. Alle hier angesprochenen Algorithmen stellen dem Anwender eine bestimmte Ziel- oder Kostenfunktion zur Verfügung, aus der sich i.a. der Name der Methode ableitet und für die im Rahmen des Lernens ein Minimum oder Optimum gefunden werden soll. Ein großer Teil des Geheimnisses und die eigentliche Stärke der Machine-Learning-Algorithmen liegt nun darin, dass dieser Minimierungsprozess effizient durchgeführt werden kann. Wir wollen im Folgenden kurz erklären, wie dies in etwa funktioniert. In einem späteren Blogpost gehen wir dann genauer auf das Thema der Effizienz eingehen. Read more

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.

Interview – Bedeutung von Data Science für Deutschland

Klaas Wilhelm Bollhoefer ist Chief Data Scientist bei The unbelievable Machine Company (*um), einem Full-Service Dienstleister für Cloud Computing und Big Data aus Berlin. Er übersetzt Business-Anforderungen in kundenspezifische Big Data Lösungen und agiert an der Schnittstelle von Business, IT, Künstlicher Intelligenz und Design. Er ist Community Manager diverser Fachgruppen sowie Mitglied in Beiräten und Jurys zahlreicheklaas-bollhoefer-web-fotor internationaler Big Data Veranstaltungen. Vor seiner Tätigkeit als Chief Data Scientist hatte Herr Bollhöfer bei Pixelpark den Bereich “Beratung und Konzeption” aus der Taufe gehoben und über mehrere Jahre verantwortet, sowie selbständig als strategischer Berater gearbeitet. Er hat Medientechnik, Visual Communication und Philosophie in Köln und Melbourne studiert, hielt Lehraufträge zu Project Governance & Social Data an der TU Berlin, HTW Berlin, der Uni Siegen und der FH Köln inne und schreibt ab und an für diverse Fachpublikationen.

Data Science Blog: Herr Bollhoefer, welcher Weg hat Sie ins Data Science von The unbelievable Machine (*um) geführt?

Bollhoefer: Das war alles andere als eine gradlinige Geschichte. Ich kannte Ravin Mehta, Gründer und Geschäftsführer von *um noch von der Pixelpark AG, bei der ich von 2000 bis 2009 in verschiedenen Positionen tätig war. Das nächste was Ravin vorhatte, nachdem er in den Cloud-Markt mit *um sehr erfolgreich eingestiegen war, war Big Data. Als ich ihn fragte, was Big Data denn genau sei, meinte er, dass wüsste (damals) noch niemand so genau!

Das war vor etwa vier Jahren und es war die Chance für mich, in dieses neue Thema einzusteigen und zudem eine tolle Gelegenheit – denn eigentlich bin ich ja Ingenieur – für mich, Mathematik wieder aufzufrischen. Ich war der erste Mitarbeiter für Data Science bei *um, habe das Dienstleistungsportfolio maßgeblich mitaufgebaut und konnte mich daher als Chief Data Scientist positionieren. Ich bin allerdings kein Spezialist, sondern Generalist über alles, was man dem Data Science so zuschreiben kann.

Data Science Blog: Welche Branchen profitieren durch Big Data und Data Science gegenwärtig und in naher Zukunft am meisten?

Bollhoefer: Branchen, die schon seit längerer Zeit direkt von Big Data und Data Science profitieren, sind die sogenannten Digital Pure Player, also vorwiegend junge Unternehmen, deren Geschäftsmodelle rein auf digitaler Kommunikation aufbauen sowie eCommerce-Unternehmen. Unter den Fachbereichen profitieren vor allem das Marketing und unter den Geschäftsmodellen ganz besonders das Advertising von Big Data Analytics. Der Begriff Customer Analytics ist längst etabliert.

Zu den Newcomern gehören die Branchen, auf die Deutschland besonders stolz ist: Sowohl die OEMs, als auch die größeren Zulieferer der Automobilbranche setzen mittlerweile vermehrt auf Big Data Analytics, wobei das Supply Chain Management mit Blick auf Logistik und Warenwirtschaft aktuell ganz klar im Vordergrund steht. Es ist hier für uns bereits viel Bewegung spürbar, aber noch lange nicht das Maximum ausgeschöpft. Zumindest ist für viele dieser Unternehmen der Einstieg gefunden.

Auch aus der klassischen Produktion entsteht im Kontext von Industrie 4.0 gerade Nachfrage nach Data Science, wenn auch etwas langsamer als erhofft. Die Potenziale durch die Vernetzung von Produktionsmaschinen sind noch nicht annähernd ausgeschöpft.

Branchen, die meiner Erfahrung nach noch nicht genügend aktiv geworden sind, sind die Chemie- und Pharma-Industrie. Auch Banken und Versicherungen, die ja nicht mit realen Werten, sondern nur mit Daten arbeiten, stehen – abgesehen von einigen Ausnahmen – überraschenderweise noch nicht in den Startlöchern, trotz großer Potenziale.

Data Science Blog: Und welche Branchen sehen Sie durch diese neuen Methoden und Technologien bedroht?

Bollhoefer: Eigentlich mag ich keine Bedrohungsszenarien durch Big Data skizzieren, denn diese führen nur dazu, dass sich Entscheider noch mehr vor dem Thema verschließen und genau dieses Verschließen stellt die eigentliche Bedrohung dar.

Die Chance sollte im Fokus stehen. Die deutsche Industrie, der produzierende Mittelstand, hat mit Big Data und Analytics die Möglichkeit, Fertigungs- und Prozessketten sehr viel weiter zu flexibilisieren und zu optimieren. Die Industrie 4.0 Initiative der deutschen Bundesregierung setzt hier ein ganz wichtiges Zeichen.

Es ist aber auch vollkommen klar, dass die deutsche Automobilindustrie – so wie sie heute existiert – massiv durch Google und Apple und deren Bestrebungen zum vernetzten und autonomen Fahrzeug bedroht ist. Es wird in absehbarer Zeit neue Wettbewerber geben, die klassische Gesamtkonzepte hinterfragen, sie neu und auch anders denken, als wir es heute kennen. Mobilität ist eines dieser Gesamtkonzepte.

Wenn die Kunden darauf anspringen, wird es existenzbedrohend für deutsche Unternehmen. Das ist aber nicht nur durch Big Data getrieben, sondern generell durch immer zügigere Technologiesprünge wie beispielsweise mehr Rechenpower, Batteriekapazität und Vernetzungstechnik.

Data Science Blog: Trotz der vielen Einflüsse von Big Data auf unsere Gesellschaft und Wirtschaft scheint die Berufsbezeichnung Data Scientist nur wenigen ein Begriff zu sein. Wird Data Science als Disziplin in Deutschland noch unterschätzt?

Bollhoefer: Ich denke nicht, dass dieses Berufsbild noch so unbekannt ist. Es ist vollkommen klar, dass es kein Wald- und Wiesen-Job ist, aber großen Unternehmen und Start-Ups ist heute schon sehr bewusst, dass Data Science ein wichtiges Themenfeld ist, ohne das keine Wettbewerbsfähigkeit mehr möglich wäre. Auch sind Profile bereits gut definiert, was ein Data Scientist ist und was man als solcher können sollte.

Data Science Blog: Kleinere Mittelständler haben von Data Science allerdings noch nicht viel gehört, ist das Thema für solche Unternehmen überhaupt von Bedeutung?

Bollhoefer: Kleinere Mittelständler kennen es noch nicht, aber Data Science ist für viele Unternehmen auch kleinerer Größen interessant. Die Werkzeuge, mit denen Data Science betrieben werden kann, sind immer einfacher zu bedienen. Auch Cloud-Lösungen machen diese innovativen Analysen für kleine Unternehmen erschwinglich, so sinkt die Hürde, mit seinen Daten viele der möglichen Potenziale zu realisieren.

Je leistungsfähiger die Werkzeuge werden, desto eher können auch kleinere Unternehmen von diesem Trend profitieren. Die Entwicklung, die gerade stattfindet sorgt für keine Not im Mittelstand, die entsprechenden Entscheider und Geschäftsführer sollten sich jedoch laufend über aktuelle Technologien und Möglichkeiten informieren.

Das ist zumindest meine Einschätzung, die sich jedoch genauso wie die aktuellen Technologien hin und wieder der Situation anpassen muss.

Data Science Blog: Ihre Gruppe Data Science Germany auf Xing.com hat bereits 1.240 Mitglieder und als KeyNote-Speaker sind Sie ebenfalls einer der Frontmänner in Deutschland für Big Data. Was können wir in Deutschland tun, um nicht den Anschluss zu verlieren oder gar auf Augenhöhe des Silicon Valley zu kommen?

Bollhoefer: Nur irgendwelche Gruppen oder Meetups zu organisieren hilft dem Standort Deutschland nicht weiter, auch wenn die Kommunikation untereinander sehr wichtig ist.

In Anbetracht der neuen Möglichkeiten, die wir insbesondere mit Machine Learning eröffnet bekommen, mit den neuen mathematischen Modellen und Technologien, wird sich in Zukunft vieles ändern, das ist vielen Leuten aber noch weitgehend unbekannt. Wir müssen massiv dafür sorgen, dass Transparenz geschaffen wird durch Lehre und Ausbildung.

Es ist jetzt ein enorm wichtiger Zeitpunkt, bei dem sich jedes größere Unternehmen auf eine krasse Lernphase einlassen sollte. Was verbirgt sich hinter künstlicher Intelligenz? Wie funktioniert Machine Learning und Predictive Analytics? Erst wenn das richtig verstanden ist, dann kann die Projektion auf eigene Geschäftsmodelle erfolgen.

Bisher suchten alle nach einem Referenz-Use-Case in der eigenen Branche, den man dann einfach eins zu eins übernehmen kann. Es wird dabei vielfach vergessen, dass diejenigen, die die ersten Schritte bereits gemacht haben, dann schon sehr viel weiter sind als die Nachahmer. Die US-Amerikaner machen es uns vor, sie tun es einfach und lernen daraus. Sie tun es schnell, sie scheitern schnell, erlangen aber auch schnell Erfolge. Dank dieses Mentalitätsaspektes sind sie uns teilweise weit voraus.

Dieser Vorsprung ist nur sehr schwer aufzuholen, da es an der Mentalitätskultur liegt. Eine andere Lern- und Fehlerkultur würde uns sehr gut tun, die kann man aber nicht herbeireden, die muss man entwickeln durch Anreize von der Politik. Industrie 4.0 ist daher eine gute Initiative, denn daran hängen Förderprogramme und Forschungsmotivationen. Das nimmt die Unternehmer aber nicht aus der Verantwortung, in dieser Sache am Ball zu bleiben.

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

Bollhoefer: Höchst unterschiedlich, denn Data Science umfasst vielfältige Tätigkeiten.

Der Berufsalltag findet überwiegend am Computer statt, denn heutzutage heißt Data Science vor allem Programmieren. Als Data Scientist setzten wir mit Programmierung Use Cases um, dabei nutzen wir meistens Python oder R, es können aber auch andere Programmiersprachen eingesetzt werden.

Viele Tätigkeiten verlangen Kreativität, Stift und Zettel sowie viel Austausch mit Kollegen. Nur wenige Arbeitsschritte lassen sich fest planen, iteratives bzw. agiles Vorgehen ist notwendig.

Kernaufgabe und Höhepunkt unserer Arbeit sind die Messung von Qualitätskriterien sowie das Trainieren und Optimieren mathematischer Modelle. Das sogenannte Feature-Engineering, also das Herausarbeiten relevanter Features (individuelle messbare Eigenschaften eines Objektes oder eines Sachverhaltes) bildet die dafür notwendige Basis und macht in der Praxis häufig bis zu 80% unserer Arbeitszeit aus.

Data Science Blog: Data Science ist Analyse-Arbeit und es geht viel um Generierung und Vermittlung von Wissen. Sind gute Data Scientists Ihrer Erfahrung nach tendenziell eher kommunikative Beratertypen oder introvertierte Nerds?

Bollhoefer: Im Idealfall sollte ein Data Scientist in gewisser Weise beides sein, also fifty/fifty. Das ist zumindest das, was es eigentlich bräuchte, auch wenn solche Leute nur schwer zu finden sind.
Den idealen Data Scientist gibt es wohl eher nicht, dafür arbeiten wir in Teams. Data Science ist Teamsport. Am erfolgreichsten sind Teams mit eben diesen Mindsets der kommunikativen Beratertypen mit Überzeugungsfähigkeit und den autodidaktischen Nerds mit viel tiefgehendem Wissen in Mathematik und Informatik.

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 gute Data Scientists werden können?

Bollhoefer: Wer operativ schnell tätig werden möchte, sollte auf den Master verzichten, denn wie die Nachfrage nach Data Science in drei Jahren aussehen wird, weiß niemand. Es ist ganz wichtig, jetzt zu starten und nicht in drei Jahren.

Der Weg ist zurzeit über Kontakte am leichtesten. Wer die nicht hat, kann diese schnell aufbauen, dazu einfach ein paar der vielen Meetups besuchen, über Social Media in der Szene netzwerken, sich Vorträge anhören und dadurch auch gleichzeitig in Erfahrung bringen, wie Data Scientists denken, arbeiten und was das typische Jobprofil ausmacht. Um der Thematik, den Tools und Methoden näher zu kommen, gibt es Kurse bei Coursera, Udacity, Kaggle Competitions, so kann man selber mal praxisnahe Probleme lösen. Zwei oder drei Zertifikate von diesen Anlaufstellen helfen bei der Jobsuche weiter.

KNN: Natur als Vorbild – Biologische Neuronen

Bisher ist die genaue Funktionsweise des Gehirns bei der Verarbeitung sensorischer Informationen nicht bekannt. Neue Erkenntnisse im Bereich der Neurowissenschaften liefern jedoch einen Einblick über grundlegende Prinzipien wie das Gehirn von Säugetieren sensorische Informationen repräsentiert. Einer der wichtigsten Punkte ist dabei die Erkenntnis, dass der Neocortex, einem ankommenden Signal erlaubt ein komplexes Netzwerk von Neuronen zu durchlaufen, wodurch es zu einer abstrakten Repräsentation des ursprünglichen Eingabesignals kommt. Auch ist das Gehirn in der Lage die Leitfähigkeit der Verbindungen zwischen den Neuronen zu modifizieren, was sich auf eine Änderung der Abbildungsvorschrift auswirkt. Beobachtungen können dadurch noch besser getrennt und effizienter repräsentiert werden. Die Entdeckung dieses Verhaltens motivierte die Entstehung des Forschungszweiges Deep Machine Learning, welcher sich darauf fokussiert Modelle zu entwickeln, die ähnliche Charakteristiken wie der Neocortex aufweisen.

Das Eingabesignal durchläuft das Netzwerk bis zu einer Ausgabeschicht. Das Resultat dieser nicht linearen Transformation lässt sich dann beispielsweise mit einem Klassifizierungsalgorithmus auswerten. Die praktischen Anwendungen solcher Algorithmen sind sehr vielfältig. Deep Machine Learning Algorithmen liefern zurzeit die besten Ergebnisse zu vielen Problemen in Anwendungsdomänen wie Bilderkennung, Spracherkennung und der Verarbeitung natürlicher Sprache. Mit Hilfe dieser Algorithmen wurden beispielsweise neue elementare Teilchen gefunden, entdeckte Galaxien noch besser klassifiziert und Auswirkungen von Mutationen innerhalb von DNA vorhergesagt.

Das Neuron

Das Neuron ist die Basis-Recheneinheit des Gehirns. Ungefähr 86 Milliarden solcher Neuronen befinden sich im menschlichen Nervensystem, welche durch ca. 10^15 Synapsen miteinander vermascht sind. In Abbildung unten links wird eine Schemazeichnung eines biologischen Neurons dargestellt. Dieses besteht unter Anderem aus Dendriten, dem Zellkörper, der den Zellkern beinhaltet und einem Axon. Die Dendriten gehen aus dem Zellkörper hervor und sind über Synapsen mit sensorischen Zellen oder Axonen anderer Neuronen verbunden. Ihre Aufgabe ist die Aufnahme von ankommenden Signalen in Form von elektrischen Spannungsänderungen und der Transport dieser in den Zellkörper des Neurons, der Recheneinheit einer Nervenzelle. Dort angekommen entscheiden bestimmte Faktoren, ob ein Aktionspotential anhand einer Schwellwertfunktion ausgelöst wird oder nicht. Ist dies der Fall leitet das Neuron elektrische Energie über sein Axon an weitere angeschlossene Dendriten anderer Neuronen weiter.

Neuronen
Das biologische Neuron diente als Inspiration für das Software-Neuron. Beim mathematischen Modell eines Software-Neurons (Künstliches Neuron eines KNN) wird davon ausgegangen, dass die verschiedenen Dendriten unterschiedlich stark ausgeprägt sind und ein Signal daher auch verschieden stark gewichtet in den Zellkörper übertragen wird. Jedes Dendrit enthält demnach einen Faktor(θi), der das Signal(xi) vor dem Eintreffen in den Zellkörper skaliert (θixi). Diese Faktoren werden auch als Gewichte bezeichnet. Im Zellkörper selbst werden die Signale die von unterschiedlichen Neuronen stammen aufsummiert bis schließlich ein fester Bias-Wert(b) auf das Ergebnis der Summation aufaddiert wird. Anschließend bestimmt eine nicht-lineare Aktivierungsfunktion über den finalen Ausgangswert des Neurons.

Bildquelle: Wikipedia

Ähnliche Artikel:

KNN: Künstliche Neuronen

Es gibt sehr ausführliche Definitionen und Abbildungen für ein künstliches Neuron, die in diesem Artikel aber nicht behandelt werden. Der Grund dafür ist pragmatischer Natur. Es soll eine gewisse Konsistenz zu den anderen KNN-Beiträgen dieser Reihe bestehen und das Thema soll nicht zu einer wissenschaftlichen Abhandlung mutieren.

In dem Beitrag  KNN: Was sind künstliche neuronale Netze  geht es um den grundsätzlichen Aufbau von künstlichen neuronalen Netzwerken. Zusammengesetzt werden die Strukturen aus einer oftmals großen Anzahl von künstlichen Neuronen. Die nachfolgende Abbildung zeigt auf der Linken Seite einen extrahierten Ausschnitt aus einem Netzwerk. Es kann auch als einfaches allein stehendes Netzwerk betrachtet werden. Auf der rechten Seite ist eine allgemeingültigere Form zu sehen. Die Bias Unit (VB) wird üblicherweise als X0 bezeichnet und hat immer den Wert 1.

 

neuronen-netzwerk1 neuronen-netzwerk2

 


Um den Ausgangswert Y zu berechnen wird zunächst jeder Eingangswert X mit seinem dazugehörigen Gewicht \theta (Theta) multipliziert und die Ergebnisse aufsummiert. Das Zwischenergebnis ist die Aktivierungsstärke z:

    \[ z = X_0 \cdot \theta_0 + X_1 \cdot \theta_1 + X_2 \cdot \theta_2 \]

Im nächsten Schritt wird der eigentliche Ausgangswert Y errechnet, indem die Aktivierungsstärke z an eine Aktivierungsfunktion angelegt wird. Es gibt zwar verschiedene Funktionen, häufig wird aber die Logistische bzw. Sigmoid-Funktion verwendet. Sie ist nicht-linear und hat einen Ausgangswertebereich zwischen 0 und 1.

sigmoid-funktion

    \[ sigmoid(z) = \frac{1}{1+e^{-z}} \]

Wird das Bias Neuron und sein Gewicht nicht beachtet, bestimmen die eingehenden Daten die Aktivierungsstärke und damit den Ausgang der Funktion. Unter Verwendung der Bias Unit verschiebt sich die Funktion entlang der Y-Achse, was einer Verschiebung von einem Schwellwert gleich kommt.

Die endgültige Formel für die Aktivierung eines Neurons sieht sehr ähnlich zu der Logistischen Regression aus. Werden die Werte von X und Theta zu Vektoren zusammengefasst, lässt sich die Berechnung stark vereinfachen:

    \[ Y = sigmoid(X\theta) \]

Als Programmcode müsste diese Berechnung dennoch mit einer Schleife realisiert werden oder noch besser mit einer Bibliothek für lineare Algebra.

Ähnliche Artikel:
KNN: Was sind künstliche neuronale Netze
KNN: Vorteile und Nachteile

KNN: Vorteile und Nacheile

Wie jedes Verfahren haben auch künstliche Neuronale Netzwerke (KNN) ihre Vor- und Nachteile. Im Folgenden sollen einige benannt werden.

Vorteile

  • KNN können bessere Ergebnisse liefern als existierende statistische Ansätze, wenn das Problem ausreichend komplex ist. Das heißt, wenn das Problem nicht linear ist und es viele Eingabedaten mit vielen Variablen gibt.
  • Es gibt zwar sogenannte Hyperparameter, die je nach Einstellung das Netzwerk besser oder schlechter trainieren lassen, diese müssen aber nur manuell geändert werden, wenn neue Rekordwerte erreicht werden sollen. Ansonsten gibt es verhältnismäßig wenige Parameter.
  • Auch für stark nicht lineare Probleme, werden gute Lösungen gefunden. Dazu zählen fast alle Probleme die aus einer Datenbasis stammen, wo menschliche oder andere unvorhersehbare Einflüsse wirken.
  • Für große Datenmengen und viele Datendimensionen (Einflussfaktoren) können sinnvolle Ergebnisse ermittelt werden.

Nachteile

  • Künstliche Neuronale Netzwerke sind oftmals wie eine Blackbox. Dadurch ist es nicht möglich nachzuverfolgen wieso ein Netzwerk eine bestimmte Entscheidung getroffen hat.
  • Damit ein allgemeingültiges gutes Ergebnis berechnet werden kann, bedarf es vieler Beispiel-/Trainingsdaten.
  • Aufgrund der hohen Datenmenge, ist es sinnvoll die Berechnungen auf einer Grafikkarte durchzuführen.
  • Während des Trainings finden sehr viele Gewichtsänderungen in kurzer Zeit statt. Daher ist ein Aufteilen der Arbeit in ein verteiltes System wie Apache Hadoop oder Apache Spark nur schwer möglich und führt oftmals zu drastischen Performanz Einbußen.
  • Ist das Problem mathematisch beschreibbar sind KNNs oftmals schlechter oder maximal genauso gut.
  • Es ist zu keinen Zeitpunkt bekannt ob die gefundene Lösung das globale Optimum ist oder ob es noch bessere Lösungen gibt.

In der Forschung gibt es viele Ansätze um einige der Nachteile aufzuheben.

 

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.