Data Science stellt sich in den Dienst der Mathematik
Früher mussten Mathematiker aus komplexen Berechnungen mühsam Muster erkennen. Heutige Technik kann das viel schneller.
![Künstliche Intelligenz als Hilfswissenschaftler: KI revolutioniert die Forschung](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/1/5/1/8/6/2/shutterstock_680929729-477a0da1f56ddb45.jpeg)
(Bild: Phonlamai Photo/Shutterstock.com)
- Eldar Sultanow
- Christian Koch
Bisher leistete Mathematik einen enormen Beitrag für Data Science, Machine Learning und das gesamte KI-Gebiet. Nun hat sich der Spieß teilweise umgedreht: Mathematik ist nicht mehr nur ein Mittel zum Zweck von Data Science, sondern Data Science stellt sich in den Dienst der Mathematik, und das gleich in drei Bereichen:
- Die topologische Datenanalyse geht der Frage nach, welches Wissen aus einer Stichprobe von Datenpunkten über die geometrische Form erlernbar ist.
- Die Codierungs- und Zahlentheorie hilft dabei, bestimmte zahlentheoretische Problemstellungen näher zu beleuchten, Zusammenhänge aufzudecken oder Hinweise für Beweise von Vermutungen – also unbewiesene mathematische Sätze – zu finden.
- Das symbolische Rechnen schließlich befasst sich mit dem Verstehen und Verändern von Formeln. ML ist mittlerweile in der Lage, selbst umfangreichere und komplexere mathematische Aufgaben zu lösen, beispielsweise symbolische Integration oder Differenzialgleichungen.
Data Science lässt sich praktisch für die Untersuchung von Zusammenhängen in der Codierungs- und Zahlentheorie einsetzen – Bereich Nummer zwei. Dieser Artikel demonstriert das explorative und programmatische Vorgehen mit Python und weist auf versteckte Fallstricke hin.
Explorative Datenanalyse
Im Rahmen von Data Science analysiert man die Daten üblicherweise explorativ, das heißt in einem stufenweisen Prozess: Man zieht Schlüsse aus den Ergebnissen, die dann wiederum zu neuen Analysen führen. So arbeitet man sich schrittweise zu einem Ergebnis vor. Als Skriptsprache ist Python sehr gut für diese Arbeitsweise geeignet.
Ein exploratives Arbeiten erfordert Werkzeuge, die sowohl das Erstellen und Ausführen der Python-Skripte als auch die Darstellung der Daten als Textausgaben und Grafiken ermöglichen. Hier haben sich Jupyter-Notebooks etabliert. Sie bieten eine Weboberfläche, in der man sowohl programmieren als auch Analyseergebnisse darstellen kann. Darüber hinaus sind für Python professionelle IDEs wie Visual Studio Code und PyCharm verfügbar.
Einen Einblick, wie Data Science in den wissenschaftlich mathematisch geprägten Alltag eingebracht werden kann, bietet der Infokasten Bäume als Beispiel aus dem heutigen Forschungsalltag.
Bei den sogenannten Goal-Means-Bäumen, Entscheidungsbäumen und hierarchischen Organigrammen haben die explorative Datenanalyse und Visualisierungstechniken zu der überraschenden Einsicht geführt, dass sie um unerwünschte Nebeneffekte, unsichere Varianten und informelle Netzwerke ergänzt werden müssen.
In der Mathematik stellt man sich Bäume üblicherweise als eine Menge G=(V,E)
von Knoten V
und deren Kanten E
vor, mit der Besonderheit, dass jedes Knotenpaar nur durch einen Pfad verbunden ist und alle Pfade nur einen Knoten gemeinsam haben: die Wurzel. Der Mathematiker Lothar Collatz kombinierte die Zahlen- mit der Graphentheorie und konstruierte einen Baum: Er hat einen mit einer natürlichen Zahl n
beschrifteten Knoten mit einem weiteren Knoten n/2
verbunden – falls n
gerade ist, anderenfalls mit einem Knoten 3n+1
– und dieses Spiel beliebig fortgesetzt.
Die Collatz-Vermutung besagt, dass – egal mit welcher Zahl n
ein Knoten beschriftet ist – von diesem ein Pfad zum Wurzelknoten führt, der mit 1
beschriftet ist. Mit ML und Data Science konnten Mathematiker Bäume mit exorbitant hohen Zahlen aufbauen und ein Muster feststellen: Der Collatz-Baum weist die Struktur von Hilberts Hotels auf und hat dies dem Skolem-Noether-Theorem zu verdanken.
Mithilfe von Mathematica, einem Programmpaket zum symbolischen Rechnen, kann man zeigen, dass die asymptotische Dichte im Collatz-Baum dadurch bestimmt ist, dass jede weitere Iteration der beiden inversen Collatz-Funktionen (n -> 2n, n -> (n-1)/3
eine höhere Periodizität aufzeigt. Unter Beibehaltung der Verzweigungen erzeugt man einen Binärbaum, der keine Knoten besitzt, die mit durch 2
und 3
teilbaren Zahlen beschriftet sind. Das iterative Beschneiden dieses Binärbaums kann man sich wie das Hilberts-Hotel-Paradoxon vorstellen. Dabei geht es darum, dass ein Hotel mit unendlich vielen Zimmern unendlich viele Gäste aufnehmen möchte. Die Zimmer des Hotels sind immer wieder von Nachkommen aus einer noch höheren inversen Collatz-Iteration belegt. Mit einem Python-Programm lässt sich bestätigen, dass dieses Prinzip auch bei exorbitant hohen Zahlen in der tausendsten Iteration funktioniert. Die zugehörige Bibliothek findet sich auf GitHub.
Der Linguistik-Professor Noam Chomsky stellte fest, dass alle Sätze in jeder Sprache eine gemeinsame grammatikalische Baumstruktur haben. Dank überwachten Lernens mit CoreNLP, Spacy oder UDpipe können Baumbanken (Textkorpusse) mit universellen Abhängigkeiten zur Identifikation von Satzstrukturen aus Nachrichten in unterschiedlichen Sprachen verwendet werden. Wandelt man die Bäume in ein semantisch-politisches Netz um, lassen sich überraschend sinnvolle Folgefragen generieren, an die Journalisten noch nicht gedacht haben. Diese datenwissenschaftliche Erforschung syntaktischer Baum-Analysen wird derzeit zur Extraktion semantischer Beziehungen aus niederländischen Zeitungsartikeln verwendet. Erste Ergebnisse liefert dieser Bericht.
Funktionale und mengenorientierte Programmierung
Anders als bei der Programmierung klassischer Apps steht bei Data-Science-Anwendungen nicht die zeilenweise, sondern die spaltenweise Verarbeitung von Daten im Vordergrund. Weit verbreitet sind mengenorientierte und datennahe Sprachen wie SQL und R. Auch funktionale Programmierung, die es erlaubt, eine Funktion auf eine Menge von Datensätzen anzuwenden, ist im Data-Science-Bereich von großem Nutzen. Diese Art der Programmierung spart das wiederholte Umsetzen von Schleifen im Code. Python bietet von sich aus nur funktionale Elemente. Erweiterungen wie NumPy und Pandas führen jedoch auch mengenorientierte Features in die Sprache ein. Diese Kombination ist eines der Erfolgsgeheimnisse von Python.
Zudem erlaubt Python die Verarbeitung beliebig großer Ganzzahlen – und dies in relativ großer Menge. Die einzige Einschränkung für die Größe von Integer-Zahlen ist die zugrundeliegende Hardware. Softwaretechnisch liegen keine Limitationen vor. Für codierungs- und zahlentheoretische Fragestellungen ist das von großem Vorteil, da manche Phänomene erst bei sehr großen Zahlen beobachtbar sind. Hiervon profitieren Forschungsfelder rund um Teilbarkeiten, Primzahlen, Primzahlpotenzen und Elliptische Kurven.
Warum Python?
Trotz ihrer Mengenorientierung ist Python nicht, wie beispielsweise SQL, stark von der zugrundeliegenden Hardware getrennt. Dies macht Python neben dem Einsatz im Data-Science-Umfeld zu einer beliebten Sprache für Hacker. Python ist im Gegensatz zu Java skriptfähig und erlaubt daher ein exploratives Vorgehen. Gleichzeitig bietet die Sprache Zugriff auf Low-Level-APIs der ausführenden Maschinen. Standardmäßig wird die Variante CPython eingesetzt, die in C implementiert ist.
Um Python skriptfähig zu halten, wird der Code nicht nach C übersetzt, sondern interpretiert. Der Zugriff auf die Sprache C ist durch Python allerdings jederzeit möglich. Darüber hinaus steht das Framework Cython zur Verfügung, mit dessen Hilfe einzelne in C entwickelte Code-Fragmente in Python integriert werden können. Cython fügt somit Erweiterungen zur Sprache hinzu und erlaubt das Kompilieren und Nutzen von selbst erstelltem C-Code. Darüber hinaus ermöglichen Frameworks wie TensorFlow und PyTorch das Trainieren von Machine Learning Modellen mit sogenannten Graphics Processing Units (kurz: GPUs). Im Gegensatz zu CPUs ermöglichen sie eine hochgradig parallele Datenverarbeitung. Insgesamt bietet die Hardwarenähe von Python Möglichkeiten zur Umsetzung sehr performanter Algorithmen.
Für Python stehen unzählige kostenlose Pakete und Bibliotheken zur Verfügung, die für wissenschaftliche Zwecke entwickelt und optimiert sind. Zu den Einsatzgebieten zählen Statistik, geometrische Datenverarbeitung, Visualisierungen, Analysis, Algebra, maschinelles Lernen und Quantencomputing. Programmierer können Module über die zentralen Repositories, PyPI und Conda bequem herunterladen und verwalten. Beispiele beliebter Bibliotheken sind Pandas, NumPy, TensorFlow, Scikit-learn, SimPy und Cirq.