Mathe-Basics für Data Scientists - Thomas Nield - E-Book

Mathe-Basics für Data Scientists E-Book

Thomas Nield

0,0

Beschreibung

Frischen Sie Ihre Mathematik-Kenntnisse für Datenanalysen, Machine Learning und Neuronale Netze auf! - Dieses Buch richtet sich an angehende und fortgeschrittene Data Scientists sowie Programmierer*innen, die sich die mathematischen Grundlagen der Data Science aneignen wollen - Besonders gut nachvollziehbar durch minimale mathematische Fachterminologie, praxisnahe Beispiele und zahlreiche Abbildungen - Mit Übungen und Lösungen, um das Gelernte zu vertiefen - Für Studium und BerufUm als Data Scientist erfolgreich zu sein, müssen Sie über ein solides mathematisches Grundwissen verfügen. Dieses Buch bietet einen leicht verständlichen Überblick über die Mathematik, die Sie in der Data Science benötigen. Thomas Nield führt Sie Schritt für Schritt durch Bereiche wie Infinitesimalrechnung, Wahrscheinlichkeit, lineare Algebra, Statistik und Hypothesentests und zeigt Ihnen, wie diese Mathe-Basics beispielsweise in der linearen und logistischen Regression und in neuronalen Netzen eingesetzt werden. Zusätzlich erhalten Sie Einblicke in den aktuellen Stand der Data Science und erfahren, wie Sie dieses Wissen für Ihre Karriere als Data Scientist nutzen. - Verwenden Sie Python-Code und Bibliotheken wie SymPy, NumPy und scikit-learn, um grundlegende mathematische Konzepte wie Infinitesimalrechnung, lineare Algebra, Statistik und maschinelles Lernen zu erkunden - Verstehen Sie Techniken wie lineare und logistische Regression und neuronale Netze durch gut nachvollziehbare Erklärungen und ein Minimum an mathematischer Terminologie - Wenden Sie deskriptive Statistik und Hypothesentests auf einen Datensatz an, um p-Werte und statistische Signifikanz zu interpretieren - Manipulieren Sie Vektoren und Matrizen und führen Sie Matrixzerlegung durch - Vertiefen Sie Ihre Kenntnisse in Infinitesimal- und Wahrscheinlichkeitsrechnung, Statistik und linearer Algebra und wenden Sie sie auf Regressionsmodelle einschließlich neuronaler Netze an - Erfahren Sie, wie Sie Ihre Kenntnisse und Fähigkeiten in der Datenanalyse optimieren und gängige Fehler vermeiden, um auf dem Data-Science-Arbeitsmarkt zu überzeugen

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 444

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Lob für »Mathe-Basics für Data Scientists«

In der Kakofonie, die die derzeitige Bildungslandschaft im Bereich der Data Science darstellt, hebt sich dieses Buch als Ressource mit vielen klaren, praktischen Beispielen für die Grundlagen ab, die erforderlich sind, um Daten zu verstehen und mit ihnen zu arbeiten. Da es in diesem Buch um die Basics geht, wird der Leser in die Lage versetzt, alle Aufgaben im Bereich Data Science mit einem stabilen Hintergrundwissen zu ihren Bausteinen zu bewältigen.

– Vicki Boykis, Senior Machine Learning Engineer bei Tumblr

Data Science baut auf linearer Algebra, Wahrscheinlichkeitstheorie und Analysis auf. Thomas Nield führt uns fachkundig durch all diese Themen – und mehr –, um eine solide Grundlage für das Verständnis der mathematischen Instrumente der Data Science zu schaffen.

– Mike X Cohen, sincXpress

Als Data Scientist verwenden wir täglich anspruchsvolle Modelle und Algorithmen. Dieses Buch entmystifiziert die Mathematik, die dahintersteckt, sodass sich diese Modelle und Algorithmen leichter begreifen und implementieren lassen.

– Siddharth Yadav, freiberuflicher Data Scientist

Ich wünschte, ich hätte früher schon mit diesem Buch arbeiten können! Thomas Nield hat es geschafft, komplexe mathematische Themen auf eine leicht verdauliche und fesselnde Art zu erklären. Ein erfrischender Ansatz sowohl für die Mathematik als auch die Data Science – er erklärt nahtlos die grundlegenden mathematischen Konzepte und ihre unmittelbaren Anwendungen beim maschinellen Lernen. Dieses Buch ist Pflichtlektüre für alle angehenden Data Scientists.

– Tatiana Ediger, freiberuflich tätig als Data Scientist, Kursentwicklerin und Dozentin

Copyright und Urheberrechte:Die durch die dpunkt.verlag GmbH vertriebenen digitalen Inhalte sind urheberrechtlich geschützt. Der Nutzer verpflichtet sich, die Urheberrechte anzuerkennen und einzuhalten. Es werden keine Urheber-, Nutzungs- und sonstigen Schutzrechte an den Inhalten auf den Nutzer übertragen. Der Nutzer ist nur berechtigt, den abgerufenen Inhalt zu eigenen Zwecken zu nutzen. Er ist nicht berechtigt, den Inhalt im Internet, in Intranets, in Extranets oder sonst wie Dritten zur Verwertung zur Verfügung zu stellen. Eine öffentliche Wiedergabe oder sonstige Weiterveröffentlichung und eine gewerbliche Vervielfältigung der Inhalte wird ausdrücklich ausgeschlossen. Der Nutzer darf Urheberrechtsvermerke, Markenzeichen und andere Rechtsvorbehalte im abgerufenen Inhalt nicht entfernen.

Mathe-Basics für Data Scientists

Lineare Algebra, Statistikund Wahrscheinlichkeitsrechnungfür die Datenanalyse

Thomas Nield

Deutsche Übersetzung vonFrank Langenau

Thomas Nield

Lektorat: Alexandra Follenius

Übersetzung: Frank Langenau

Copy-Editing: Sibylle Feldmann, www.richtiger-text.de

Satz: III-satz, www.drei-satz.de

Herstellung: Stefanie Weidner, Frank Heidt

Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print

978-3-96009-215-5

PDF

978-3-96010-764-4

ePub

978-3-96010-765-1

mobi

978-3-96010-766-8

1. Auflage 2024

Translation Copyright © 2024 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Authorized German translation of the English edition of Essential Math for Data Science, ISBN 9781098102937 © 2022 Thomas Nield. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

Hinweis:

Dieses Buch wurde mit mineralölfreien Farben auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie. Hergestellt in Deutschland.

Schreiben Sie uns:

Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag noch Übersetzer können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Inhalt

Einführung

1Grundlegende Mathematik und Infinitesimalrechnung

Zahlentheorie

Reihenfolge der Operationen

Variablen

Funktionen

Summationen

Potenzen

Logarithmen

Eulersche Zahl und natürliche Logarithmen

Die eulersche Zahl

Natürliche Logarithmen

Grenzwerte

Ableitungen

Partielle Ableitungen

Die Kettenregel

Integrale

Zum Schluss

Übungen

2Wahrscheinlichkeit

Wahrscheinlichkeit verstehen

Wahrscheinlichkeitsrechnung vs. Statistik

Wahrscheinlichkeitsmathematik

Kombinierte Wahrscheinlichkeiten

Vereinigungswahrscheinlichkeiten

Bedingte Wahrscheinlichkeit und der Satz von Bayes

Kombinierte und vereinigte bedingte Wahrscheinlichkeiten

Binomialverteilung

Beta-Verteilung

Zum Schluss

Übungen

3Deskriptive und inferenzielle Statistik

Was sind Daten?

Deskriptive versus inferenzielle Statistik

Grundgesamtheiten, Stichproben und Verzerrungen

Deskriptive Statistik

Mittelwert und gewichteter Mittelwert

Median

Modus

Varianz und Standardabweichung

Die Normalverteilung

Die inverse CDF

z-Werte

Inferenzielle Statistik

Der zentrale Grenzwertsatz

Konfidenzintervalle

Was sind p-Werte?

Hypothesentests

Die t-Verteilung: mit kleinen Stichproben umgehen

Big Data und der Zielscheibenfehler

Zum Schluss

Übungen

4Lineare Algebra

Was ist ein Vektor?

Vektoren hinzufügen und kombinieren

Vektoren skalieren

Lineare Hülle (Spann) und lineare Abhängigkeit

