Ein Pfad durch den Dschungel von Big Data und Knowledge Discovery

Linked Open Data Graph

In diesem Eintrag versuche ich, einen groben Überblick über das weite Themenfeld von Big Data, Machine Learning und der Überschneidung beider Gebiete, Wissensentdeckung in Datenbanken, zu erarbeiten.

Ergänzt werden beide Gebiete mit Hinweisen auf Software, Tools und Methoden (Open Source/Access soweit möglich). Der Eintrag ist daher vor allem an Neulinge und technisch Interessierte gerichtet.

Wie so oft haben sich  die technischen Möglichkeiten schneller entwickelt als die Fähigkeiten des Menschen, mit ihnen umzugehen (Moore’s Gesetz, die enorme Verbilligung von Massenspeichern und das Aufkommen von überall vorhandenen und äußerst schnellen Internetzugängen). Ab ca. 2011 zieht “Big Data” Kreise (google trends). Die Möglichkeiten, die sich ergeben wenn man die enormen Datenbestände mit Hilfe statistischer Methoden und Algorithmen untersucht, erwecken leicht den Anschein, als könnten sie die quantitativen Methoden in eine neue Dimension katapultieren (s. “The Unreasonable Effectiveness of Data“, IEEE 2011).

Als völlige_r Neueinsteiger_in in das Thema sollte man mit 3-4 Wochen Einarbeitungszeit rechnen, bereits das Einlesen in dieses Thema führt sehr schnell zu einem Informationsüberfluss: Fachbegriffe wie Support Vector Machines, Distributed Processing, CAP-Theorem, Fuzzy C-Means Clustering schwirren um die Ohren und man begegnet einer Vielzahl von Werkzeugen, die man sinnvollerweise können sollte: Data Mining Toolkits, Programmiersprachen und verschiedenste Datenbanksysteme. Vorher möchte ich kurz die Themenfelder, die oft gemeinsam behandelt werden, kurz etwas trennen und die wichtigsten Begriffe ordnen.

http://www.flickr.com/photos/lenards/3954268119/

Big Data

Die generierte Datenmenge steigt exponentiell an, der Vizepräsident von Cleversafe rechnet damit, dass es bereits 2015 Unternehmen geben wird, die 80 Exabyte Daten pro Monat analysieren müssen – Cleversafe selbst hat kürzlich das erste 10 Exabyte-Speichersystem auf den Markt gebracht. Außer der Herausforderung, die Infrastruktur zur Datenübertragung an den enorm gestiegenen Traffic (für ein paar Zahlen vgl. das Cisco White Paper 2011, “Entering the Zettabyte Era“) anzupassen, stehen Unternehmen und Wissenschaftler vor der Frage, wie aus der unüberschaubaren Menge von unstrukturierten Daten verschiedenster Quellen Informationen und Wissen gewonnen werden kann.

Der Supercomputer hat ausgedient und wird durch tausende einzelne Maschinen ersetzt, die in verteilten Serverfarmen zu virtuellen Clustern zusammengeschaltet werden. So werden verschiedene Probleme wie Abwärme, Platzbedarf und physische Sicherheit gelöst, während die Virtualisierung beliebige Skalierbarkeit möglich macht. Dadurch tauchen aber neue Probleme auf: Wie lassen sich solche verteilten Systeme managen, wenn mit ausreichend Geschwindigkeit 1000 Queries pro Sekunde in einer Datenbank verwaltet werden müssen, die auf 5.000 Servern verteilt liegt?

http://www.flickr.com/photos/marc_smith/6879238126/Das Konzept dahinter nennt sich Distributed Computing, wie es z.B. das Open Source Framework Apache Hadoop ermöglicht, und wie es z.B. von BOINC und ähnlichen Projekten zivilgesellschaftlich genutzt wird.

