Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
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:
Seitenzahl: 444
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
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.
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:
978-3-96009-215-5
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
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
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!
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.
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].
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.«
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.
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).
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.
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 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.
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 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:
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
Ä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.
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.
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.
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.
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()