Lineare Transformationen

Basisvektoren

Matrix-Vektor-Multiplikation

Matrixmultiplikation

Determinanten

Spezielle Matrixtypen

Quadratische Matrix

Identitätsmatrix

Inverse Matrix

Diagonalmatrix

Dreiecksmatrix

Dünnbesetzte Matrix

Gleichungssysteme und inverse Matrizen

Eigenvektoren und Eigenwerte

Zum Schluss

Übungen

5Lineare Regression

Eine einfache lineare Regression

Einfache lineare Regression mit scikit-learn

Residuen und Fehlerquadrate

Die beste Anpassungsgerade suchen

Gleichung in geschlossener Form

Techniken mit inversen Matrizen

Gradientenabstieg

Überanpassung und Varianz

Stochastischer Gradientenabstieg

Der Korrelationskoeffizient

Statistische Signifikanz

Bestimmtheitsmaß

Standardfehler der Schätzung

Vorhersageintervalle

Aufteilung in Trainings- und Testdaten

Multiple lineare Regression

Zum Schluss

Übungen

6Logistische Regression und Klassifikation

Logistische Regression verstehen

Eine logistische Regression durchführen

Logistische Funktion

Die logistische Kurve anpassen

Multivariable logistische Regression

Das Wesen der Log-Odds

R-Quadrat

p-Werte

Aufteilung in Trainings- und Testdaten

Wahrheitsmatrizen

Der Satz von Bayes und Klassifizierung

ROC-Kurve/Fläche unter der Kurve

Klassenungleichgewicht

Zum Schluss

Übungen

7Neuronale Netze

Wann man neuronale Netze und Deep Learning verwendet

Ein einfaches neuronales Netz

Aktivierungsfunktionen

Forward Propagation

Backpropagation

Die Ableitungen von Gewichts- und Schwellenwerten berechnen

Stochastischer Gradientenabstieg

Die Bibliothek scikit-learn

Grenzen von neuronalen Netzen und Deep Learning

Zum Schluss

Übung

8Karriereberatung und der Weg in die Zukunft

Data Science – neu definiert

Data Science – ein geschichtlicher Abriss

Ihr eigenes Profil schärfen

SQL-Kenntnisse

Programmierkenntnisse

Datenvisualisierung

Branchenkenntnisse

Produktives Lernen

Praktiker vs. Ratgeber

Worauf Sie bei Data-Science-Jobs achten sollten

Rollendefinition

Organisatorischer Fokus und Akzeptanz

Genügend Ressourcen

Vernünftige Ziele

Mit bestehenden Systemen konkurrieren

Eine Rolle ist nicht das, was Sie erwartet haben

Existiert Ihr Traumjob nicht?

Wie geht es weiter?

Zum Schluss

Anhang AErgänzende Themen

LaTeX-Rendering mit SymPy

Binomialverteilung von Grund auf

Beta-Verteilung von Grund auf

Den Satz von Bayes ableiten

CDF und inverse CDF von Grund auf

Ereigniswahrscheinlichkeit mit e im Zeitverlauf vorhersagen

Bergsteigeralgorithmus und lineare Regression

Bergsteigeralgorithmus und logistische Regression

Eine kurze Einführung in lineare Optimierung

MNIST-Klassifizierer mit scikit-learn

Anhang BLösungen zu den Übungen

Index

Einführung