Parallel haben sich neue Datenbanksysteme (NoSQL – Not only SQL) entwickelt, die besser als objektrelationale Systeme geeignet sind, mit extrem großen Datenmengen umzugehen. Ein ausführlicher radiotux-podcast (Binärgewitter #1) liefert einen Einstieg in NoSQL, und befasst sich auch mit den Vorreitern, Amazons Dynamo und Googles BigTable. Der Talk beginnt bei den Grundlagen (wichtige Papers sind verlinkt) und ist sehr informativ, erklärt Column Stores (Cassandra, HBase), Datastructure Stores (Redis), KeyValue Stores (Riak), Document Stores (MongoDB), Graphdatenbanken, und liefert viele Anwendungsbeispiele.

Von ihrer Linkliste möchte ich (Dawn of Polyglot Persistence) herausheben, da dort die Differenzierung nach Anwendungsfällen (Archivierung, Suche, Navigation, Reporting) und eine mögliche Evolution hin zu automatisierten Systemen mit Garbage Collection beschrieben wird. Wer schon eine genauere Vorstellung eines Anwendungsfalles hat, bzw. weiß, mit welchen Daten er/sie es zu tun hat, findet einen Vergleich verschiedener NoSQL-Systeme.

Die technischen Schwierigkeiten sind aber nicht die einzigen, die uns vor große Hürden stellen. Soll das Internet als eines der wichtigsten Medien nicht an seinem Wachstum und Komplexität scheitern, müssen wir Lösungen finden, wie unsere kleinen Helferlein (Laptops, Smartphones, Webcrawler) selbstständiger navigieren und uns die Orientierung in der Datensphäre erleichtern können.

Damit das passieren kann, muss dem Web eine zusätzliche Ebene eingezogen werden, eine Ebene die das Web für Maschinen so lesbar macht, wie es Websites für uns Menschen sind. Das geht weit darüber hinaus was Suchmaschinen leisten, die einfach nur Abbilder scannen, ohne wirklich zu verstehen was sie vor sich haben. Ein seit längerem diskutierter Ansatz ist das Semantic Web, nach Anregung von Tim Berners-Lee (weitere Infos vom W3C). Dabei sollen Algorithmen entwickelt werden, die Informationen in ihrem Kontext verstehen können, so wie wir die unterschiedlichen Bedeutungen eines Wortes abhängig vom Kontext verstehen können. http://www.flickr.com/photos/kaeru/123614933/Hierfür muss zuerst die semantische Lücke geschlossen werden, was meiner Meinung nach noch eine Weile dauern kann, weil es effektiv bedeutet, Computern das Sprechen bei zu bringen.

Das Web of Data setzt eine Ebene darunter an: Dabei werden Daten (als potenzielle Informationen) miteinander verknüpft. In diese Kerbe schlägt das ebenfalls von Tim Berners-Lee entwickelte Konzept von Linked Open Data (linkeddata.org). Das Ziel der Datenverknüpfung und -integration aus verschiedenen Quellen lässt sich auf technischer Ebene mit Hilfe von Uniform Resource Identifiers und Resource Description Frameworks bereits erreichen.

Spannend ist daher die Forderung der OpenData – Bewegung, dem Allgemeinwohl dienende Daten freizugeben. Abgesehen davon, dass eine Menge nützlicher Rohdaten aus Wissenschaft & Forschung, öffentlichen Einrichtungen und Echtzeit-Sensoren allgemein verfügbar wird, kann dies zu starken Demokratisierungsprozessen führen, weil Informationen die Eigenschaft haben, Entscheidungen zu beeinflussen, und neue Informationsflüsse neue Entscheidungsprozesse erzeugen.

Offene Fragen, die immer wichtiger werden je höher die Vernetzung werden soll, entstehen beim Datenschutz und geistigen Eigentum in und an Datenbanken. Die Creative Commons-Lizenzen für Datenbanken versuchen dafür eine Lösung zu entwickeln. Es gibt auch einen Konflikt mit dem Europäischen Datenbankrecht, zu welchem ich allerdings keine genaueren Informationen habe. Wer da weiterhelfen kann, bitte in den Comments posten, danke.

Knowledge Discovery in Databases

http://www.flickr.com/photos/fseoane/4442992244/

Separating Hyperplane - cc-by-nc-sa Fabian Pedregosa (flickr)

Machine Learning und Data Mining existieren konzeptionell und auch praktisch seit Jahrzehnten. Fayyad et al. z.B. beschrieben 1996, die Möglichkeiten und Notwendigkeiten der Anwendung von Machine Learning Techniken auf große Datenbestände (KDD, Knowledge Discovery in Databases). Dieser Prozess umfasst mehrere Teilschritte (Aufbereitung der Daten, Data Mining, Visualisierung, Interpretation, und das Ganze iterativ) mit dem Ziel, in einer großen Menge von Rohdaten verschiedenster Quellen (Finanzmarktdaten, Sensorennetzwerke, Soziale Netze, physikalische/chemische/biologische Experimente) Muster zu erkennen und so Daten zu klassifizieren, sortieren, Prognosen zu erstellen. Data Mining ist im Kern nichts anderes als statistische Methoden, die auf außergewöhnlich große Datenbestände angewendet werden. Diese quantitative Dimension ist es, die neue Methoden und Herangehensweisen notwendig macht.

Was man alles lernen sollte, ist auf quora gut zusammengefasst:

  • Handwerkszeug: Python, v.a. wegen dem MATLAB ähnlichen Paket numpy, C++ für schnelleren Code, R v.a. zur Visualisierung, Java weil viele Tools, z.B. Hadoop und weka, darin geschrieben sind, und auch die UNIX-Tools wie sed, AWK, grep gehören zum Alltag.
  • Aus theoretischer Sicht sind Wahrscheinlichkeitstheorie, Statistik und Angewandte Mathematik für das Verständnis der verwendeten Algorithmen unerlässlich.
  • Aus praktischer Sicht sollte technisches Verständnis für Distributed Computing und Parallelisierung vorhanden sein, weil das das Mittel der Wahl ist, wie Speicherplatz und Rechenleistung heutzutage erzeugt werden.

Zu Data Mining als Technik und Werkzeug will ich hier nur auf die Links als weiterführende Literatur verweisen, vor allem kdnuggets ist eine reichhaltige Fundgrube.

http://www.flickr.com/photos/alpha_auer/5069070964/Wo ist der Haken?

Die spannende Frage ist: Wo kommen die Daten her? Riesige Datenmengen entstehen in den Naturwissenschaften, bei astronomischen Beobachtungen (Sky Survey), physikalischen Experimenten (CERN), oder in biochemischen Studien (z.B. zur Proteinfaltung bei der Medikamentenentwicklung).  Eine andere Quelle sind Menschen selbst, denen oft nicht bewusst ist, dass sie als Quelle von Erkenntnis dienen – oft Profanes bzgl. ihres Nutzungsverhaltens im Web oder ihres Kaufverhaltens in Online- oder Offline-Stores. Hier fehlen noch weitgehend rechtliche und ethische Rahmen über das, was zulässig ist. Wer an Daten kommt, kann machen was er/sie will. Hier fehlt – in Zeiten wo  Sensoren und Netzwerke überall sind und beinahe jede Alltagsaktivität digitale Abdrücke hinterlässt – das Bewusstsein, dass die individuelle Aktivität selbst zu einer zentralen Datenquelle geworden ist. Der gesellschaftliche Diskurs darüber, wie mit der Datensphäre umgegangen werden soll und darf, läuft der praktischen Realität hinterher. Mir persönlich fehlt auch eine klare Prioritätensetzung hin zu Umgang mit Daten, die Menschen nützen – Erkennung von Krisen wie Krankheiten, Ressourcenknappheiten, Konfliktpotenzialen.

Und auch weiterhin gilt: Die beste Maschine kann Interpretation des Users, und damit Allgemeinbildung, Expertenwissen, und kritische Reflexionsfähigkeit noch lange nicht ersetzen.

Einfach mal ausprobieren

http://www.flickr.com/photos/75279887@N05/6914441342/

cc-by-sa "luckey_sun" (flickr)

Wer Statistik hört und “langweilig” ruft, hat den Moment noch nicht erlebt, wenn man nach langer Vorbereitungszeit (Bereinigen des Datensatzes, Aufsetzen einer Datenbank, Einrichtung eines parallelisierten Systems und Zusammensammeln, Auswahl der Analysewerkzeuge) das erste Mal Algorithmen durchlaufen lässt, auf eine heiße Spur stößt und vom Jagdfieber gepackt wird.

Es gibt eine Reihe von Wettbewerben mit aufbereiteten Datensätzen, an den man ausprobieren kann: IEEE VAST Challenge 2012 und der KDD-Cup 2012 beispielsweise.

Als guter Einstieg bieten sich Data Mining Tools an, die sehr anwenderfreundlich sind: kdnuggets hat eine ausführliche Liste freier / Open Source DataMining-Software in verschiedenen Sprachen (C++, R, Python, Java,…). RapidMiner und weka sind zwei bekannte.

Die nächste Stufe wären toolkits für z.B. python (orange, scrapy, scikit-learn, und ohne numpy/scipy kommt man sowieso nicht aus, dazu dann das selbstständige Einbinden großer Daten in z.B. MongoDB), bei denen man sich der Maschine schon nähert, und in der Lage ist, maßgeschneiderte Lösungen zu programmieren.

Generell gilt: Erstmal das eigene Problem definieren, dann das passende Tool raussuchen – und möglichst viel experimentieren, ausprobieren, selber machen, und die gelernte Theorie gleich in die Praxis umsetzen. Viel Spaß dabei!

Weitersuchen, z.B. bei:

Print Friendly

One comment on “Ein Pfad durch den Dschungel von Big Data und Knowledge Discovery

  1. manu on said:

    Danke für den Überblick – macht trotz der Masse des Themas Lust auf mehr! ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

HTML tags are not allowed.