In den letzten zehn Jahren hat das Interesse an angewandter Mathematik und Statistik in unserem Arbeits- und Lebensalltag zugenommen. Warum ist das so? Hat es mit dem gestiegenen Interesse an Data Science zu tun, das von der Harvard Business Review als der »sexiest Job des 21. Jahrhunderts« deklariert wurde (https://oreil.ly/GslO6)? Oder ist es das Versprechen, dass maschinelles Lernen und künstliche Intelligenz unser Leben verändern werden? Liegt es daran, dass die Schlagzeilen mit Studien, Umfragen und Forschungsergebnissen überschwemmt werden, wir aber nicht wissen, wie wir solche Behauptungen überprüfen sollen? Oder ist es das Versprechen, dass »selbstfahrende« Autos und Roboter in naher Zukunft Arbeitsplätze automatisieren werden?

Ich behaupte, dass die Disziplinen Mathematik und Statistik aufgrund der zunehmenden Verfügbarkeit von Daten das breite Interesse der Öffentlichkeit geweckt haben und wir Mathematik, Statistik und maschinelles Lernen benötigen, um diese Daten sinnvoll zu nutzen. Ja, wir haben wissenschaftliche Werkzeuge, maschinelles Lernen und andere Instrumente der Automatisierung, die wie die Sirenen nach uns rufen. Diesen »Blackboxes«, Geräten und Programmen vertrauen wir blindlings; wir verstehen sie zwar nicht, aber wir nutzen sie trotzdem.

Man ist zwar geneigt zu glauben, dass Computer schlauer sind als wir (und dieser Gedanke wird häufig vermarktet), aber die Realität ist weit davon entfernt. Diese Diskrepanz kann auf vielen Ebenen heikel sein. Wollen Sie wirklich, dass ein Algorithmus oder eine KI eine Strafe verhängt oder ein Fahrzeug steuert, dass aber niemand, nicht einmal der Entwickler, erklären kann, wie es zu einer bestimmten Entscheidung gekommen ist? Erklärbarkeit ist die nächste Stufe der statistischen Datenverarbeitung und der KI. Diese kann erst dann beginnen, wenn wir die Blackbox öffnen und die Mathematik enthüllen.

Vielleicht fragen Sie sich auch, wieso eine Entwicklerin nicht wissen kann, wie ihr eigener Algorithmus funktioniert. Darauf gehen wir in der zweiten Hälfte des Buchs ein, wenn wir Techniken des maschinellen Lernens erörtern und aufzeigen, warum wir die Mathematik hinter den von uns erstellten Blackboxes verstehen müssen.

Ein weiterer Punkt ist, dass der Grund für die massenhafte Datenerfassung vor allem in den vernetzten Geräten und ihrer Präsenz in unserem Alltag liegt. Wir nutzen das Internet nicht mehr nur über einen Desktop- oder Laptop-Computer. Wir haben es jetzt auch in unseren Smartphones, Autos und Haushaltsgeräten dabei. Dies hat in den letzten zwei Jahrzehnten einen fast unmerklichen Wandel in Gang gesetzt. Daten haben sich von einem operativen Werkzeug zu etwas entwickelt, das für Ziele gesammelt und analysiert wird, die noch gar nicht genau umrissen sind. Eine Smartwatch sammelt ständig Daten über unsere Herzfrequenz, die Atmung, die zu Fuß zurückgelegte Strecke und andere Kennwerte. Dann lädt sie die Daten hoch in eine Cloud, um sie zusammen mit anderen Usern zu analysieren. Unsere Fahrgewohnheiten werden von computergesteuerten Autos erfasst und von den Herstellern genutzt, um Daten für selbstfahrende Fahrzeuge zusammenzutragen. Sogar »intelligente Zahnbürsten« finden ihren Weg in die Drogerien. Sie zeichnen die Putzgewohnheiten auf und speichern diese Daten in der Cloud. Es lässt sich darüber streiten, ob die Daten der intelligenten Zahnbürste nützlich und wichtig sind!

Dieses ganze Datensammeln durchdringt jeden Winkel unseres Lebens. Das kann erdrückend sein, und man könnte ein ganzes Buch über Bedenken hinsichtlich Datenschutz und Ethik schreiben. Aber die Verfügbarkeit von Daten bietet auch die Möglichkeit, Mathematik und Statistik auf neue Art und Weise zu nutzen und sich außerhalb des akademischen Umfelds stärker zu engagieren. Wir können mehr über die menschliche Erfahrung lernen, das Design und die Anwendung von Produkten verbessern sowie kommerzielle Strategien optimieren. Wenn Sie die in diesem Buch vorgestellten Ideen verstehen, werden Sie den Wert erschließen können, der in unserer Daten sammelnden Infrastruktur steckt. Das bedeutet nicht, dass Daten und statistische Werkzeuge ein Allheilmittel sind, um alle Probleme dieser Welt zu lösen, aber sie bieten uns neue Werkzeuge, die wir nutzen können. Manchmal ist es ebenso wertvoll, bestimmte Datenprojekte als Irrwege anzuerkennen und sich klarzumachen, dass die Anstrengungen an anderer Stelle besser investiert sind.

Die zunehmende Verfügbarkeit von Daten hat bewirkt, dass Data Science und maschinelles Lernen zu gefragten Berufen geführt haben. Wir definieren die Mathe-Basics als einen Umgang mit Wahrscheinlichkeit, linearer Algebra, Statistik und maschinellem Lernen. Wenn Sie eine Karriere in den Bereichen Data Science, maschinelles Lernen oder Softwaretechnik anstreben, sind diese Themen unerlässlich. Ich werde nur so viel Hochschulmathematik, Analysis und Statistik einbringen, wie es für das Verständnis der Blackbox-Bibliotheken – mit denen Sie arbeiten werden – unerlässlich ist.

Mit diesem Buch möchte ich Leserinnen und Lesern verschiedene Bereiche der Mathematik, Statistik und des maschinellen Lernens näherbringen, die auf reale Probleme anwendbar sind. Die ersten vier Kapitel befassen sich mit grundlegenden mathematischen Konzepten, darunter praktische Analysis, Wahrscheinlichkeit, lineare Algebra und Statistik. Die letzten drei Kapitel sind dem maschinellen Lernen gewidmet. Der ultimative Zweck eines Lehrbuchs über maschinelles Lernen ist es, alles zu integrieren, was wir lernen, und praktische Einblicke in die Verwendung von maschinellem Lernen und statistischen Bibliotheken über ein Blackbox-Verständnis hinaus zu demonstrieren.

Um den Beispielen zu folgen, benötigen Sie lediglich einen Windows-/Mac-/Linux-Computer und eine Python-3-Umgebung Ihrer Wahl. Die wichtigsten Python-Bibliotheken, die Sie benötigen werden, sind numpy, scipy, sympy und sklearn. Wenn Sie mit Python nicht vertraut sind: Keine Angst, es handelt sich um eine einfache und übersichtliche Programmiersprache, die sich der Unterstützung durch riesige Lernressourcen erfreut. Unter anderem empfehle ich folgende Quellen:

Einführung in Data Science: Grundprinzipien der Datenanalyse mit Python, 2. Auflage, von Joel Grus (O’Reilly)

Das zweite Kapitel dieses Buchs ist der beste Crashkurs in Python, der mir je untergekommen ist. Selbst wenn Sie noch nie zuvor ein Programm geschrieben haben, gelingt es Joel auf fantastische Art und Weise, Ihnen in kürzester Zeit einen effektiven Einstieg in Python zu ermöglichen. Zudem ist es ein großartiges Buch, das man im Regal stehen hat und mit dem man sein mathematisches Wissen anwenden kann!

Python for the Busy Java Developer von Deepak Sarda (Apress)

Wenn Sie als Softwareentwicklerin oder Softwareentwickler von einem statisch typisierten, objektorientierten Programmierhintergrund kommen, sollten Sie zu diesem Buch greifen. Als jemand, der mit Java zu programmieren begonnen hat, schätze ich es sehr, wie Deepak die Features von Python insbesondere für Java-Entwickler erörtert. Sollten Sie mit .NET, C++ oder anderen C-ähnlichen Sprachen gearbeitet haben, werden Sie Python mit diesem Buch aller Voraussicht nach effektiv lernen.

Dieses Buch wird Sie nicht zu einem Experten machen oder Ihnen einen Doktortitel verleihen. Nach Möglichkeit vermeide ich mathematische Ausdrücke, die mit griechischen Buchstaben gespickt sind, und werde sie stattdessen in einfacher Sprache beschreiben. Aber dieses Buch wird Ihnen den Umgang mit Mathematik und Statistik erleichtern und Ihnen das wesentliche Wissen vermitteln, damit Sie sich in diesen Bereichen erfolgreich bewegen können. Meiner Ansicht nach besteht der Weg zum Erfolg nicht darin, ein profundes Spezialwissen zu einem Thema zu haben, sondern sich mit mehreren Themen auseinanderzusetzen und praktische Kenntnisse zu erwerben. Das ist das Ziel dieses Buchs, und Sie werden gerade genug lernen, um angriffslustig zu sein und diese einst so schwer fassbaren kritischen Fragen zu stellen.

Fangen wir also an!

Konventionen in diesem Buch

In diesem Buch werden folgende typografische Konventionen verwendet:

Kursiv

Kennzeichnet neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen.

Schreibmaschinenschrift

Wird in Programmlistings verwendet und im Fließtext für Programmelemente wie zum Beispiel Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter.

Schreibmaschinenschrift fett

Kennzeichnet Befehle oder andere Texte, die vom Benutzer buchstäblich eingegeben werden sollen.

Schreibmaschinenschrift kursiv

Zeigt Text, der ersetzt werden soll durch Werte, die der Benutzer bereitstellt, oder Werte, die sich aus dem Kontext ergeben.

Tipp

Dieses Element kennzeichnet einen Tipp oder Vorschlag.

Hinweis

Dieses Element kennzeichnet einen allgemeinen Hinweis.

Warnung

Dieses Element steht für eine Warnung oder erhöhte Aufmerksamkeit.

Codebeispiele

Ergänzendes Material (Codebeispiele, Übungen usw.) stehen Ihnen unter https://github.com/thomasnield/machine-learning-demo-data zum Download zur Verfügung.

Dieses Buch soll Ihnen bei Ihrer täglichen Arbeit helfen. Falls Beispielcode zum Buch angeboten wird, dürfen Sie ihn im Allgemeinen in Ihren Programmen und für Dokumentationen verwenden. Sie müssen uns nicht um Erlaubnis bitten, es sei denn, Sie kopieren einen erheblichen Teil des Codes. Wenn Sie zum Beispiel ein Programm schreiben, das einige Codeblöcke aus diesem Buch verwendet, benötigen Sie keine Erlaubnis. Sollten Sie aber Beispiele aus O’Reilly-Büchern verkaufen oder verbreiten, ist eine Erlaubnis erforderlich. Wenn Sie eine Frage beantworten und dabei dieses Buch oder Beispielcode aus diesem Buch zitieren, brauchen Sie wiederum keine Erlaubnis. Aber lassen Sie erhebliche Teile des Beispielcodes aus diesem Buch in die Dokumentation Ihres Produkts einfließen, ist eine Erlaubnis einzuholen.

Wir schätzen eine Quellenangabe, verlangen sie aber nicht. Eine Quellenangabe umfasst in der Regel Titel, Autor, Verlag und ISBN, zum Beispiel: »Mathe-Basics für Data Scientists von Thomas Nield, O’Reilly 2024, ISBN 978-3-96009-215-5.«

Wenn Sie der Meinung sind, dass Sie die Codebeispiele in einer Weise verwenden, die über die oben erteilte Erlaubnis hinausgeht, kontaktieren Sie uns bitte unter [email protected].

Danksagungen

An diesem Buch haben über ein Jahr lang viele Menschen mitgearbeitet. Zunächst möchte ich meiner Frau Kimberly für ihre Unterstützung danken, während ich dieses Buch geschrieben habe, insbesondere in der Zeit bis zum ersten Geburtstag unseres Sohnes Wyatt. Kimberly ist eine großartige Ehefrau und Mutter, und alles, was ich jetzt tue, ist für meinen Sohn und die bessere Zukunft unserer Familie.

Ich möchte meinen Eltern dafür danken, dass sie mich gelehrt haben, über meine Grenzen hinaus zu kämpfen und niemals das Handtuch zu werfen. Dem Thema dieses Buchs entsprechend bin ich froh, dass sie mich ermutigt haben, mich auf der Highschool und am College ernsthaft mit Analysis zu beschäftigen, und niemand kann ein Buch schreiben, ohne regelmäßig seine Komfortzone zu verlassen.

Dem fantastischen Team von Lektorinnen und Lektoren und Mitarbeitern bei O’Reilly möchte ich danken, die mir immer wieder Türen geöffnet haben, seit ich 2015 mein erstes Buch über SQL geschrieben habe. Es war fantastisch, mit Jill Leonard und Jessica Haberman zusammenzuarbeiten, um dieses Buch zu schreiben und zu veröffentlichen. Zudem bin ich dankbar, dass Jess an mich gedacht hat, als dieses Thema aufkam.

Ein Dank geht an meine Kollegen an der University of Southern California (USC) im Programm für Flugsicherheit. Die Möglichkeit, Pionierarbeit im Bereich der Sicherheit von Systemen mit künstlicher Intelligenz zu leisten, hat mir Einsichten vermittelt, die nur wenige Menschen haben, und ich freue mich darauf, zu sehen, was wir in den kommenden Jahren noch erreichen werden. Arch, Sie versetzen mich immer wieder in Erstaunen, und ich befürchte, dass die Welt an dem Tag, an dem Sie in den Ruhestand gehen, aufhören wird zu funktionieren.

Zu guter Letzt möchte ich meinem Bruder Dwight Nield und meinem Freund Jon Ostrower danken, die Partner in meinem Unternehmen Yawman Flight sind. Ein Start-up zu gründen, ist schwer, und ihre Hilfe hat mir wertvolle Zeit verschafft, um dieses Buch zu schreiben. Jon hat mich an der USC an Bord geholt, und seine unermüdlichen Leistungen in der Welt des Luftfahrtjournalismus sind schlichtweg bemerkenswert (suchen Sie nach seinem Namen!). Es ist mir eine Ehre, dass sie eine Erfindung, die ich in meiner Garage begonnen habe, genauso leidenschaftlich verfolgen wie ich, und ich glaube nicht, dass ich diese ohne sie in die Welt bringen könnte.

Allen, die ich hier nicht erwähnt habe, danke ich für die großen und kleinen Dinge, die ihr getan habt. Meistens bin ich dafür belohnt worden, dass ich neugierig war und Fragen gestellt habe. Das halte ich nicht für selbstverständlich. Wie Ted Lasso sagte: »Sei neugierig, nicht voreingenommen.«

KAPITEL 1

Grundlegende Mathematik und Infinitesimalrechnung

Das erste Kapitel beginnen wir mit der Frage, was Zahlen sind und wie Variablen und Funktionen in einem kartesischen System funktionieren. Dann beschäftigen wir uns mit Potenzen und Logarithmen. Anschließend geht es um die beiden grundlegenden Operationen der Infinitesimalrechnung: Ableitungen und Integrale.

Bevor wir in die angewandten Bereiche der grundlegenden Mathematik – zum Beispiel Wahrscheinlichkeit, lineare Algebra, Statistik und maschinelles Lernen – eintauchen, ist es zweckmäßig, einige grundlegende Konzepte der Mathematik und Infinitesimalrechnung aufzufrischen. Doch das sollte nicht dazu führen, dass Sie dieses Buch fallen lassen und schreiend davonlaufen. Keine Sorge! Ich werde Ihnen zeigen, wie man Ableitungen und Integrale für eine Funktion auf eine Art und Weise berechnet, die Ihnen im Studium wahrscheinlich nicht beigebracht wurde. Denn wir haben PyTorch auf unserer Seite, nicht nur Bleistift und Papier. Selbst wenn Sie mit Ableitungen und Integralen nicht vertraut sind, müssen Sie sich nicht abschrecken lassen.

Diese Themen werde ich so knapp und praktisch wie möglich halten und mich nur auf das konzentrieren, was Ihnen in späteren Kapiteln helfen wird und was unter den Begriff »grundlegende Mathematik« fällt.

Dies ist kein kompletter Crashkurs in Mathematik!

Dieses Buch bietet keineswegs einen umfassenden Überblick über die Mathematik an Gymnasien und Universitäten. Wenn Sie das wollen, empfiehlt sich das Buch No Bullshit Guide to Math and Physics von Ivan Savov. Die ersten Kapitel enthalten den besten Crashkurs zur Mathematik auf Abitur- und Universitätsniveau, den ich je gesehen habe. Das Buch Mathematics 1001 von Dr. Richard Elwes bietet ebenfalls großartige Inhalte und zudem Erklärungen in leicht verdaulichen Häppchen.

Zahlentheorie

Was sind Zahlen? Ich verspreche, in diesem Buch nicht zu philosophisch zu werden, aber sind Zahlen nicht ein Konstrukt, das wir definiert haben? Warum haben wir die Ziffern 0 bis 9 und nicht mehr als diese? Warum haben wir Brüche und Dezimalzahlen und nicht einfach nur ganze Zahlen? Dieser Bereich der Mathematik, in dem wir über Zahlen nachsinnen und warum wir sie in einer bestimmten Weise konstruiert haben, wird als Zahlentheorie bezeichnet.

Die Zahlentheorie geht bis in die Antike zurück, als Mathematiker verschiedene Zahlensysteme untersucht haben, und sie erklärt, warum wir sie so akzeptieren, wie wir es heute tun. Hier sind verschiedene Zahlensysteme, die Sie vielleicht kennen:

Natürliche Zahlen

Das sind die Zahlen 1, 2, 3, 4, 5 … usw. Zu dieser Klasse gehören nur positive Zahlen. Die natürlichen Zahlen sind das älteste bekannte System, denn bereits die Höhlenmenschen ritzten Striche auf Knochen und Höhlenwände, um Aufzeichnungen zu machen.

Ganze Zahlen

Zusätzlich zu den natürlichen Zahlen wurde später das Konzept der »0« hinzugefügt. Wir sprechen dann von ganzen Zahlen. Die Babylonier entwickelten auch die nützliche Idee, leere »Spalten« für Zahlen größer als 9 freizuhalten, wie zum Beispiel »10«, »1.000« oder »1.090«. Die Nullen zeigen an, dass die Spalten nicht durch einen Wert belegt sind.

Integer-Zahlen

Integer-Zahlen umfassen sowohl positive als auch negative natürliche Zahlen sowie die 0. Wir mögen sie für selbstverständlich halten, Mathematiker der Antike jedoch misstrauten der Idee von negativen Zahlen zutiefst. Aber wenn man 5 von 3 subtrahiert, erhält man –2. Dies ist vor allem im Finanzwesen nützlich, wenn wir Gewinne und Verluste messen. Im Jahr 628 n. Chr. zeigte ein indischer Mathematiker namens Brahmagupta, warum negative Zahlen notwendig sind, damit die Arithmetik mit der quadratischen Formel möglich wurde. Daher wurden ganze Zahlen – positive und negative – akzeptiert.

Rationale Zahlen

Irrationale Zahlen

Irrationale Zahlen lassen sich nicht als Bruch ausdrücken. Dieser Klasse gehören die berühmte Kreiszahl π an, die Quadratwurzeln einiger Zahlen wie und die eulersche Zahl e, die Sie später noch kennenlernen werden. Diese Zahlen haben eine unendliche Anzahl von Dezimalstellen, etwa so: 3,141592653589793238462…

Hinter den irrationalen Zahlen verbirgt sich eine interessante Geschichte. Der griechische Mathematiker Pythagoras glaubte, dass alle Zahlen rational seien. Er glaubte so fest daran, dass er eine Religion gründete, die die Zahl 10 anbetete. »Segne uns, göttliche Zahl, du, die du Götter und Menschen hervorgebracht hast!«, beteten er und seine Anhänger (warum »10« für ihn so besonders war, weiß ich nicht). Eine Legende besagt, dass einer seiner Anhänger, Hippasus, bewies, dass nicht alle Zahlen rational sind, indem er einfach die Quadratwurzel aus 2 demonstrierte. Dies brachte Pythagoras’ Glaubenssystem schwer durcheinander, und er reagierte, indem er Hippasus im Meer ertränkte.

Unabhängig davon wissen wir heute, dass nicht alle Zahlen rational sind.

Reelle Zahlen

Zu den reellen Zahlen gehören rationale sowie irrationale Zahlen. In der Praxis können Sie bei datenwissenschaftlichen Arbeiten alle Dezimalstellen, mit denen Sie arbeiten, als reelle Zahlen behandeln.

Komplexe und imaginäre Zahlen

Diesem Zahlentyp werden Sie häufiger begegnen, wenn Sie die Quadratwurzel einer negativen Zahl ziehen. Obwohl imaginäre und komplexe Zahlen für bestimmte Problemstellungen von Bedeutung sind, werden wir sie hier meistens meiden.

In der Data Science werden Sie einen Großteil Ihrer Arbeit (wenn nicht die gesamte Arbeit) mit ganzen Zahlen, natürlichen Zahlen, verschiedenen Integer-Typen und reellen Zahlen zu tun haben. Imaginäre Zahlen werden Sie in erweiterten Anwendungsfällen wiederfinden, beispielsweise als Matrixzerlegung, auf die wir in Kapitel 4 zurückkommen.

Komplexe und imaginäre Zahlen

Wenn Sie mehr über imaginäre Zahlen lernen möchten, gibt es eine großartige Playlist auf YouTube mit dem Titel Imaginary Numbers are Real (https://oreil.ly/bvyIq, englisch mit deutschen Untertiteln).

Reihenfolge der Operationen

Hoffentlich sind Sie mit der Reihenfolge der Operationen vertraut, d.h. mit der Reihenfolge, in der Sie die einzelnen Teile eines mathematischen Ausdrucks lösen. Eine kurze Auffrischung: Zuerst werten Sie die Teile in Klammern aus, gefolgt von den Potenzen, dann kommen Multiplikation, Division, Addition und Subtraktion. Aufgrund der zugeordneten Rechenzeichen werden Multiplikation und Division als Punktrechnung und Addition und Subtraktion als Strichrechnung bezeichnet. Die Reihenfolge der Operationen können Sie sich dann mit der Eselsbrücke KlaPo-PuS merken, also Klammern vor Potenzen vor Punkt- und Strichrechnungen. Nehmen Sie zum Beispiel folgenden Ausdruck:

Zuerst werten wir den Inhalt der Klammern (3 + 2) aus, was gleich 5 ist:

Als Nächstes lösen wir die Potenz auf, hier das Quadrat der eben gebildeten Summe 5, also 25:

Nun sind Multiplikation und Division dran. Die Reihenfolge dieser beiden Operationen lässt sich vertauschen, da Division prinzipiell eine Multiplikation (mit Brüchen) ist. Wir multiplizieren 2 mit , was ergibt:

Wir führen die Division aus, d.h. 50 durch 5, was 10 ergibt:

10–4

Zum Schluss ist die Strichrechnung an der Reihe, d.h. Addition und Subtraktion. Im Beispiel ist nur noch 10 – 4 zu rechnen, was 6 liefert:

In Python ausgedrückt, würden wir natürlich einen Wert von 6.0 erhalten, wie Beispiel 1-1 zeigt.

Beispiel 1-1: Einen Ausdruck in Python lösen

Dies mag zwar elementar sein, ist aber dennoch von entscheidender Bedeutung. Auch wenn Sie im Code ohne Klammern das richtige Ergebnis erhalten, empfiehlt es sich, Klammern in komplexen Ausdrücken großzügig zu verwenden, damit Sie immer die Kontrolle über die Auswertungsreihenfolge behalten.

In Beispiel 1-2 gruppiere ich den gebrochenen Teil meines Ausdrucks in Klammern, um ihn deutlich vom Rest des Ausdrucks abzugrenzen.

Beispiel 1-2: Mit Klammern in Python für Klarheit sorgen

Zwar sind beide Beispiele technisch korrekt, doch ist das zweite für uns leicht zu verwirrende Menschen übersichtlicher. Sollten Sie oder jemand anderes Ihren Code überarbeiten, bieten die Klammern einen gut erkennbaren Verweis auf die Reihenfolge der Operationen, wenn Sie Änderungen vornehmen. Dies bietet zudem eine Verteidigungslinie gegenüber Codeänderungen, um Fehler zu vermeiden.

Variablen

Wenn Sie bereits Skripte in Python oder einer anderen Programmiersprache geschrieben haben, wissen Sie schon in etwa, was eine Variable ist. In der Mathematik versteht man unter einer Variablen einen benannten Platzhalter für eine nicht festgelegte oder unbekannte Zahl.

Vielleicht haben Sie eine Variable x, die eine beliebige reelle Zahl darstellt, und Sie können diese Variable multiplizieren, ohne zu deklarieren, was sie ist. In Beispiel 1-3 nehmen wir eine Variableneingabe x von einem Benutzer und multiplizieren sie mit 3.

Beispiel 1-3: Eine Variable in Python, die dann multipliziert wird

Für bestimmte Variablentypen gibt es einige Standardvariablennamen. Wenn Ihnen diese Variablennamen und Konzepte nicht vertraut sind, keine Angst! Einige Leser werden aber erkennen, dass wir Theta (θ) verwenden, um Winkel zu bezeichnen, und Beta (β) für einen Parameter in einer linearen Regression. Griechische Buchstaben ergeben heikle Variablennamen in Python, wie Beispiel 1-4 zeigt.

Beispiel 1-4: Griechische Variablennamen in Python

Beachten Sie auch, dass sich Variablennamen indizieren lassen, sodass Sie mehrere Instanzen eines Variablennamens verwenden können. Aus praktischen Gründen behandeln wir diese als eigenständige Variablen. Wenn Sie die Variablen x1, x2 und x3 sehen, nehmen Sie sie einfach als drei separate Variablen, wie Beispiel 1-5 zeigt.

Beispiel 1-5: Indizierte Variablen in Python ausdrücken

Funktionen

Funktionen sind Ausdrücke, die Beziehungen zwischen zwei oder mehr Variablen definieren. Genauer gesagt, übernimmt eine Funktion Eingabevariablen (auch Domänenvariablen oder unabhängige Variablen genannt), fügt sie in einen Ausdruck ein und liefert dann eine Ausgabevariable (auch abhängige Variable genannt).

Nehmen Sie diese einfache lineare Funktion:

x

2x + 1

y

0

2(0) + 1

1

1

2(1) + 1

3

2

2(2) + 1

5

3

2(3) + 1

7

Funktionen sind nützlich, weil sie eine vorhersehbare Beziehung zwischen Variablen modellieren, beispielsweise wie viele Brände y bei einer Temperatur x zu erwarten sind. Lineare Funktionen werden wir in Kapitel 5 für lineare Regressionen verwenden.

Beispiel 1-6 zeigt, wie wir eine mathematische Funktion deklarieren und in Python durchlaufen können.

Beispiel 1-6: Eine lineare Funktion in Python deklarieren

x

2x+1

y

0,0

2(0)+1

1

0,5

2(0,5)+1

2

1,0

2(1)+1

3

1,5

2(1,5)+1

4

2,0

2(2)+1

5

2,5

2(2,5)+1

6

3,0

2(3)+1

7

Wenn wir auf einer zweidimensionalen Ebene mit zwei Zahlengeraden (einer für jede Variable) zeichnen, sprechen wir von einer kartesischen Ebene, x-y-Ebene oder Koordinatenebene. Wir tragen einen gegebenen x-Wert auf, gehen dann zum entsprechenden y-Wert und zeichnen eine Gerade durch die Schnittpunkte. Beachten Sie, dass es aufgrund der Natur der reellen Zahlen (oder Dezimalzahlen, wenn Sie das bevorzugen) eine unendliche Anzahl von x-Werten gibt. Deshalb erhalten wir bei der Darstellung der Funktion f(x) eine durchgehende Linie ohne Unterbrechungen. Es gibt eine unendliche Anzahl von Punkten auf dieser Linie oder einem Teil dieser Linie.

Wenn Sie dies mit Python plotten wollen, können Sie auf eine Reihe von Diagrammbibliotheken zurückgreifen – von Plotly bis matplotlib. In diesem Buch ziehen wir SymPy für viele Aufgaben heran, und als erste Aufgabe plotten wir eine Funktion. SymPy stützt sich auf matplotlib, sodass dieses Paket installiert sein muss. Andernfalls erscheint ein hässlicher textbasierter Graph auf der Konsole. Danach deklarieren Sie einfach die Variable x für SymPy mithilfe von symbols(), deklarieren Ihre Funktion und plotten sie dann, wie Beispiel 1-7 und Abbildung 1-2 zeigen.

Beispiel 1-7: Eine lineare Funktion in Python mithilfe von SymPy als Graph darstellen

Abbildung 1-2: Mithilfe von SymPy eine lineare Funktion als Graph darstellen

Beispiel 1-8: Diagrammdarstellung einer Potenzfunktion

Der in Abbildung 1-3 dargestellte Verlauf ist keine Gerade, sondern eine glatte, symmetrische Kurve, eine sogenannte Parabel. Sie ist stetig, aber nicht linear, da sie keine Werte auf einer geraden Linie erzeugt. Gekrümmte Funktionen wie diese sind schwieriger zu handhaben, aber Sie werden einige Tricks lernen, damit es nicht ganz so schlimm wird.

Krummlinige Funktionen

Wenn eine Funktion nicht linear und gerade ist, sondern gekrümmt, sprechen wir von einer krummlinigen Funktion.

Abbildung 1-3: Eine Potenzfunktion mithilfe von SymPy grafisch darstellen

Funktionen verarbeiten auch mehrere Eingabevariablen, nicht nur eine. Zum Beispiel können wir eine Funktion mit den unabhängigen Variablen x und y schreiben. Hierbei ist y keine abhängige Variable wie in den vorherigen Beispielen.

Da wir zwei unabhängige Variablen (x und y) und eine abhängige Variable (die Ausgabe von f(x, y)) haben, müssen wir diesen Graphen in drei Dimensionen plotten, um eine Ebene von Werten statt einer Linie zu erzeugen, wie in Beispiel 1-9 und Abbildung 1-4 zu sehen.

Beispiel 1-9: Eine Funktion mit zwei unabhängigen Variablen in Python deklarieren

Abbildung 1-4: Eine dreidimensionale Funktion mithilfe von SymPy grafisch darstellen

Unabhängig davon, wie viele unabhängige Variablen Sie haben, wird Ihre Funktion typischerweise nur eine abhängige Variable ausgeben.

Wenn Sie Lösungen für mehrere abhängige Variablen benötigen, werden Sie wahrscheinlich separate Funktionen für die jeweiligen Variablen verwenden.

Summationen

Ich habe Ihnen versprochen, in diesem Buch keine Gleichungen voll mit griechischen Symbolen zu präsentieren. Allerdings gibt es ein Symbol, das so häufig und nützlich ist, dass es nachlässig wäre, es zu übergehen. Eine Summation kennzeichnet mit dem großen griechischen Sigma Σ, dass die angegebenen Elemente summiert werden.

Möchte ich zum Beispiel die Zahlen 1 bis 5 durchlaufen, jeweils mit 2 multiplizieren und dann summieren, würde ich das mit einem Summenzeichen wie folgt ausdrücken:

Beispiel 1-10 zeigt, wie sich dies in Python umsetzen lässt.

Beispiel 1-10: Eine Summation in Python ausführen

Hier ist i eine Platzhaltervariable für die aufeinanderfolgenden Indexwerte, die wir in der Schleife durchlaufen, jeweils mit 2 multiplizieren und dann aufsummieren. Wenn Sie Daten in einer Schleife verarbeiten, haben Sie es oft mit Variablen wie xi zu tun, die jeweils ein Element in einer Auflistung am Index i kennzeichnet.

Die Funktion range()

Die Funktion range() in Python schließt den Endwert aus. Wenn Sie also range(1,4) aufrufen, durchläuft die Funktion die Zahlen 1, 2 und 3. Die 4 wird als obere Grenze ausgeschlossen.

Es ist auch üblich, mit n die Anzahl der Elemente in einer Auflistung zu bezeichnen, etwa die Anzahl der Datensätze in einem Dataset. Das folgende Beispiel iteriert über eine Auflistung von Zahlen der Größe n, multipliziert die Zahlen jeweils mit 10 und summiert die Ergebnisse:

Der Python-Code in Beispiel 1-11 führt diesen Ausdruck auf einer Auflistung von vier Zahlen aus. Beachten Sie, dass die Elemente in Python (wie in den meisten Programmiersprachen) mit Index 0 beginnend referenziert werden, während wir in der Mathematik bei Index 1 beginnen. Daher verschieben wir unsere Iteration entsprechend, indem wir in unserer Funktion range() bei 0 beginnen.

Beispiel 1-11: Summation von Elementen in Python

Das ist das Wesentliche der Summation. Kurz gesagt, drückt eine Summation Σ aus: »Addiere eine Reihe von Elementen und verwende einen Index i sowie einen Maximalwert n, um die einzelnen Iterationen darzustellen, die in die Summe eingehen. Derartige Ausdrücke werden Sie das ganze Buch hindurch finden.

Potenzen

Potenzen multiplizieren eine Zahl mit sich selbst mit einer festgelegten Anzahl von Malen. Wenn Sie 2 zur dritten Potenz erheben möchten (ausgedrückt als 23 mit dem Exponenten 3), werden drei 2en miteinander multipliziert:

Die Basis ist die Variable oder der Wert, den wir potenzieren, und der Exponent gibt an, wie oft wir den Basiswert multiplizieren. Für den Ausdruck 23 ist 2 die Basis und 3 der Exponent.

Potenzen besitzen einige interessante Eigenschaften. Angenommen, wir multiplizierten x2 und x3. Wenn ich nun die Exponenten mit einer einfachen Multiplikation erweitere und dann zu einem einzelnen Exponenten zusammenfasse, sieht das so aus:

Wenn wir Potenzen mit der gleichen Basis miteinander multiplizieren, addieren wir einfach die Exponenten, was als 1. Potenzgesetz bekannt ist. Lassen Sie mich betonen, dass die Basis aller multiplizierten Potenzen gleich sein muss, damit sich das 1. Potenzgesetz anwenden lässt.

Untersuchen wir als Nächstes die Division. Was passiert, wenn wir x2 durch x5 dividieren?

Wie Sie sehen, können wir bei der Division von x2 durch x5 die beiden x im Zähler und Nenner streichen, sodass 1/x3 übrig bleibt. Ist ein Faktor sowohl im Zähler als auch im Nenner vorhanden, sagen wir, dass wir diesen Faktor kürzen können.

Was der Ausdruck x–3 bedeutet, wollen Sie wissen? Dies ist eine gute Gelegenheit, um negative Exponenten einzuführen, d.h. eine andere Methode, um eine Potenzoperation im Nenner eines Bruchs auszudrücken. So ist 1/x3 dasselbe wie x–3:

Wendet man wieder das 1. Potenzgesetz an, zeigt sich, dass es auch für negative Exponenten gilt. Um ein Gefühl dafür zu bekommen, gehen wir das Problem anders an. Diese Division zweier Potenzen können wir ausdrücken, indem wir den Exponenten »5« von x5 negativ machen und die resultierende Potenz dann mit x2 multiplizieren. Eine negative Zahl zu addieren, ist das Gleiche wie, die Zahl zu subtrahieren. Daher gilt das 1. Potenzgesetz für Potenzen mit gleicher Basis ebenfalls, wie im folgenden Beispiel:

Zu guter Letzt: Können Sie herausfinden, warum die Potenz einer beliebigen Basis zum Exponenten 0 gleich 1 ist?

Am besten gelangt man zur Lösung dieser Frage, wenn man sich überlegt, dass jede Zahl dividiert durch sich selbst gleich 1 ist. Beim Ausdruck x3/x3 ist es algebraisch offensichtlich, dass er sich auf 1 reduziert. Aber dieser Ausdruck wird auch zu x0 ausgewertet:

Wie sieht es nun mit gebrochenen Exponenten aus? Sie sind eine alternative Methode, um Wurzeln darzustellen, beispielsweise die Quadratwurzel. Zur Auffrischung: Der Ausdruck fragt: »Welche Zahl multipliziert mit sich selbst ergibt 4?«, was natürlich 2 ist. Beachten Sie hier, dass 41/2 dasselbe ist wie :

Um den Kreis zu schließen: Was passiert, wenn man die Kubikwurzel aus 8 dreimal mit sich selbst multipliziert? Dies macht die Kubikwurzel rückgängig und liefert 8. Wenn wir die Kubikwurzel alternativ als Potenz mit gebrochenem Exponenten 81/3 ausdrücken, wird klar, dass wir die Exponenten addieren, um einen Exponenten von 1 zu erhalten. Dies macht die Kubikwurzel ebenfalls rückgängig:

Und eine letzte Eigenschaft: Wird eine Potenz potenziert, werden die Exponenten miteinander multipliziert. Diese Eigenschaft ist ebenfalls in den Potenzgesetzen verankert. Somit lässt sich (83)2 zu 86 vereinfachen:

Falls Sie zweifeln, ob das wirklich so ist, erweitern Sie den Ausdruck und wenden das 1. Potenzgesetz an:

Und was bedeutet es, wenn ein gebrochener Exponent einen anderen Zähler als 1 hat, wie zum Beispiel 82/3? Nun, in diesem Fall wird die Kubikwurzel aus 8 gezogen und das Ergebnis dann quadriert:

Ja, auch irrationale Zahlen können im Exponenten stehen, beispielsweise 8π, was 687,2913 ergibt. Dies mag nicht gleich einleuchten, was auch verständlich ist! Aus Zeitgründen gehen wir nicht näher darauf ein, da hier außerdem Kenntnisse in der Infinitesimalrechnung erforderlich sind. Im Grunde aber können wir irrationale Exponenten berechnen, indem wir uns einer rationalen Zahl annähern. Praktisch gehen Computer genauso vor, da sie ohnehin nur eine begrenzte Anzahl an Dezimalstellen berechnen können.

Zum Beispiel hat π eine unendliche Anzahl von Dezimalstellen. Doch wenn wir mit 3,1415926535 die ersten 11 Stellen nehmen, können wir π als Rationalzahl 31415926535 / 10000000000 annähern. Damit erhalten wir ungefähr 687,2913, was in etwa mit jedem Taschenrechner übereinstimmen sollte:

Logarithmen

Ein Logarithmus ist eine mathematische Funktion, die eine Potenz für eine bestimmte Zahl und Basis ermittelt. Das mag zunächst uninteressant klingen, doch der Logarithmus hat tatsächlich viele Anwendungen. Von Erdbebenmessungen bis zur Lautstärkeeinstellung Ihrer Stereoanlage – der Logarithmus ist überall zu finden. Auch beim maschinellen Lernen und in der Data Science ist er gebräuchlich. Tatsächlich werden Logarithmen in Kapitel 6 bei der logistischen Regression eine Schlüsselrolle spielen.

Beginnen Sie Ihre Überlegungen mit der Frage: »Welche Potenz von 2 ergibt 8?« Mathematisch kann man dies zum Beispiel mit einem x für den Exponenten ausdrücken:

Wie Sie in diesem Logarithmusausdruck sehen, suchen wir eine Potenz x zur Basis 2, die uns 8 liefert. In einer allgemeineren Form kann man einen variablen Exponenten als Logarithmus ausdrücken:

In der Sprache der Algebra ist dies eine Möglichkeit, das x zu isolieren, was wichtig ist, um nach x aufzulösen. Beispiel 1-12 zeigt, wie wir diesen Logarithmus in Python berechnen.

Beispiel 1-12: Die Funktion log in Python verwenden

Wenn Sie einer log()-Funktion kein Argument für die Basis übergeben, wird auf einer Plattform wie Python normalerweise eine Standardbasis angenommen. In einigen Bereichen wie zum Beispiel bei Erdbebenmessungen ist die Standardbasis für den Logarithmus 10. Dagegen ist in Data Science die eulersche Zahl e als Standardbasis üblich. Python verwendet die eulersche Zahl, auf die ich in Kürze eingehen werde.

Genau wie Potenzen haben Logarithmen mehrere Eigenschaften, wenn es um Multiplikation, Division, Potenzierung usw. geht. Im Hinblick auf Zeit und Thematik beschränke ich mich darauf, diese in Tabelle 1-3 zusammenzufassen. Bei einem Logarithmus geht es vor allem darum, einen Exponenten für eine gegebene Basis zu finden, sodass sich eine bestimmte Zahl ergibt.

Möchten Sie sich mit Logarithmen näher befassen, können Sie Tabelle 1-3 als Referenz nutzen, da sie das Verhalten von Potenzen und Logarithmen direkt nebeneinanderstellt.

Tabelle 1-3: Potenz- und Logarithmengesetze

Eulersche Zahl und natürliche Logarithmen

Ähnlich wie Pi π gibt es eine besondere Zahl, die in der Mathematik häufig auftaucht, die eulersche Zahl e. Sie hat einen Wert von ungefähr 2,71828 und wird häufig verwendet, weil sich damit viele Probleme mathematisch vereinfachen lassen. Wir werden e im Zusammenhang mit Potenzen und Logarithmen behandeln.

Die eulersche Zahl

Damals in der Highschool hat mein Mathelehrer die eulersche Zahl anhand mehrerer Probleme mit exponentiellen Eigenschaften demonstriert. Schließlich fragte ich: »Mr. Nowe, was ist e überhaupt? Woher kommt es?« Ich erinnere mich, dass ich mit den Erklärungen, die sich auf Kaninchenpopulationen und andere Naturphänomene bezogen, nie ganz zufrieden war. Ich hoffe, dass ich hier eine befriedigendere Erklärung geben kann.

Warum die eulersche Zahl so häufig verwendet wird

Eine Eigenschaft der eulerschen Zahl ist, dass die Ableitung ihrer Exponentialfunktion wieder die Funktion selbst ergibt – eine komfortable Eigenschaft für exponentielle und logarithmische Funktionen. Ableitungen lernen Sie später in diesem Kapitel kennen. In vielen Anwendungen, bei denen die Basis eine untergeordnete Rolle spielt, wählen wir diejenige aus, die die einfachste Ableitung ergibt – und das ist die eulersche Zahl. Auch aus diesem Grund ist e in vielen Data-Science-Funktionen die Standardbasis.

Wenn wir die bisher gelernten Potenzkonzepte kombinieren (oder vielleicht aus einem Finanzlehrbuch übernehmen), können wir eine Formel zur Berechnung der Zinsen aufstellen. Die Formel besteht aus einem Saldo A für eine Anfangsinvestition P, dem Zinssatz r, der Zeitspanne t (Anzahl von Jahren) und den Perioden n (Anzahl der Monate in jedem Jahr). Die Formel sieht so aus:

Wenn wir also jeden Monat aufzinsen, würde das Darlehen auf 148,69 Euro anwachsen:

Mit dem Code in Beispiel 1-13 können Sie diese Rechnung in Python nachvollziehen.

Beispiel 1-13: Zinseszinsberechnung in Python

Doch wie sieht es aus, wenn wir die Zinsen täglich aufzinsen? Was passiert dann? Ändern Sie n in 365:

Aha! Wenn wir unsere Zinsen täglich statt monatlich aufzinsen, würden wir am Ende von zwei Jahren 47,4666 mehr verdient haben. Wir werden nun gierig und zinsen jede Stunde auf, wie die nächste Rechnung zeigt. Bringt uns das noch mehr? Ein Jahr hat 8.760 Stunden, also setzen wir n auf diesen Wert:

Wir haben ungefähr 2 Cent mehr an Zinsen herausgequetscht! Aber erleben wir eine abnehmende Rendite? Versuchen wir, jede Minute zu verzinsen! Da ein Jahr 525.600 Minuten hat, setzen wir n auf diesen Wert:

Okay, wir gewinnen nur immer kleinere Bruchteile eines Cents, je häufiger wir aufzinsen. Wenn ich also diese Zeiträume weiter verkleinere bis hin zur kontinuierlichen Aufzinsung, wohin führt das?

Ich möchte Sie nun mit der eulerschen Zahl e bekannt machen, deren Wert ungefähr 2,71828 beträgt. Mit der folgenden Formel können Sie den Zinseszins »kontinuierlich« berechnen, d.h. ununterbrochen aufzinsen:

Kehren wir zu unserem Beispiel zurück und berechnen wir den Saldo unseres Kredits nach zwei Jahren, wenn wir den Zinseszins kontinuierlich berechnen:

Dies dürfte kaum überraschen, wenn man bedenkt, dass die minutengenaue Aufzinsung einen Saldo von 149,1824584 ergibt. Damit sind wir unserem Wert von 149,1824698 bei kontinuierlicher Aufzinsung sehr nahe gekommen.

Normalerweise verwendet man e als Basis von Potenzen in Python, Excel und auf anderen Plattformen mit der Funktion exp(). Zweifellos werden Sie feststellen, dass e sehr häufig eingesetzt wird. Und e ist die Standardbasis für Potenz- und Logarithmusfunktionen.

Beispiel 1-14 berechnet den kontinuierlichen Zins in Python mit der Funktion exp().

Beispiel 1-14: Den kontinuierlichen Zins in Python berechnen

Wo leiten wir nun diese Konstante e ab? Vergleichen Sie die Zinseszinsformel und die Formel für den kontinuierlichen Zinseszins. Strukturell sehen sie ähnlich aus, weisen aber einige Unterschiede auf:

Technisch gesehen, ist e der Wert, der sich aus dem Ausdruck ergibt, wenn n immer größer wird und sich damit der Unendlichkeit nähert. Experimentieren Sie etwas mit zunehmend größeren Werten für n. Für immer größere n erhalten Sie zum Beispiel folgende Werte:

Je größer Sie n machen, desto geringer wird der Ertrag, und desto mehr konvergiert er gegen den Wert 2,71828, d.h. unser e. Dieses e wird nicht nur bei der Untersuchung von Populationen und deren Wachstum verwendet, es spielt in vielen Bereichen der Mathematik eine Schlüsselrolle. Später im Buch verwenden wir die eulersche Zahl, um Normalverteilungen (Kapitel 3) und logistische Regressionen (Kapitel 6) zu erstellen.

Natürliche Logarithmen

Wenn wir unser e als Basis für einen Logarithmus verwenden, sprechen wir von einem natürlichen Logarithmus. Je nach Plattform können wir mit ln() anstelle von log() einen natürlichen Logarithmus formulieren. Anstatt also einen natürlichen Logarithmus als loge10 auszudrücken, um die Potenz zu finden, um die e erhoben wird, sodass sich 10 ergibt, kürzen wir den Ausdruck zu ln(10):

In Python wird jedoch ein natürlicher Logarithmus durch die Funktion log() spezifiziert. Wie bereits erwähnt, ist e die Standardbasis für die Funktion log(). Lassen Sie das zweite Argument für die Basis leer, sodass die Funktion den Standardwert e als Basis verwendet, wie Beispiel 1-15 zeigt.

Beispiel 1-15: Den natürlichen Logarithmus von 10 in Python berechnen

Wir verwenden e an vielen Stellen in diesem Buch. Experimentieren Sie ruhig mit Potenzen und Logarithmen, indem Sie Excel, Python, Desmos.com oder eine andere Plattform Ihrer Wahl verwenden. Zeichnen Sie Graphen und machen Sie sich vertraut damit, wie diese Funktionen aussehen.

Grenzwerte

Wie wir bei der eulerschen Zahl gesehen haben, ergeben sich einige interessante Ideen, wenn wir eine Eingabevariable dauernd erhöhen oder verringern, wobei sich die Ausgabevariable einem Wert annähert, ihn aber nie erreicht. Lassen Sie uns diese Idee formal untersuchen.

Nehmen wir diese Funktion, die auch in Abbildung 1-5 dargestellt ist:

Abbildung 1-5: Eine Funktion, die sich fortwährend 0 annähert, aber niemals 0 erreicht

Wir betrachten nur positive x-Werte. Wie aus Abbildung 1-5 hervorgeht, nähert sich f(x) mit immer größer werdendem x immer mehr der 0 an. Faszinierenderweise erreicht f(x) nie wirklich 0, sondern nähert sich nur immer weiter an.

Daher besteht das Schicksal dieser Funktion darin, dass sie niemals 0 erreicht, während x ständig bis in die Unendlichkeit zunimmt. Um einen Wert auszudrücken, der beständig angenähert, aber niemals erreicht wird, verwendet man den Grenzwert – oder auch Limes genannt:

Dieser Ausdruck ist zu lesen als »wenn sich x der Unendlichkeit nähert, nähert sich die Funktion 1/x dem Wert 0 (erreicht ihn aber niemals)«. Ein Verhalten der Art »Annähern, aber niemals berühren« ist häufig anzutreffen, insbesondere wenn wir uns mit Ableitungen und Integralen befassen.

Mit SymPy können wir berechnen, welchem Wert wir uns für annähern, wenn x gegen ∞ geht (Beispiel 1-16). Das Zeichen für Unendlichkeit ∞ wird in SymPy mit oo ausgedrückt.

Beispiel 1-16: Grenzwerte mithilfe von SymPy berechnen

Die eulersche Zahl e haben wir ebenfalls auf diese Weise entdeckt. Sie ist das Ergebnis einer ständigen Erweiterung von n in die Unendlichkeit für diese Funktion:

Wenn wir die eulersche Zahl mit Grenzwerten in SymPy berechnen (wie es der folgende Code zeigt), erkennt SymPy lustigerweise sofort, dass es sich um die eulersche Zahl handelt. Wir können evalf() aufrufen, sodass sich der Wert tatsächlich als Zahl anzeigen lässt:

Die Stärke von SymPy

SymPy ist ein leistungsfähiges und fantastisches Computeralgebrasystem (CAS) für Python, das exakte symbolische Berechnungen anstelle von Näherungsberechnungen mit Dezimalzahlen durchführt. Es ist hilfreich in Situationen, in denen Sie »Bleistift und Papier« verwenden würden, um Probleme der Mathematik und der Infinitesimalrechnung zu lösen, dabei aber von der bekannten Python-Syntax profitieren möchten. Anstatt die Quadratwurzel von 2 mit 1,4142135623730951 anzunähern, bewahrt die Bibliothek sie genau als sqrt(2).

Warum also nicht SymPy für alles verwenden, was mit Mathematik zu tun hat? Auch wenn wir diese Bibliothek in diesem Buch durchgängig verwenden werden, ist es dennoch wichtig, dass Sie sich mit der ziffernmäßigen Python-Mathematik auskennen, da scikit-learn und andere Data-Science-Bibliotheken nach diesem Ansatz arbeiten. Computer rechnen mit Dezimalzahlen viel schneller als mit Symbolen. Außerdem streikt SymPy, wenn mathematische Ausdrücke zu groß werden. Behalten Sie aber SymPy als Geheimwaffe in der Hinterhand und erzählen Sie Ihren Kindern im Schul- und Hochschulalter nichts davon. Denn diese können damit buchstäblich ihre Mathe-Hausaufgaben erledigen.

Ableitungen

Kehren wir zu den Funktionen zurück und betrachten wir sie aus der Perspektive der Infinitesimalrechnung, beginnend mit den Ableitungen. Eine Ableitung gibt den Anstieg einer Funktion an und ist nützlich, um die Änderungsrate an jedem Punkt einer Funktion zu messen.

Warum sind Ableitungen für uns wichtig? Häufig werden sie beim maschinellen Lernen und anderen mathematischen Algorithmen verwendet, insbesondere beim Gradientenanstieg. Wenn der Anstieg 0 ist, heißt das, dass wir uns am Minimum oder am Maximum einer Ausgangsvariablen befinden. Dieses Konzept wird später bei der linearen Regression (Kapitel 5), der logistischen Regression (Kapitel 6) und bei neuronalen Netzen (Kapitel 7) von Nutzen sein.

Eine »Steilheit« können wir an jedem Punkt der Kurve messen und durch eine Tangente veranschaulichen. Stellen Sie sich eine Tangente als Gerade vor, die die Kurve an einem bestimmten Punkt »nur berührt«. Außerdem gibt sie den Anstieg an einem bestimmten Punkt an. Eine Tangente können Sie bei einem bestimmten x-Wert grob abschätzen, indem Sie eine Gerade zeichnen, die diesen x-Wert und einen sehr nahen benachbarten x-Wert auf der Funktion schneidet.

Abbildung 1-6: Die Steilheit an einem bestimmten Teil der Funktion beobachten

Abbildung 1-7: Eine grobe Methode, um den Anstieg zu berechnen

Der Anstieg m zwischen zwei Punkten lässt sich schnell mit der einfachen Anstiegsformel berechnen:

Beispiel 1-17 zeigt einen Ableitungsrechner, der in Python implementiert ist.

Beispiel 1-17: Ein Ableitungsrechner in Python

Die gute Nachricht ist nun, dass es einen saubereren Weg gibt, um den Anstieg der Funktion an einer beliebigen Stelle zu berechnen. Wir haben SymPy bereits verwendet, um Graphen darzustellen, aber ich zeige Ihnen auch, wie Sie mit dieser Bibliothek Aufgaben mit der Magie symbolischer Berechnungen erledigen können – wie zum Beispiel das Ermitteln von Ableitungen.

Beispiel 1-18: Eine Ableitung in SymPy berechnen

Wow! Wenn ich also Variablen mit der Funktion symbols()