Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Testen Sie Ihre Dollar-Cost-Average-Strategie ganz einfach in Python
Testen Sie Ihre Dollar-Cost-Average-Strategie ganz einfach in Python
In den nächsten etwa 20 Minuten werden wir eine Strategie zur Mittelung der Dollarkosten in Python implementieren. Mit dieser Strategie können Sie die Leistung der Mittelung der Dollarkosten für einen bestimmten Vermögenswert oder Index über einen bestimmten Zeitraum beurteilen. Zur Umsetzung dieser Strategie werden wir ein Tool namens backtesting.py verwenden. Backtesting.py ist ein benutzerfreundliches Framework in Python, das weniger einschüchternd ist als andere Bibliotheken wie Vectorbt oder Backtrader. Wenn Sie neu bei Python sind, ist dies eine großartige Option für Sie.
Die Strategie zur Mittelung der Dollarkosten, die wir implementieren werden, ist relativ einfach, aber ich werde Ihnen auch zeigen, wie Sie sie erweitern können. Unsere Strategie besteht darin, jeden Montag oder Dienstag einen festen Dollarbetrag eines bestimmten Vermögenswerts zu kaufen und diesen Vorgang zu wiederholen, bis uns die Daten ausgehen. Öffnen Sie zunächst ein Terminal und richten Sie eine neue virtuelle Umgebung ein, um eine saubere Umgebung für unsere Implementierung sicherzustellen. Sobald Sie die virtuelle Umgebung eingerichtet haben, installieren Sie das Backtesting-Paket mit pip:
Pip-Installations-Backtesting
Nach der Installation des Pakets können wir mit unserer Python-Datei fortfahren. Wir müssen einige notwendige Module und Daten importieren. Importieren Sie aus dem Backtesting die Backtest- und Strategiemodule. Importieren Sie außerdem einige Dummy-Daten von backtesting.test, insbesondere die Google-Daten. Für die Datenmanipulation benötigen wir außerdem das Pandas-Modul.
Definieren wir nun unsere Strategieklasse. Erstellen Sie eine Klasse namens DCA (Dollar Cost Average), die von der Strategieklasse erbt. Innerhalb dieser Klasse legen wir eine Klassenvariable namens amount_to_invest fest, die den festen Dollarbetrag darstellt, den wir investieren möchten. Stellen Sie den Wert zunächst auf 10 ein.
Als nächstes müssen wir zwei Funktionen innerhalb dieser Klasse definieren: __init__ und next. Die Funktion __init__ wird während der Initialisierung aufgerufen und zur Vorabberechnung aller Werte verwendet, die wir später möglicherweise benötigen. In unserem Fall erstellen wir einen Indikator, der uns den Wochentag anzeigt. Dazu verwenden wir die von backtesting.py bereitgestellte Methode self.indicator. Wir können unseren Indikator als self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek) definieren. Dieser Indikator gibt ein Array der Wochentagswerte (0-6, wobei Montag 0 und Sonntag 6 ist) für unsere Daten zurück.
Kommen wir nun zur nächsten Funktion, in der wir unsere Handelslogik implementieren. Diese Funktion wird für jeden Datenbalken aufgerufen und ermöglicht es uns, Entscheidungen auf Basis der aktuellen Daten zu treffen. In unserem Fall prüfen wir, ob der Wochentag gleich 1 (Dienstag) ist, indem wir if self.day_of_week == 1: verwenden. Wenn es Dienstag ist, werden wir ein Kaufsignal auslösen. Um den Kaufauftrag auszuführen, verwenden wir die von backtesting.py bereitgestellte Funktion self.buy. Wir können die Größe der Kauforder berechnen, indem wir den zu investierenden Betrag durch den aktuellen Schlusskurs des Vermögenswerts dividieren. Um sicherzustellen, dass wir eine ganze Anzahl Aktien kaufen, können wir das Ergebnis mit math.floor abrunden.
Um Bruchteile von Anteilen zu verarbeiten, können wir die Anteile aufteilen, indem wir den Vermögenswert mit einer kleinen Zahl multiplizieren, beispielsweise 10 ** -6. Dadurch werden die Aktien in Mikroaktien aufgeteilt, die später durch Division durch dieselbe kleine Zahl wieder in die tatsächliche Anzahl gekaufter Aktien umgewandelt werden können.
Schließlich müssen wir den Backtest ausführen und die Statistiken extrahieren. Dazu können wir bt.run() verwenden und das Ergebnis einer Variablen namens stats zuweisen. Wir können die Ergebnisse auch mit bt.plot() grafisch darstellen.
Da wir die Verkaufslogik noch nicht implementiert haben, erscheint der Plot als durchgehende Linie ohne Verkaufsargumente. Wir werden das bald beheben. Aber bevor wir das tun, extrahieren wir einige Statistiken aus den Backtest-Ergebnissen.
Dazu verwenden wir die zuvor definierte Statistikvariable. Wir können verschiedene Statistiken wie die Gesamtrendite, die jährliche Rendite, den maximalen Drawdown und mehr ausdrucken.
Fügen Sie gerne weitere Statistiken hinzu, wenn Sie weitere Leistungsmetriken untersuchen möchten.
Kommen wir nun zur Implementierung der Verkaufslogik. Da wir eine Strategie zur Mittelung der Dollarkosten verwenden, verkaufen wir jede Woche den gleichen festen Dollarbetrag. In unserem Fall verkaufen wir freitags.
Hier prüfen wir mithilfe des zuvor erstellten day_of_week-Indikators, ob der Wochentag 4 (Freitag) ist. Wenn es Freitag ist, verkaufen wir den gleichen Dollarbetrag, den wir zuvor gekauft haben, indem wir amount_to_invest durch den aktuellen Schlusskurs dividieren. Dadurch wird sichergestellt, dass wir die entsprechende Anzahl an Aktien verkaufen, die unserem Anlagebetrag entspricht.
Wenn wir nun den Backtest durchführen, sollten wir auf dem Plot Verkaufsargumente sehen, die auf die Freitage hinweisen, an denen wir unsere Position verkaufen.
Experimentieren Sie ruhig mit verschiedenen Variationen dieser Strategie, wie z. B. der Anpassung der Kauf-/Verkaufstage oder der Implementierung zusätzlicher Bedingungen basierend auf Preisbewegungen. Mit diesem Framework können Sie Ihre Strategie ganz einfach erweitern und an Ihre Anforderungen anpassen.
Denken Sie daran, die Variable amount_to_invest anzupassen und verschiedene Vermögensdaten zu untersuchen, um zu sehen, wie die Strategie funktioniert.
Ich hoffe, dies hilft Ihnen bei der Implementierung und Erkundung der Dollar-Cost-Averaging-Strategie mithilfe der backtesting.py-Bibliothek in Python. Lassen Sie mich wissen, wenn Sie weitere Fragen haben!
Benutzerdefinierte Indikatoren in Backtesting.py – Python Deep Dive
Benutzerdefinierte Indikatoren in Backtesting.py – Python Deep Dive
In diesem Video werden wir den Prozess der Erstellung benutzerdefinierter Indikatoren in der backtesting.py-Bibliothek untersuchen. Diese Funktion ermöglicht es uns, jede Handelsstrategie einfach zu testen, indem wir Indikatoren erstellen und Python-Funktionen in ein Format übersetzen, das mit dem Backtesting.py-Ökosystem kompatibel ist.
Bevor wir uns mit den Details der Indikatorerstellung befassen, empfiehlt es sich, sich einen frei verfügbaren Kurs auf YouTube anzusehen, der die meisten Aspekte von backtesting.py abdeckt. Dieser Kurs vermittelt ein umfassendes Verständnis der Bibliothek, was bei der Erkundung der Indikatorerstellung in diesem Video von Vorteil sein wird.
In diesem Video konzentrieren wir uns auf drei verschiedene Beispiele, um verschiedene Indikatorideen abzudecken. Im ersten Beispiel geht es darum, in einem externen Python-Programm generierte Signale zu nutzen und in backtesting.py zu integrieren. Dieser Ansatz ist nützlich, wenn Sie bereits Kauf- und Verkaufssignale von einer externen Quelle haben und diese in Ihren Backtesting-Prozess integrieren möchten.
Das zweite Beispiel demonstriert die Verwendung der Pandas-ta-Bibliothek, um mehrere Werte für jeden Indikator zurückzugeben. Konkret werden wir mit dem Bollinger-Bänder-Indikator arbeiten und zeigen, wie man anstelle eines einfachen Numpy-Arrays einen Datenrahmen zurückgibt, der sowohl das untere als auch das obere Band enthält. Dieses Beispiel verdeutlicht die Vielseitigkeit der Erstellung von Indikatoren mit mehreren Werten.
Abschließend werden wir eine Momentum-Strategie von Hand programmieren, um zu demonstrieren, wie benutzerdefinierte Indikatoren mit reinem Python erstellt werden können. Dieses Beispiel zeigt die Flexibilität der Erstellung von Indikatoren mithilfe der Python-Programmierung und ermöglicht unbegrenzte Möglichkeiten beim Indikatordesign.
Um den Beispielen folgen zu können, stellen Sie sicher, dass Sie die erforderlichen Bibliotheken installiert haben, einschließlich Backtesting, Pandas und Pandas-ta. Nachdem Sie diese Bibliotheken installiert haben, erstellen Sie eine Python-Datei für die Codebeispiele.
Der erste Teil des Codes richtet das notwendige Grundgerüst für die Verwendung von backtesting.py ein. Es importiert die erforderlichen Klassen „Backtest“ und „Strategie“ und importiert Beispieldaten für Google-Aktien aus backtesting.py. Bei den importierten Daten handelt es sich um einen Pandas-Datenrahmen, der tägliche Preisdaten enthält, einschließlich Eröffnungs-, Höchst-, Tiefst-, Schluss- und Volumendaten, mit einem Datum-Uhrzeit-Index.
Für das erste Beispiel gehen wir davon aus, dass Sie bereits einige Signale in einem externen Programm generiert haben und diese an backtesting.py übertragen möchten. Um dies zu demonstrieren, erstellen wir mit Numpy Zufallssignale und fügen sie dem Google-Datenrahmen hinzu. Diese Signale könnten jeden Indikator darstellen, den Sie in Python programmiert haben, wobei -1 ein Verkaufssignal bedeutet, 0 keine Aktion anzeigt und 1 ein Kaufsignal darstellt.
Als Nächstes definieren wir eine Strategieklasse namens „SignalStrategy“, die von der zuvor importierten „Strategy“-Klasse erbt. Diese Klasse ist für die Implementierung der Kauf- und Verkaufslogik basierend auf den Signalen verantwortlich. Die Klasse umfasst die Initialisierungsfunktion „ init “ und die Funktion „next“.
In diesem speziellen Beispiel haben wir nicht viel mit der Funktion „ init “ zu tun, aber es empfiehlt sich, sie einzubeziehen. In der „nächsten“ Funktion wird die Kauf- und Verkaufslogik basierend auf den Signalen implementiert.
Um den Backtest auszuführen, erstellen wir eine Instanz der Backtest-Klasse und übergeben dabei den Google-Datenrahmen und die „SignalStrategy“-Klasse. Wir setzen auch den Cache-Wert auf 10.000. Anschließend führen wir den Backtest durch und speichern die Ergebnisse in der Variablen „stats“. Abschließend drucken wir die Statistiken aus, um die Leistung der Strategie zu sehen.
Das Ausführen des Codes zu diesem Zeitpunkt führt zu keinen Trades, da wir die Kauf- und Verkaufslogik noch nicht implementiert haben. Wir können jedoch auf die Signalwerte zugreifen, indem wir „self.data.signal“ innerhalb der „next“-Funktion verwenden, wodurch wir den neuesten Signalwert erhalten.
Zur Umsetzung der Kauf- und Verkaufslogik überprüfen wir den aktuellen Signalwert und die aktuelle Position. Wenn das Signal 1 ist (Kaufsignal) und keine Position vorhanden ist, führen wir eine Kauforder mit „self.buy“ aus. Wenn das Signal -1 (Verkaufssignal) ist und eine Long-Position besteht, führen wir mit „self.sell“ einen Verkaufsauftrag aus.
Externe Signalstrategie:
Pandas-ta für benutzerdefinierte Indikatoren verwenden:
Denken Sie daran, Platzhalter wie GOOG durch Ihre tatsächlichen Daten zu ersetzen und die Strategien an Ihre spezifischen Anforderungen anzupassen.
Stoppen Sie Verluste in Backtesting.py
Stoppen Sie Verluste in Backtesting.py
In diesem Video werden wir das Konzept der Stop-Losses in der Bibliothek „backtesting.py“ untersuchen. Das Video behandelt drei Beispiele zunehmender Komplexität und Tiefe und vermittelt ein umfassendes Verständnis der Stop-Losses in „backtesting.py“. Der Moderator setzt gewisse Vorkenntnisse zu „backtesting.py“ voraus und empfiehlt, sich einen kostenlosen Kurs auf YouTube für Anfänger anzusehen, bevor er sich mit diesem fortgeschrittenen Thema befasst.
Öffnen Sie zunächst ein Terminal und stellen Sie sicher, dass „backtesting.py“ installiert ist, indem Sie den Befehl „pip install backtesting“ ausführen. Dadurch werden alle erforderlichen Pakete installiert. Erstellen Sie dann eine neue Python-Datei, nennen wir sie „example.py“ und importieren Sie die erforderlichen Module: „backtest“ und „strategy“ aus „backtesting“ und „googledale“ aus „backtesting.test“. „googledale“ ist ein Testdatensatz, der mit „backtesting.py“ geliefert wird.
Als nächstes definieren Sie die Strategieklasse, indem Sie eine Klasse namens „Strats“ erstellen, die von der Klasse „strategy“ erbt. Implementieren Sie die beiden erforderlichen Funktionen: „ init “ und „next“. An diesem Punkt sind wir bereit, unseren Backtest durchzuführen. Initialisieren Sie ein neues Backtest-Objekt „bt“ mit der Funktion „backtest“. Übergeben Sie die „googledale“-Daten und die Strategieklasse, die wir gerade definiert haben. Legen Sie den anfänglichen Barwert auf 10.000 $ fest. Führen Sie abschließend den Backtest mit der Methode „bt.run“ durch und zeichnen Sie die Ergebnisse mit „bt.plot“ auf.
Die Strategieklasse führt zunächst keine Handelsaktionen durch. Um ein einfaches Stop-Loss-Beispiel zu demonstrieren, werden wir einige grundlegende Kauf- und Verkaufslogiken hinzufügen. Wenn wir eine bestehende Position haben, werden wir keine Maßnahmen ergreifen. Wenn wir jedoch keine Position haben, erteilen wir über die Methode „self.to_buy“ einen Kaufauftrag unter Angabe der Positionsgröße (z. B. 1 Aktie). Zusätzlich werden wir einen Stop-Loss und eine Gewinnmitnahme hinzufügen. Der Stop-Loss wird auf 10 Einheiten unter dem aktuellen Schlusskurs festgelegt, während der Take-Profit auf 20 Einheiten über dem aktuellen Schlusskurs festgelegt wird.
Durch die Durchführung des Backtests wird eine große Anzahl von Trades generiert. Sobald ein Trade geschlossen wird, wird beim nächsten Balken ein neuer Trade eröffnet, sofern kein Stop-Loss oder Take-Profit ausgelöst wird. Es ist wichtig zu verstehen, wie „backtesting.py“ mit Stop-Losses und Take-Profits umgeht. In Fällen, in denen sowohl der Stop-Loss als auch der Take-Profit im selben Balken ausgelöst werden, geht die Bibliothek davon aus, dass der Stop-Loss zuerst ausgelöst wird. Dieses Verhalten kann zu unerwarteten Ergebnissen führen, insbesondere wenn es um tägliche Daten geht, die erhebliche Lücken aufweisen können.
Um Stop-Losses effektiver zu verwalten, können wir die Strategieklasse erweitern und die von „backtesting.py“ bereitgestellte „Trailing-Strategie“ verwenden. Importieren Sie die erforderlichen Module, einschließlich „Crossover“ und „Trailing Strategy“ aus „backtesting.lib“. Erben Sie in der neuen Strategieklasse von der „Trailing Strategy“ anstelle der Basisklasse „Strategy“. Überschreiben Sie die Funktion „ init “, um die Funktion „ init “ der übergeordneten Klasse mit „super“ aufzurufen. Verwenden Sie dann die Funktion „set_trailing_stop_loss“ der übergeordneten Klasse, um einen Trailing-Stop-Loss-Wert festzulegen.
Im nächsten Abschnitt des Videos erklärt der Moderator genauer, wie die „Trailing-Strategie“ funktioniert und wie man sie an spezifische Anforderungen anpassen kann. In diesem Abschnitt liegt der Schwerpunkt jedoch auf der Verwendung der „Trailing-Strategie“ in unserem Code. Indem wir die Funktion „ init “ der übergeordneten Klasse aufrufen und die Funktion „set_trailing_stop_loss“ verwenden, können wir die Trailing-Stop-Loss-Funktionalität in unserem Backtest nutzen.
Insgesamt bietet das Video eine Schritt-für-Schritt-Erklärung zur Implementierung von Stop-Losses in „backtesting.py“. Es behandelt einfache Beispiele sowie fortgeschrittenere Konzepte wie das Nachlaufen eines Werts von 10, was bedeutet, dass unser Stop-Loss den Preis um 10 Einheiten hinterherhinkt.
Nachdem wir nun unsere Initialisierungsfunktion eingerichtet haben, fahren wir mit der nächsten Funktion fort. Hier wird der Großteil unserer Handelslogik implementiert. Innerhalb der next-Funktion rufen wir zunächst die next-Funktion der übergeordneten Klasse mit super().next() auf. Dadurch wird sichergestellt, dass die Trailing-Stop-Loss-Funktionalität zusammen mit der anderen Handelslogik ausgeführt wird.
Als Nächstes fügen wir Code hinzu, um unseren Trailing-Stop-Loss anzupassen. Wir verwenden eine bedingte Anweisung, um zu prüfen, ob wir eine offene Position haben (self.position ist nicht None). Wenn wir eine Position haben, aktualisieren wir den Trailing-Stop-Loss mit der Methode update_trailing_sl, die von der Klasse Trailing_Strategy bereitgestellt wird. Diese Methode nimmt den aktuellen Preis als Argument und aktualisiert den Stop-Loss entsprechend.
Backtest-Validierung in Python (durch Zufälligkeit getäuscht)
Backtest-Validierung in Python (durch Zufälligkeit getäuscht)
Wir waren alle schon einmal in der Situation, dass wir eine Handelsstrategie entwickeln, sie einem Backtest unterziehen und als wir sie schließlich umsetzen, zeigt sie nicht die erwartete Leistung. Einer der Hauptgründe für diese Enttäuschung ist die übermäßige Anpassung der Strategie an einen bestimmten Satz historischer Daten, die im Backtest verwendet wurden. In diesem Video zeige ich eine Strategie zur Bekämpfung von Überanpassung und stelle sicher, dass Sie sich nicht auf Strategien verlassen, denen eine solide Grundlage fehlt, oder sich vom Zufall täuschen lassen.
Schauen wir uns ein konkretes Beispiel an. Ich habe einen Backtest einer einfachen RSI-basierten Strategie mit Bitcoin als Vermögenswert durchgeführt. Die Strategie besteht darin, zu verkaufen, wenn der RSI hoch ist, und zu kaufen, wenn der RSI niedrig ist. Die Backtest-Ergebnisse zeigten eine bescheidene Rendite von etwa drei Prozent, obwohl Bitcoin im Testzeitraum einen Rückgang von 15 Prozent verzeichnete. Auf den ersten Blick scheint es eine vielversprechende Strategie für Bärenmärkte zu sein.
Es ist jedoch von entscheidender Bedeutung, die Leistung der Strategie über verschiedene Zeiträume hinweg zu untersuchen, um festzustellen, ob sie konsistent profitable Gelegenheiten identifiziert oder ob sie beim Backtest einfach nur Glück mit den gewählten Parameterwerten hatte. Um dies zu erreichen, habe ich mehrere 30-Tage-Backtests durchgeführt, die sich über verschiedene Zeiträume im Laufe des Jahres erstreckten.
Indem wir die Verteilung der Erträge aus diesen Backtests grafisch darstellen, können wir Einblicke in die Wirksamkeit der Strategie gewinnen. Das Diagramm zeigt jedes 30-Tage-Fenster als Punkt und stellt die in diesem Zeitraum erzielten Renditen dar. Das zugehörige Boxplot zeigt die mittlere Rendite, die Quartile sowie die Maximal- und Minimalwerte an. Bei der Analyse des Diagramms wird deutlich, dass die mittlere Rendite über einen Zeitraum von 30 Tagen -8,5 Prozent beträgt. Darüber hinaus scheint die Verteilung der Renditen zufällig zu sein, ähnlich den Ergebnissen, die man von einem Zufallszahlengenerator zwischen -35 und 15 erwarten würde. Diese Ergebnisse weisen stark darauf hin, dass die Strategie über die spezifischen historischen Daten hinaus, die in verwendet werden, nicht eindeutig oder effektiv ist Backtest.
Um die Strategie zu validieren und den Einfluss der Überanpassung abzuschwächen, müssen wir Backtests für ein breiteres Datenspektrum durchführen. Zu diesem Zweck habe ich mehrere Datendateien heruntergeladen, die das gesamte Jahr abdecken, von Anfang 2022 bis Ende 2022. Ich habe diese Dateien in einer Master-CSV zusammengefasst, die einminütige Kerzendaten für den gesamten Zeitraum enthält.
Im Validierungscode habe ich einige kleinere Anpassungen vorgenommen, um den erweiterten Datensatz zu berücksichtigen. Die Kernstrategie bleibt dieselbe und konzentriert sich auf die RSI-basierte Handelslogik. Allerdings habe ich eine Schleife eingeführt, um Backtests in 30-Tage-Fenstern über die gesamten Daten hinweg durchzuführen. Bei jedem Backtest werden Renditen berechnet, die dann zur weiteren Analyse einer Liste hinzugefügt werden.
Durch die Erstellung eines Boxplots anhand der gesammelten Renditen können wir die Verteilung der Strategieleistung über verschiedene 30-Tage-Fenster hinweg visualisieren. Dieses Diagramm zeigt die Variabilität der Renditen und liefert ein klareres Bild der Leistung der Strategie über verschiedene Zeitintervalle. In diesem konkreten Beispiel zeigt das Diagramm für fast jeden Monat überwiegend negative Renditen an, was darauf hindeutet, dass es der Strategie an konsistenter Rentabilität mangelt.
Diese Techniken zur Validierung und Verifizierung von Handelsstrategien können auf jedes Backtesting-Framework Ihrer Wahl angewendet werden. Der bereitgestellte Code nutzt die Bibliothek backtesting.py, Sie können ihn jedoch an andere Bibliotheken wie vectorbt oder backtrader anpassen. Der Kerngedanke besteht darin, sicherzustellen, dass Ihre Strategie über verschiedene Zeiträume hinweg robust ist und nicht einfach das Ergebnis einer Überanpassung an einen bestimmten Satz historischer Daten ist.
Indem Sie diese Validierungsschritte befolgen, können Sie das Risiko verringern, sich auf Strategien zu verlassen, die nicht auf der Realität basieren, oder Opfer zufälliger Ergebnisse zu werden. Es ist wichtig, über die Backtest-Leistung hinauszugehen und die Wirksamkeit der Strategie unter verschiedenen Marktbedingungen zu berücksichtigen, um fundierte Entscheidungen bei der Umsetzung von Handelsstrategien zu treffen.
Nach der Analyse der Backtest-Ergebnisse und der Verteilung der Renditen über verschiedene Zeiträume stellten wir fest, dass die Leistung der Strategie im Wesentlichen zufällig war. Außerhalb des spezifischen Zeitraums, der für das Backtesting verwendet wurde, konnte keine konsistente Rentabilität erzielt werden. Dies deutet darauf hin, dass die Strategie unter einer Überanpassung litt und es ihr an Robustheit mangelte.
Um nicht in die Overfitting-Falle zu tappen und die Chancen auf die Entwicklung zuverlässiger Handelsstrategien zu erhöhen, hier ein paar Empfehlungen:
Verwenden Sie ausreichend und vielfältige Daten: Stellen Sie sicher, dass Ihr Backtest eine erhebliche Menge historischer Daten umfasst, um verschiedene Marktbedingungen abzudecken. Dies trägt dazu bei, ein breiteres Spektrum an Szenarien zu erfassen und verringert die Wahrscheinlichkeit einer Überanpassung an bestimmte Marktbedingungen.
Validierung über mehrere Zeitrahmen hinweg: Anstatt sich beim Backtesting ausschließlich auf einen einzigen Zeitraum zu verlassen, testen Sie Ihre Strategie über verschiedene Zeitrahmen hinweg. Dies liefert Einblicke in die Leistung unter verschiedenen Marktbedingungen und hilft festzustellen, ob die Strategie eine konsistente Rentabilität aufweist oder ob die beobachteten Ergebnisse auf Zufälligkeit zurückzuführen sind.
Implementieren Sie Tests außerhalb der Stichprobe: Reservieren Sie einen Teil Ihrer historischen Daten für Tests außerhalb der Stichprobe. Nachdem Sie Ihren primären Backtest für den ursprünglichen Datensatz durchgeführt haben, validieren Sie die Strategie anhand der reservierten Daten, die das Modell zuvor noch nicht gesehen hat. Dies hilft bei der Beurteilung der Fähigkeit der Strategie, sich an unerwartete Marktbedingungen anzupassen, und ermöglicht eine realistischere Bewertung ihrer Leistung.
Vorsicht bei der Kurvenanpassung: Vermeiden Sie übermäßige Optimierung oder Parameteroptimierung, um die Strategie zu genau an historische Daten anzupassen. Strategien, die zu sehr auf bestimmte Datenmuster zugeschnitten sind, scheitern im realen Handel eher. Streben Sie nach Robustheit, anstatt nur anhand historischer Daten eine außergewöhnliche Leistung zu erzielen.
Ziehen Sie eine Walk-Forward-Analyse in Betracht: Anstatt sich ausschließlich auf statische Backtests zu verlassen, sollten Sie die Verwendung einer Walk-Forward-Analyse in Betracht ziehen. Dazu gehört die regelmäßige Neuoptimierung und erneute Prüfung Ihrer Strategie, sobald neue Daten verfügbar werden. Es ermöglicht Ihnen, Ihre Strategie kontinuierlich anzupassen und zu verfeinern und so ihre Leistung bei sich ändernden Marktbedingungen zu verbessern.
Verwenden Sie statistische Signifikanztests: Wenden Sie statistische Tests an, um die Signifikanz der Leistung Ihrer Strategie zu bewerten. Dies hilft festzustellen, ob die beobachteten Ergebnisse statistisch aussagekräftig sind oder lediglich auf Zufall beruhen. Zu den gängigen statistischen Tests, die beim Backtesting verwendet werden, gehören T-Tests, Bootstrap-Tests und Monte-Carlo-Simulationen.
Indem Sie diese Richtlinien befolgen, können Sie das Risiko verringern, Strategien zu entwickeln, die zu sehr auf historische Daten abgestimmt sind, und die Wahrscheinlichkeit erhöhen, robuste und zuverlässige Handelsansätze zu entwickeln.
Denken Sie daran, dass das Ziel darin besteht, Handelsstrategien zu entwickeln, die unter verschiedenen Marktbedingungen eine konsistente Rentabilität aufweisen, und nicht darin, Strategien zu entwickeln, die lediglich anhand historischer Daten eine gute Leistung erbringen.
Eine schnelle Einführung in Python für Ingenieure des maschinellen Lernens
Eine schnelle Einführung in Python für Ingenieure des maschinellen Lernens
Der Kursleiter stellt zunächst das Konzept der prädiktiven Modellierung und seine Bedeutung in der Branche vor. Der Schwerpunkt der prädiktiven Modellierung liegt auf der Entwicklung von Modellen, die genaue Vorhersagen treffen können, auch wenn sie möglicherweise keine Erklärung dafür liefern, warum diese Vorhersagen getroffen werden. Der Dozent betont, dass sich der Kurs speziell auf tabellarische Daten wie Tabellenkalkulationen oder Datenbanken konzentriert. Ziel ist es, die Studierenden von Entwicklern, die sich für maschinelles Lernen in Python interessieren, zu Experten im Umgang mit neuen Datensätzen, der Entwicklung von End-to-End-Vorhersagemodellen und der Nutzung von Python und der SCIPy-Bibliothek für maschinelle Lernaufgaben zu machen.
Zu Beginn bietet der Dozent einen Crashkurs in Python-Syntax an. Sie behandeln grundlegende Konzepte wie Variablen und Zuweisungen und verdeutlichen den Unterschied zwischen dem „Gleichheitszeichen“ für Zuweisungen und dem „doppelten Gleichheitszeichen“ für Gleichheitsvergleiche. Der Kursleiter demonstriert die Verwendung von Jupyter Notebook für die Python-Codierung und gibt Tipps zur Navigation, z. B. zum Erstellen eines neuen Notebooks, zum Verwenden von Aliasen für Bibliotheken, zum Ausführen von Zellen sowie zum Kopieren oder Verschieben von Zellen. Sie erklären auch die Funktion zum automatischen Speichern und das manuelle Speichern von Notizbüchern. Abschließend geht das Video kurz auf das Stoppen der Ausführung des Kernels ein.
Anschließend erklärt der Kursleiter, wie man die Symbolleiste in Jupyter Notebook für die Python-Engine-Navigation verwendet und wie man Notizbücher mit Markdown mit Anmerkungen versehen kann. Das Video behandelt wichtige Flusskontrollanweisungen, einschließlich if-then-else-Bedingungen, for-Schleifen und while-Schleifen. Diese Anweisungen ermöglichen die Entscheidungsfindung und Wiederholung innerhalb des Python-Codes. Anschließend stellt der Kursleiter drei wichtige Datenstrukturen für maschinelles Lernen vor: Tupel, Listen und Wörterbücher. Diese Datenstrukturen bieten effiziente Möglichkeiten zum Speichern und Bearbeiten von Daten. Darüber hinaus enthält das Video einen Crashkurs zu NumPy, einer Bibliothek, die numerische Operationen in Python ermöglicht. Es umfasst die Erstellung von Arrays, den Zugriff auf Daten und die Durchführung arithmetischer Operationen mit Arrays.
Im Video werden zwei wesentliche Bibliotheken besprochen: Matplotlib und Pandas, die häufig beim maschinellen Lernen zur Datenanalyse und -visualisierung verwendet werden. Mit Matplotlib können Benutzer verschiedene Diagramme und Diagramme erstellen und so die Datenvisualisierung erleichtern. Pandas hingegen stellt Datenstrukturen und Funktionen zur Datenmanipulation und -analyse bereit, insbesondere durch Serien- und Datenrahmenstrukturen. Das Video unterstreicht die Bedeutung der read_csv-Funktion von Pandas für das Laden von CSV-Dateien, dem gebräuchlichsten Format in Anwendungen für maschinelles Lernen. Es betont auch die Nützlichkeit der Pandas-Funktionen zum Zusammenfassen und Plotten von Daten, um Erkenntnisse zu gewinnen und Daten für maschinelle Lernaufgaben vorzubereiten. Beschreibende Statistiken in Python werden als entscheidendes Werkzeug zum Verständnis der Eigenschaften und der Natur von Daten genannt.
Das Video befasst sich mit spezifischen Datenvisualisierungstechniken, die die Datenanalyse unterstützen können, bevor Techniken des maschinellen Lernens angewendet werden. Histogramme, Dichtediagramme und Boxplots werden eingeführt, um die Verteilung von Attributen zu beobachten und potenzielle Ausreißer zu identifizieren. Korrelationsmatrizen und Streudiagrammmatrizen werden als Methoden zur Identifizierung von Beziehungen zwischen Attributpaaren vorgestellt. Das Video betont die Bedeutung der Neuskalierung, Standardisierung, Normalisierung und Binarisierung von Daten als notwendige Vorverarbeitungsschritte zur Vorbereitung von Daten für maschinelle Lernalgorithmen. Als gängiger Ansatz zur Datenvorverarbeitung wird die Fit-and-Transform-Methode erläutert.
Das nächste diskutierte Thema sind Datenvorverarbeitungstechniken beim maschinellen Lernen. Das Video behandelt Normalisierung und Standardisierung als zwei wichtige Techniken. Bei der Normalisierung werden Attribute neu skaliert, sodass sie die gleiche Skala haben, während bei der Standardisierung Attribute so transformiert werden, dass sie einen Mittelwert von Null und eine Standardabweichung von Eins haben. Außerdem wird die Binarisierung erläutert, bei der Daten mit Schwellenwerten versehen werden, um binäre Attribute oder eindeutige Werte zu erstellen. Die Bedeutung der Merkmalsauswahl wird betont, da irrelevante oder teilweise irrelevante Merkmale die Modellleistung negativ beeinflussen können. Das Video stellt die univariate Auswahl als einen statistischen Ansatz zur Merkmalsauswahl vor und hebt die Verwendung rekursiver Merkmalseliminierungs- und Merkmalswichtigkeitsmethoden hervor, die Entscheidungsbaumensembles wie zufällige Wälder oder zusätzliche Bäume verwenden. Die Hauptkomponentenanalyse (PCA) wird auch als Datenreduktionstechnik diskutiert, die den Datensatz mithilfe linearer Algebra in eine kleinere Anzahl von Dimensionen komprimieren kann.
Das Video betont die Bedeutung von Resampling-Methoden für die Bewertung der Leistung von Algorithmen für maschinelles Lernen anhand unsichtbarer Daten. Es wird davor gewarnt, Algorithmen anhand desselben Datensatzes auszuwerten, der auch für das Training verwendet wurde, da dies zu einer Überanpassung und einer schlechten Verallgemeinerung auf neue Daten führen kann. Techniken wie Train-Test-Split-Sets, k-fache Kreuzvalidierung, „Leave One Out“-Kreuzvalidierung und wiederholte zufällige Testaufteilungen werden als Möglichkeiten erläutert, zuverlässige Schätzungen der Algorithmusleistung zu erhalten. Das Video endet mit einer Diskussion verschiedener Leistungsmetriken für Algorithmen für maschinelles Lernen, wie z. B. Klassifizierungsgenauigkeit, logarithmischer Verlust, Fläche unter der Kurve, Verwirrungsmatrix und Klassifizierungsbericht.
Das Video befasst sich mit Leistungsmetriken, die zur Bewertung der Vorhersagen von Modellen des maschinellen Lernens verwendet werden. Es umfasst Klassifizierungsgenauigkeit, Log-Verlust (zur Bewertung von Wahrscheinlichkeiten), Fläche unter der ROC-Kurve (Receiver Operating Characteristic) (für binäre Klassifizierungsprobleme), Verwirrungsmatrix (zur Bewertung der Modellgenauigkeit mit mehreren Klassen) und den Klassifizierungsbericht (der Präzision liefert). , Rückruf, F1-Ergebnis und Unterstützung für jede Klasse). Darüber hinaus erläutert das Video drei gängige Regressionsmetriken: mittlerer absoluter Fehler, mittlerer quadratischer Fehler und R-Quadrat. Es werden praktische Beispiele gezeigt, die veranschaulichen, wie diese Metriken mit Python berechnet werden.
Der Referent stellt das Konzept der Stichprobenprüfung vor, um festzustellen, welche Algorithmen für maschinelles Lernen für ein bestimmtes Problem gut funktionieren. Bei der Stichprobenprüfung werden mehrere Algorithmen bewertet und ihre Leistung verglichen. Das Video demonstriert die Stichprobenprüfung für sechs verschiedene Modelle des maschinellen Lernens, einschließlich linearer und nichtlinearer Algorithmen, unter Verwendung von Python mit der scikit-learn-Bibliothek. Der Referent betont, dass die Ergebnisse aufgrund der stochastischen Natur der Modelle variieren können. Der Abschnitt endet mit einer Einführung in Regressionsmodelle für maschinelles Lernen und bereitet die Zuschauer auf den kommenden Abschnitt über die Stichprobenprüfung dieser Modelle vor.
Anschließend stellt der Referent lineare und nichtlineare Modelle des maschinellen Lernens am Beispiel des Bostoner Immobilienpreisdatensatzes vor. Ein Testsystem mit 10-facher Kreuzvalidierung wird verwendet, um zu demonstrieren, wie jedes Modell stichprobenartig überprüft wird, und der mittlere quadratische Fehler wird als Leistungsindikator verwendet (invertiert aufgrund einer Eigenart in der dateiübergreifenden Bewertungsfunktion). Das lineare Regressionsmodell, das eine Gauß-Verteilung für Eingabevariablen und deren Relevanz für die Ausgabevariable annimmt, wird diskutiert. Außerdem wird die Ridge-Regression erläutert, eine Modifikation der linearen Regression, die die Modellkomplexität minimiert. Der Redner betont, wie wichtig es ist, die Pipeline oder den Prozess zu verstehen, anstatt sich in dieser Phase auf die spezifische Code-Implementierung einzulassen.
Das Video untersucht den Prozess des Verstehens und Visualisierens von Eingabevariablen für ein maschinelles Lernproblem. Es wird empfohlen, univariate Diagramme wie Box- und Whisker-Diagramme und Histogramme zu verwenden, um die Verteilung der Eingabevariablen zu verstehen. Bei multivariaten Analysen können Streudiagramme dabei helfen, strukturelle Beziehungen zwischen Eingabevariablen zu identifizieren und hohe Korrelationen zwischen bestimmten Attributpaaren aufzudecken. Das Video erläutert auch den Evaluierungsprozess, bei dem ein Testsystem mit 10-facher Kreuzvalidierung zur Bewertung der Modellleistung verwendet wird. Es wird betont, wie wichtig es ist, einen Validierungsdatensatz zu erstellen, um die Genauigkeit des besten Modells unabhängig zu bewerten. Es werden sechs verschiedene Modelle des maschinellen Lernens bewertet und das genaueste Modell für die Erstellung von Vorhersagen ausgewählt. Der Klassifizierungsbericht, die Verwirrungsmatrix und die Genauigkeitsschätzung werden zur Bewertung der Vorhersagen verwendet. Abschließend geht das Video auf die Regularisierungsregression ein und beleuchtet die Konstruktion von Lasso- und Elastic-Net-Modellen zur Reduzierung der Komplexität von Regressionsmodellen.
Das Video stellt ein binäres Klassifizierungsproblem beim maschinellen Lernen vor, das darauf abzielt, Metall aus Gestein mithilfe des Sonar-Minen-gegen-Gesteins-Datensatzes vorherzusagen. Der Datensatz enthält 208 Instanzen mit 61 Attributen, einschließlich des Klassenattributs. Es werden deskriptive Statistiken analysiert, die darauf hinweisen, dass die Daten zwar im gleichen Bereich liegen, unterschiedliche Mittelwerte jedoch darauf hindeuten, dass eine Standardisierung der Daten von Vorteil sein könnte. Unimodale und multimodale Datenvisualisierungen wie Histogramme, Dichtediagramme und Korrelationsvisualisierungen werden untersucht, um Einblicke in die Daten zu gewinnen. Es wird ein Validierungsdatensatz erstellt und eine Basislinie für die Modellleistung durch Testen verschiedener Modelle erstellt, darunter lineare Regression, logistische Regression, lineare Diskriminanzanalyse, Klassifizierungsregressionsbäume, Support Vector Machines (SVM), naive Bayes und k-nächste Nachbarn ( KNN). Die Genauigkeit jedes Algorithmus wird mithilfe einer 10-fachen Kreuzvalidierung berechnet und verglichen.
Im folgenden Abschnitt wird im Video erläutert, wie verschiedene Algorithmen für maschinelles Lernen mithilfe standardisierter Daten und Optimierung bewertet werden können. Bei der Standardisierung werden die Daten transformiert, sodass jedes Attribut einen Mittelwert von 0 und eine Standardabweichung von 1 hat, was die Leistung bestimmter Modelle verbessern kann. Um Datenlecks während des Transformationsprozesses zu verhindern, wird eine Pipeline empfohlen, die die Daten standardisiert und das Modell für jede Falte im Kreuzvalidierungstestsystem erstellt. Das Video demonstriert Optimierungstechniken für k-Nearest Neighbors (KNN) und Support Vector Machines (SVM) mithilfe einer Rastersuche mit 10-facher Kreuzvalidierung auf der standardisierten Kopie des Trainingsdatensatzes. Die optimalen Konfigurationen für KNN und SVM werden identifiziert und die Genauigkeit der Modelle bewertet. Abschließend werden im Video kurz KNN, Entscheidungsbaumregression und SVM als nichtlineare Modelle für maschinelles Lernen erörtert.
Angewandte Statistik für Ingenieure des maschinellen Lernens
Angewandte Statistik für Ingenieure des maschinellen Lernens
Der Dozent im Video führt in das Gebiet der Statistik ein und beleuchtet deren Bedeutung für die Arbeit mit prädiktiven Modellierungsproblemen beim maschinellen Lernen. Sie erklären, dass die Statistik eine Reihe von Techniken bietet, angefangen von einfachen zusammenfassenden Statistiken bis hin zu Hypothesentests und Schätzstatistiken. Der Kurs soll eine schrittweise Einführung in statistische Methoden mit praktischen Beispielen in Python vermitteln. Es deckt sechs Kernaspekte der Statistik für maschinelles Lernen ab und konzentriert sich auf reale Anwendungen, sodass es für Ingenieure des maschinellen Lernens geeignet ist.
Der Dozent betont die enge Beziehung zwischen maschinellem Lernen und Statistik und schlägt vor, dass Programmierer von der Verbesserung ihrer statistischen Fähigkeiten durch diesen Kurs profitieren können. Sie klassifizieren das Gebiet der Statistik in zwei Kategorien: deskriptive Statistik und inferenzielle Statistik. Bei der beschreibenden Statistik werden Daten mithilfe von Messungen wie Durchschnittswerten und grafischen Darstellungen zusammengefasst und beschrieben. Inferenzstatistiken hingegen werden verwendet, um auf der Grundlage von Stichprobendaten Rückschlüsse auf eine größere Population zu ziehen.
Es wird auch die Bedeutung einer ordnungsgemäßen Datenverarbeitung hervorgehoben, einschließlich der Bekämpfung von Datenverlust, -beschädigung und -fehlern. Das Video befasst sich dann mit den verschiedenen Schritten der Datenaufbereitung für Modelle des maschinellen Lernens. Dazu gehören Datenbereinigung, Datenauswahl, Datenstichprobe und Datentransformation mithilfe statistischer Methoden wie Standardisierung und Normalisierung. Ein weiterer Schwerpunkt liegt auf der Datenauswertung, und im Video werden experimentelle Gestaltung, Resampling-Daten und Modellauswahl zur Einschätzung der Fähigkeiten eines Modells erörtert. Für die Vorhersage neuer Daten empfiehlt das Video die Verwendung von Schätzstatistiken.
Das Video erklärt die verschiedenen in der Statistik verwendeten Messskalen, nämlich Nominal-, Ordinal-, Intervall- und Verhältnisskalen. Es werden die statistischen Techniken besprochen, die auf jede Skala anwendbar sind, und wie sie beim maschinellen Lernen implementiert werden können. Es wird betont, wie wichtig es ist, Unsicherheiten bei der Modellierung zu verstehen und zu melden, insbesondere bei der Arbeit mit Stichprobensätzen. Das Video konzentriert sich dann auf die Normalverteilung, die häufig in verschiedenen Datensätzen beobachtet wird. Es zeigt, wie Sie Beispieldaten generieren und deren Anpassung an eine Gaußsche Verteilung mithilfe eines Histogramms visuell bewerten. Obwohl die meisten Datensätze keine perfekte Gauß-Verteilung aufweisen, weisen sie häufig Gauß-ähnliche Eigenschaften auf.
Es wird hervorgehoben, wie wichtig es ist, eine granulare Methode zur Datenaufteilung auszuwählen, um die zugrunde liegende Gaußsche Verteilung offenzulegen. Es werden Maßstäbe für die zentrale Tendenz wie Mittelwert und Median sowie Varianz und Standardabweichung als Maß für die Streuung der Verteilung untersucht. Zufälligkeit wird als wesentliches Werkzeug beim maschinellen Lernen diskutiert, das dazu beiträgt, Algorithmen robuster und genauer zu machen. Verschiedene Zufallsquellen, darunter Datenfehler und Rauschen, werden erläutert.
Das Video erklärt, dass Algorithmen für maschinelles Lernen häufig Zufälligkeiten nutzen, um eine bessere Leistung zu erzielen und optimalere Modelle zu generieren. Zufälligkeit ermöglicht es Algorithmen, verschiedene Möglichkeiten zu erkunden und bessere Datenzuordnungen zu finden. Es werden kontrollierbare und unkontrollierbare Zufälligkeitsquellen besprochen und die Verwendung der Seed-Funktion erläutert, um die Zufälligkeit innerhalb eines Modells konsistent zu machen. Das Video bietet ein Beispiel für die Verwendung des Python-Zufallsmoduls zum Generieren von Zufallszahlen und hebt den Unterschied zwischen dem Pseudozufallszahlengenerator der Numpy-Bibliothek und dem Pseudozufallszahlengenerator der Standardbibliothek hervor. Es werden auch zwei Fälle besprochen, wann der Zufallszahlengenerator gesät werden sollte, nämlich während der Datenvorbereitung und der Datenaufteilung.
Der Schwerpunkt liegt auf der konsequenten Aufteilung der Daten und der Verwendung von Pseudozufallszahlengeneratoren bei der Bewertung eines Algorithmus. Das Video empfiehlt, das Modell so zu bewerten, dass die gemessene Unsicherheit und die Leistung des Algorithmus berücksichtigt werden. Die Auswertung eines Algorithmus anhand mehrerer Datenaufteilungen liefert Einblicke in die Unterschiede seiner Leistung bei unterschiedlichen Trainings- und Testdaten. Die mehrmalige Evaluierung eines Algorithmus anhand derselben Datenaufteilungen hilft zu verstehen, wie seine Leistung von selbst variiert. Das Video stellt außerdem das Gesetz der großen Zahlen und den zentralen Grenzwertsatz vor und hebt hervor, dass mehr Daten die Leistung des Modells verbessern und dass sich die Verteilung des Mittelwerts mit zunehmender Stichprobengröße einer Gaußschen Verteilung annähert.
Das Video demonstriert den zentralen Grenzwertsatz mithilfe von Würfelwürfen und Code und zeigt, wie sich die Stichprobenmittel einer Gaußschen Verteilung annähern, wenn die Stichprobengröße zunimmt.
Das Video betont, wie wichtig es ist, Modelle für maschinelles Lernen zu evaluieren und die mit ihren Vorhersagen verbundene Unsicherheit zu verstehen. Es werden Bewertungsmetriken wie Genauigkeit, Präzision, Rückruf und F1-Score eingeführt, die häufig zur Bewertung der Leistung von Klassifizierungsmodellen verwendet werden. Das Video erklärt, dass die Genauigkeit die Gesamtkorrektheit von Vorhersagen misst, die Präzision den Anteil der wirklich positiven Vorhersagen an allen positiven Vorhersagen misst, der Rückruf den Anteil der wirklich positiven Vorhersagen an allen tatsächlichen positiven Instanzen misst und der F1-Score Präzision und Rückruf kombiniert eine einzelne Metrik. Außerdem wird das Konzept einer Verwirrungsmatrix erörtert, die einen detaillierteren Überblick über die Leistung eines Klassifizierungsmodells bietet, indem sie die Anzahl der wahr-positiven, wahr-negativen, falsch-positiven und falsch-negativen Vorhersagen anzeigt.
Der Referent demonstriert, wie diese Bewertungsmetriken mithilfe der Scikit-Learn-Bibliothek von Python berechnet werden. Es zeigt, wie Sie die erforderlichen Module importieren, die Daten in Trainings- und Testsätze aufteilen, ein Klassifizierungsmodell trainieren, Vorhersagen für den Testsatz treffen und die Leistung des Modells anhand von Genauigkeit, Präzision, Rückruf und F1-Score bewerten. Das Video unterstreicht die Bedeutung der Bewertung von Modellen anhand unsichtbarer Daten, um ihre Generalisierungsfähigkeit sicherzustellen.
Darüber hinaus stellt das Video das Konzept der ROC-Kurven (Receiver Operating Characteristic) und der AUC (Area Under the Curve) als Bewertungsmetriken für binäre Klassifizierungsmodelle vor. ROC-Kurven zeichnen die Richtig-Positiv-Rate gegenüber der Falsch-Positiv-Rate bei verschiedenen Klassifizierungsschwellenwerten auf und bieten eine visuelle Darstellung der Leistung des Modells über verschiedene Schwellenwerte hinweg. Die AUC stellt die Fläche unter der ROC-Kurve dar und bietet eine einzige Metrik zum Vergleich der Leistung verschiedener Modelle. Das Video erklärt, wie man mithilfe der Scikit-Learn-Bibliothek von Python eine ROC-Kurve zeichnet und die AUC berechnet.
Das Konzept der Überanpassung wird als ein häufiges Problem beim maschinellen Lernen diskutiert, bei dem ein Modell bei den Trainingsdaten gut funktioniert, sich aber nicht auf neue, unbekannte Daten verallgemeinern lässt. Das Video erklärt, dass eine Überanpassung auftritt, wenn ein Modell zu komplex wird und für die Trainingsdaten spezifische Muster lernt, die in der allgemeinen Bevölkerung nicht gelten. Das Video zeigt, wie Überanpassung durch den Vergleich der Trainings- und Testleistung eines Modells visualisiert werden kann. Es erklärt, dass ein Overfit-Modell einen geringen Trainingsfehler, aber einen hohen Testfehler aufweist, was auf eine schlechte Generalisierung hinweist. Das Video schlägt Regularisierungstechniken wie die Ridge-Regression und die Lasso-Regression vor, um eine Überanpassung durch Hinzufügen eines Strafterms zur Zielfunktion des Modells abzumildern.
Das Konzept der Kreuzvalidierung wird als Technik zur Bewertung der Leistung und Verallgemeinerung von Modellen des maschinellen Lernens eingeführt. Das Video erklärt, dass bei der Kreuzvalidierung die Daten in mehrere Teilmengen aufgeteilt, das Modell anhand eines Teils der Daten trainiert und seine Leistung anhand des verbleibenden Teils bewertet wird. Dieser Vorgang wird mehrmals wiederholt, wobei unterschiedliche Teilmengen für Training und Tests verwendet werden, und die Ergebnisse werden gemittelt, um eine Schätzung der Leistung des Modells zu erhalten. Das Video zeigt, wie eine Kreuzvalidierung mit der Scikit-Learn-Bibliothek von Python durchgeführt wird, insbesondere mit der K-Fold-Kreuzvalidierungsmethode.
Als nächstes diskutiert das Video das Konzept der Funktionsauswahl und deren Bedeutung beim maschinellen Lernen. Darin wird erklärt, dass es bei der Merkmalsauswahl darum geht, die relevantesten Merkmale oder Variablen zu identifizieren, die zur Leistung des Modells beitragen. Das Video unterstreicht die Bedeutung der Auswahl informativer Funktionen, um die Genauigkeit des Modells zu verbessern, Überanpassungen zu reduzieren und die Interpretierbarkeit zu verbessern. Es werden verschiedene Techniken zur Merkmalsauswahl vorgestellt, z. B. univariate Auswahl, rekursive Merkmalseliminierung und Merkmalswichtigkeitsbewertungen. Das Video zeigt, wie Sie die Funktionsauswahl mithilfe der Scikit-Learn-Bibliothek von Python implementieren.
Das Konzept der Dimensionsreduktion wird auch als eine Technik diskutiert, um den Fluch der Dimensionalität beim maschinellen Lernen zu bekämpfen. Das Video erklärt, dass bei der Dimensionsreduzierung die Anzahl der Features oder Variablen in einem Datensatz reduziert und gleichzeitig die meisten relevanten Informationen erhalten bleiben. Es führt die Hauptkomponentenanalyse (PCA) als eine häufig verwendete Technik zur Dimensionsreduktion ein. PCA zielt darauf ab, die Daten in einen niedrigerdimensionalen Raum umzuwandeln, indem die Richtungen maximaler Varianz in den Daten identifiziert werden. Das Video erklärt, dass PCA neue Features, sogenannte Hauptkomponenten, erstellt, bei denen es sich um lineare Kombinationen der ursprünglichen Features handelt. Diese Hauptkomponenten erfassen die wichtigsten Informationen in den Daten und können als Eingabe für Modelle des maschinellen Lernens verwendet werden.
Das Video zeigt, wie man PCA mit der Scikit-Learn-Bibliothek von Python durchführt. Es zeigt, wie man die erforderlichen Module importiert, die Daten standardisiert, ein PCA-Objekt initialisiert, das PCA-Modell an die Daten anpasst und die Daten in den niedrigerdimensionalen Raum transformiert. Das Video erklärt außerdem, wie man anhand des erläuterten Varianzverhältnisses die optimale Anzahl der beizubehaltenden Hauptkomponenten ermittelt.
Das Konzept des Ensemble-Lernens wird als Technik zur Verbesserung der Leistung von Modellen des maschinellen Lernens durch die Kombination mehrerer Einzelmodelle eingeführt. Das Video erklärt, dass Ensemble-Lernen die Weisheit von Massen nutzt, wobei jedes einzelne Modell seine eigenen Vorhersagen beisteuert und die endgültige Vorhersage auf der Grundlage eines Abstimmungs- oder Mittelungsmechanismus ermittelt wird. Das Video bespricht zwei beliebte Ensemble-Lernmethoden: Bagging und Boosting. Beim Bagging geht es darum, mehrere Modelle auf verschiedenen Teilmengen der Daten zu trainieren und ihre Vorhersagen zu aggregieren, während sich Boosting darauf konzentriert, die Modelle nacheinander zu trainieren, wobei jedes Modell Instanzen, die von vorherigen Modellen falsch klassifiziert wurden, mehr Bedeutung beimisst.
Das Video zeigt, wie Ensemble-Lernen mithilfe der Scikit-Learn-Bibliothek von Python implementiert wird. Es zeigt, wie man die notwendigen Module für Bagging und Boosting importiert, die Ensemble-Modelle initialisiert, sie an die Daten anpasst und mithilfe der Ensemble-Modelle Vorhersagen trifft. Das Video betont, dass Ensemble-Lernen häufig die Gesamtleistung und Robustheit von Modellen für maschinelles Lernen verbessern kann.
Abschließend geht das Video kurz auf fortgeschrittene Themen des maschinellen Lernens ein, beispielsweise Deep Learning und Natural Language Processing (NLP). Darin wird erwähnt, dass Deep Learning das Training tiefer neuronaler Netze mit mehreren Schichten umfasst, um komplexe Muster in Daten zu lernen. NLP konzentriert sich auf die Entwicklung von Modellen und Techniken zum Verstehen und Verarbeiten menschlicher Sprache und ermöglicht Anwendungen wie Textklassifizierung, Stimmungsanalyse und maschinelle Übersetzung. Das Video schließt mit der Hervorhebung, dass maschinelles Lernen ein riesiges und sich schnell entwickelndes Feld mit zahlreichen Anwendungen und Möglichkeiten zur weiteren Erforschung und zum Lernen ist.
Das Video bietet einen umfassenden Überblick über wesentliche Konzepte und Techniken des maschinellen Lernens, einschließlich Modellbewertung, Überanpassung, Regularisierung, Kreuzvalidierung, Merkmalsauswahl, Dimensionsreduktion, Ensemble-Lernen und eine Einführung in Deep Learning und NLP. Es demonstriert praktische Implementierungen mit Python und der Scikit-Learn-Bibliothek und ist damit eine wertvolle Ressource für Anfänger und diejenigen, die ihr Verständnis für maschinelles Lernen verbessern möchten.
Angewandte lineare Algebra für Ingenieure des maschinellen Lernens
Angewandte lineare Algebra für Ingenieure des maschinellen Lernens
Das Video betont die Bedeutung des Erlernens der linearen Algebra für Ingenieure des maschinellen Lernens, da sie als grundlegender Baustein für das Verständnis von Analysis und Statistik dient, die für maschinelles Lernen unerlässlich sind. Ein tieferes Verständnis der linearen Algebra vermittelt Praktikern eine bessere Vorstellung davon, wie Methoden des maschinellen Lernens funktionieren, und ermöglicht es ihnen, Algorithmen anzupassen und neue zu entwickeln.
Der Kurs verfolgt einen Top-Down-Ansatz, um die Grundlagen der linearen Algebra zu vermitteln und anhand konkreter Beispiele und Datenstrukturen Operationen auf Matrizen und Vektoren zu demonstrieren. Lineare Algebra wird als die Mathematik von Matrizen und Vektoren beschrieben, die eine Sprache zur Datenmanipulation bereitstellt und die Erstellung neuer Spalten oder Arrays von Zahlen durch Operationen an diesen Datenstrukturen ermöglicht. Die lineare Algebra wurde ursprünglich im späten 19. Jahrhundert zur Lösung linearer Gleichungssysteme entwickelt und ist zu einer wichtigen Voraussetzung für das Verständnis maschinellen Lernens geworden.
Der Referent stellt das Konzept der numerischen linearen Algebra vor, das die Anwendung der linearen Algebra in Computern beinhaltet. Dazu gehört die Implementierung linearer Algebraoperationen und die Bewältigung der Herausforderungen, die sich beim Arbeiten mit begrenzter Gleitkommagenauigkeit in digitalen Computern ergeben. Die numerische lineare Algebra spielt eine entscheidende Rolle beim maschinellen Lernen, insbesondere bei Deep-Learning-Algorithmen, die stark auf grafische Verarbeitungseinheiten (GPUs) angewiesen sind, um lineare Algebra-Berechnungen effizient durchzuführen. Zur Berechnung linearer Algebraoperationen werden häufig verschiedene Open-Source-Bibliotheken für numerische lineare Algebra verwendet, die auf Fortran-basierten Bibliotheken basieren, häufig in Verbindung mit Programmiersprachen wie Python.
Die Bedeutung der linearen Algebra in der Statistik wird hervorgehoben, insbesondere in der multivariaten statistischen Analyse, der Hauptkomponentenanalyse und der Lösung linearer Regressionsprobleme. Das Video erwähnt auch das breite Anwendungsspektrum der linearen Algebra in Bereichen wie Signalverarbeitung, Computergrafik und sogar Physik, mit Beispielen wie Albert Einsteins Relativitätstheorie, die Tensoren und Tensorrechnung, eine Art lineare Algebra, verwendet.
Das Video untersucht weiter die praktische Anwendung der linearen Algebra bei maschinellen Lernaufgaben. Es stellt das Konzept der Verwendung linearer Algebraoperationen wie Zuschneiden, Skalieren und Scheren zur Manipulation von Bildern vor und zeigt, wie Notation und Operationen der linearen Algebra in diesem Zusammenhang eingesetzt werden können. Darüber hinaus erklärt das Video die beliebte Kodierungstechnik namens One-Hot-Kodierung für kategoriale Variablen. Die wichtigste beim maschinellen Lernen verwendete Datenstruktur, N-dimensionale Arrays oder ND-Arrays, wird vorgestellt, wobei die NumPy-Bibliothek in Python als leistungsstarkes Werkzeug zum Erstellen und Bearbeiten dieser Arrays diskutiert wird. Das Video behandelt wichtige Funktionen wie V-Stack und horizontales Stacking, die die Erstellung neuer Arrays aus vorhandenen Arrays ermöglichen.
Die Bearbeitung und der Zugriff auf Daten in NumPy-Arrays, die häufig zur Darstellung von Daten für maschinelles Lernen verwendet werden, werden erläutert. Das Video zeigt, wie man eindimensionale Listen mithilfe der Array-Funktion in Arrays umwandelt und zweidimensionale Datenarrays mithilfe von Listenlisten erstellt. Es behandelt auch Indizierungs- und Slicing-Vorgänge in NumPy-Arrays, einschließlich der Verwendung des Doppelpunktoperators für Slicing und negative Indizierung. Die Bedeutung des Slicing bei der Angabe von Eingabe- und Ausgabevariablen beim maschinellen Lernen wird hervorgehoben.
Im Video werden Techniken für die Arbeit mit mehrdimensionalen Datensätzen beim maschinellen Lernen besprochen. Es beginnt mit dem eindimensionalen Slicing und geht zum zweidimensionalen Slicing über, zusammen mit der Aufteilung der Daten in Eingabe- und Ausgabewerte für Training und Tests. Es wird die Array-Umformung behandelt und erklärt, wie man eindimensionale Arrays in zweidimensionale Arrays mit einer Spalte umformt und zweidimensionale Daten in dreidimensionale Arrays für Algorithmen umwandelt, die mehrere Stichproben eines oder mehrerer Zeitschritte und Merkmale erfordern. Das Konzept des Array-Broadcastings wird eingeführt, das die Verwendung von Arrays unterschiedlicher Größe in arithmetischen Operationen ermöglicht und so eine effektive Verarbeitung von Datensätzen unterschiedlicher Größe ermöglicht.
Das Video geht auch auf die Einschränkungen der Array-Arithmetik in NumPy ein, insbesondere darauf, dass arithmetische Operationen nur für Arrays mit denselben Abmessungen und Abmessungen mit derselben Größe ausgeführt werden können. Diese Einschränkung wird jedoch durch die integrierte Broadcasting-Funktion von NumPy überwunden, die das kleinere Array entlang der letzten nicht übereinstimmenden Dimension repliziert und so eine Arithmetik zwischen Arrays mit unterschiedlichen Formen und Größen ermöglicht. Das Video bietet drei Beispiele für die Übertragung, darunter skalare und eindimensionale Arrays, skalare in einem zweidimensionalen Array und eindimensionale Arrays in einem zweidimensionalen Array. Es wird darauf hingewiesen, dass das Senden einer strengen Regel folgt, die besagt, dass Arithmetik nur durchgeführt werden kann, wenn die Form jeder Dimension in den Arrays gleich ist oder eine von ihnen die Dimensionsgröße eins hat.
Anschließend stellt der Sprecher das Konzept von Vektoren vor, bei denen es sich um Tupel eines oder mehrerer Werte handelt, die Skalare genannt werden. Vektoren werden häufig durch Kleinbuchstaben wie „v“ dargestellt und können als Punkte oder Koordinaten in einem n-dimensionalen Raum betrachtet werden, wobei „n“ die Anzahl der Dimensionen darstellt. Die Erstellung von Vektoren als NumPy-Arrays in Python wird erklärt. Das Video behandelt auch Vektorarithmetikoperationen wie Vektoraddition und -subtraktion, die elementweise für Vektoren gleicher Länge ausgeführt werden, was zu einem neuen Vektor gleicher Länge führt. Darüber hinaus erklärt der Referent, wie Vektoren mit Skalaren multipliziert werden können, um ihre Größe zu skalieren, und demonstriert, wie man diese Operationen mithilfe von NumPy-Arrays in Python durchführt. Außerdem wird das Skalarprodukt zweier Vektoren besprochen, das einen Skalar ergibt und zur Berechnung der gewichteten Summe eines Vektors verwendet werden kann.
Der Fokus verlagert sich dann auf Vektornormen und ihre Bedeutung beim maschinellen Lernen. Vektornormen beziehen sich auf die Größe oder Länge eines Vektors und werden anhand eines Maßes berechnet, das den Abstand des Vektors vom Ursprung des Vektorraums zusammenfasst. Es wird betont, dass Vektornormen immer positiv sind, mit Ausnahme eines Vektors mit ausschließlich Nullwerten. Das Video stellt vier gängige Vektornormberechnungen vor, die beim maschinellen Lernen verwendet werden. Es beginnt mit der Vektor-L1-Norm, gefolgt von der L2-Norm (euklidische Norm) und der Max-Norm. Der Abschnitt definiert auch Matrizen und erklärt, wie man sie in Python manipuliert. Besprochen wird die Matrixarithmetik, einschließlich Matrix-Matrix-Multiplikation (Skalarprodukt), Matrix-Vektor-Multiplikation und Skalarmultiplikation. Eine Matrix wird als zweidimensionales Array von Skalaren mit einer oder mehreren Spalten und einer oder mehreren Zeilen beschrieben, typischerweise dargestellt durch Großbuchstaben wie „A“.
Als nächstes wird das Konzept der Matrixoperationen für maschinelles Lernen vorgestellt. Dazu gehören Matrixmultiplikation, Matrixdivision und Matrix-Skalarmultiplikation. Bei der Matrixmultiplikation, auch Matrix-Skalarprodukt genannt, muss die Anzahl der Spalten in der ersten Matrix gleich der Anzahl der Zeilen in der zweiten Matrix sein. Im Video wird erwähnt, dass die Punktfunktion in NumPy zur Implementierung dieser Operation verwendet werden kann. Außerdem wird das Konzept der Matrixtransponierung erläutert, bei dem eine neue Matrix durch Umdrehen der Anzahl der Zeilen und Spalten der ursprünglichen Matrix erstellt wird. Abschließend wird der Prozess der Matrixinversion besprochen, bei dem es darum geht, eine andere Matrix zu finden, die bei Multiplikation mit der Originalmatrix eine Identitätsmatrix ergibt.
Als Fortsetzung der Diskussion der Matrixinversion untersucht das Video dieses Konzept weiter. Das Invertieren einer Matrix wird durch eine hochgestellte negative 1 neben der Matrix angezeigt. Das Video erklärt, dass es bei der Matrixinversion darum geht, effiziente numerische Methoden zu finden. Es wird die Trace-Operation einer quadratischen Matrix eingeführt, die die Summe der Diagonalelemente berechnet und mit der Trace-Funktion in NumPy berechnet werden kann. Die Determinante einer quadratischen Matrix ist als skalare Darstellung des Volumens der Matrix definiert und kann auch mit der det-Funktion in NumPy berechnet werden. Kurz erwähnt wird der Rang einer Matrix, der die Anzahl der linear unabhängigen Zeilen oder Spalten in der Matrix schätzt und üblicherweise mithilfe der Singulärwertzerlegung berechnet wird. Abschließend wird das Konzept dünnbesetzter Matrizen erläutert und hervorgehoben, dass sie überwiegend Nullwerte enthalten und deren Darstellung und Arbeit rechenintensiv sein kann.
Das Video befasst sich dann mit spärlichen Matrizen, bei denen es sich um Matrizen handelt, die hauptsächlich aus Nullwerten bestehen und sich von dichten Matrizen unterscheiden, die meist Nicht-Null-Werte aufweisen. Die Sparsity wird durch die Berechnung des Sparsity-Scores quantifiziert. Dabei handelt es sich um die Anzahl der Nullwerte dividiert durch die Gesamtzahl der Elemente in der Matrix. Das Video betont zwei Hauptprobleme im Zusammenhang mit Sparsity: räumliche Komplexität und zeitliche Komplexität. Es wird darauf hingewiesen, dass die Darstellung und Arbeit mit dünn besetzten Matrizen rechenintensiv sein kann.
Um diese Herausforderungen anzugehen, wird im Video erwähnt, dass Scipy Tools zum Erstellen und Bearbeiten dünn besetzter Matrizen bereitstellt. Darüber hinaus wird hervorgehoben, dass viele lineare Algebrafunktionen in NumPy und Scipy auf dünn besetzten Matrizen arbeiten können, was effiziente Berechnungen und Operationen mit dünn besetzten Daten ermöglicht.
Sparse-Matrizen werden häufig beim angewandten maschinellen Lernen für Datenbeobachtungen und Datenaufbereitung verwendet. Ihre geringe Dichte ermöglicht eine effizientere Speicherung und Verarbeitung großer Datensätze mit einer erheblichen Anzahl von Nullwerten. Durch die Nutzung der Sparsity-Struktur können Algorithmen für maschinelles Lernen von einer geringeren Speichernutzung und schnelleren Berechnungen profitieren.
Anschließend werden im Video verschiedene Arten von Matrizen besprochen, die häufig in der linearen Algebra verwendet werden, insbesondere solche, die für maschinelles Lernen relevant sind. Es werden quadratische Matrizen eingeführt, bei denen die Anzahl der Zeilen gleich der Anzahl der Spalten ist. Es werden auch rechteckige Matrizen erwähnt, die eine unterschiedliche Anzahl von Zeilen und Spalten aufweisen. Das Video erklärt die Hauptdiagonale einer quadratischen Matrix, die aus Elementen mit gleichen Zeilen- und Spaltenindizes besteht. Die Ordnung einer quadratischen Matrix, definiert als die Anzahl der Zeilen oder Spalten, wird ebenfalls behandelt.
Darüber hinaus stellt das Video symmetrische Matrizen vor, das sind quadratische Matrizen, die gleich ihrer Transponierten sind. Dreiecksmatrizen, einschließlich oberer und unterer Dreiecksmatrizen, werden erklärt. Diagonalmatrizen, bei denen alle nichtdiagonalen Elemente Null sind, werden ebenfalls besprochen. Identitätsmatrizen, das sind quadratische Matrizen mit Einsen auf der Hauptdiagonale und Nullen an anderer Stelle, werden im Kontext ihrer Rolle als multiplikative Identitäten erklärt. Es werden auch orthogonale Matrizen eingeführt, die entstehen, wenn zwei Vektoren ein Skalarprodukt gleich Null haben.
Im Video werden dann orthogonale Matrizen und Tensoren besprochen. Eine orthogonale Matrix ist eine spezielle Art einer quadratischen Matrix, bei der die Spalten und Zeilen orthogonale Einheitsvektoren sind. Diese Matrizen sind recheneffizient und stabil für die Berechnung ihrer Umkehrung, wodurch sie in verschiedenen Anwendungen, einschließlich Deep-Learning-Modellen, nützlich sind. Das Video erwähnt außerdem, dass Tensoren in TensorFlow eine grundlegende Datenstruktur und eine Verallgemeinerung von Vektoren und Matrizen sind. Tensoren werden als mehrdimensionale Arrays dargestellt und können in Python mithilfe von n-dimensionalen Arrays, ähnlich wie Matrizen, manipuliert werden. Das Video hebt hervor, dass elementweise Tensoroperationen wie Addition und Subtraktion an Tensoren, Matrizen und Vektoren durchgeführt werden können, was eine Intuition für höhere Dimensionen vermittelt.
Als nächstes stellt das Video die Matrixzerlegung vor, eine Methode zum Zerlegen einer Matrix in ihre Bestandteile. Die Matrixzerlegung vereinfacht komplexe Matrixoperationen und ermöglicht effiziente Berechnungen. Es werden zwei weit verbreitete Matrixzerlegungstechniken behandelt: die LU-Zerlegung (Lower-Upper) für quadratische Matrizen und die QR-Zerlegung (QR-Faktorisierung) für rechteckige Matrizen.
Die LU-Zerlegung kann lineare Gleichungen im Zusammenhang mit linearen Regressionsproblemen vereinfachen und Berechnungen wie Determinante und Umkehrung einer Matrix erleichtern. Die QR-Zerlegung findet Anwendung bei der Lösung linearer Gleichungssysteme. Beide Zerlegungsmethoden können mithilfe integrierter Funktionen im NumPy-Paket in Python implementiert werden und bieten effiziente und zuverlässige Lösungen für verschiedene Probleme der linearen Algebra.
Darüber hinaus wird im Video die Cholesky-Zerlegung besprochen, die speziell für symmetrische und positiv definite Matrizen verwendet wird. Die Cholesky-Zerlegung wird durch eine untere Dreiecksmatrix dargestellt und gilt für die Zerlegung symmetrischer Matrizen als fast doppelt so effizient wie die LU-Zerlegung.
Im Video wird kurz erwähnt, dass Matrixzerlegungsmethoden, einschließlich der Eigenzerlegung, zur Vereinfachung komplexer Operationen eingesetzt werden. Die Eigenzerlegung zerlegt eine Matrix in ihre Eigenvektoren und Eigenwerte. Eigenvektoren sind Koeffizienten, die Richtungen darstellen, während Eigenwerte Skalare sind. Sowohl Eigenvektoren als auch Eigenwerte haben praktische Anwendungen, beispielsweise zur Dimensionsreduktion und zur Durchführung komplexer Matrixoperationen.
Abschließend geht das Video auf das Konzept der Singular Value Decomposition (SVD) und seine Anwendungen beim maschinellen Lernen ein. SVD wird in verschiedenen Matrixoperationen und Datenreduktionsmethoden beim maschinellen Lernen verwendet. Es spielt eine entscheidende Rolle bei Berechnungen wie der linearen Regression der kleinsten Quadrate, der Bildkomprimierung und der Rauschunterdrückung von Daten.
Das Video erklärt, dass SVD die Zerlegung einer Matrix in drei separate Matrizen ermöglicht: U, Σ und V. Die U-Matrix enthält die linken Singulärvektoren, Σ ist eine Diagonalmatrix mit den Singulärwerten und V enthält die rechten Singulärvektoren. Durch die Rekonstruktion der Originalmatrix aus diesen Komponenten kann man eine Annäherung an die Originaldaten erhalten und gleichzeitig deren Dimensionalität reduzieren.
Eine der Hauptanwendungen von SVD ist die Dimensionsreduktion. Durch Auswahl einer Teilmenge der signifikantesten Singulärwerte und ihrer entsprechenden Singulärvektoren ist es möglich, die Daten in einem niedrigerdimensionalen Raum darzustellen, ohne wichtige Informationen zu verlieren. Diese Technik ist besonders nützlich in Fällen, in denen die Daten eine hohe Dimensionalität aufweisen, da sie eine effizientere Speicherung und Berechnung ermöglicht.
Das Video zeigt, dass SVD erfolgreich in der Verarbeitung natürlicher Sprache mithilfe einer Technik namens Latent Semantic Analysis (LSA) oder Latent Semantic Indexing (LSI) eingesetzt wurde. Durch die Darstellung von Textdokumenten als Matrizen und die Durchführung von SVD kann LSA die zugrunde liegende semantische Struktur der Dokumente erfassen und so Aufgaben wie Dokumentähnlichkeit und Themenmodellierung ermöglichen.
Darüber hinaus stellt das Video die Truncated SVD-Klasse vor, die die Fähigkeit zur Reduzierung der Dimensionalität einer Matrix direkt implementiert. Mit der verkürzten SVD wird es möglich, die ursprüngliche Matrix in eine niedrigerdimensionale Darstellung umzuwandeln und dabei die wichtigsten Informationen beizubehalten. Diese Technik ist besonders beim Umgang mit großen Datensätzen von Vorteil, da sie eine effizientere Verarbeitung und Analyse ermöglicht.
Zusammenfassend hat das Video verschiedene Themen im Zusammenhang mit linearer Algebra für maschinelles Lernen behandelt. Es wurde die Bedeutung des Erlernens der linearen Algebra als grundlegender Baustein für das Verständnis von Analysis und Statistik im Kontext des maschinellen Lernens hervorgehoben. In dem Video wurden die Anwendungen der linearen Algebra beim maschinellen Lernen erörtert, beispielsweise die Anpassung und Entwicklung von Algorithmen, die numerische lineare Algebra, die statistische Analyse und verschiedene andere Bereiche wie Signalverarbeitung und Computergrafik.
Darüber hinaus wurden in dem Video Schlüsselkonzepte der linearen Algebra untersucht, darunter Vektoren, Matrizen, Matrixoperationen, Vektornormen, Matrixzerlegungstechniken und dünn besetzte Matrizen. Es wurde erklärt, wie diese Konzepte beim maschinellen Lernen verwendet werden, und Einblicke in ihre praktischen Anwendungen gegeben.
Durch das Verständnis der linearen Algebra können Praktiker des maschinellen Lernens ein tieferes Verständnis der zugrunde liegenden mathematischen Grundlagen von Algorithmen des maschinellen Lernens erlangen und diese effektiv auf reale Probleme anwenden. Die lineare Algebra dient als leistungsstarkes Werkzeug zur Datenmanipulation, Dimensionsreduzierung und Optimierung und ermöglicht effiziente und effektive Lösungen für maschinelles Lernen.
Eine vollständige Einführung in XGBoost für Ingenieure des maschinellen Lernens
Eine vollständige Einführung in XGBoost für Ingenieure des maschinellen Lernens
Im Video bietet der Dozent eine umfassende Einführung in XGBoost für Machine-Learning-Ingenieure. Sie erklären, dass XGBoost eine Open-Source-Bibliothek für maschinelles Lernen ist, die für ihre Fähigkeit bekannt ist, schnell hochpräzise Klassifizierungs- und Regressionsmodelle zu erstellen. Es hat als erste Wahl für die Erstellung realer Modelle an Beliebtheit gewonnen, insbesondere beim Umgang mit stark strukturierten Datensätzen. XGBoost wurde von Taiki Chen verfasst und basiert auf der Gradient-Boost-Entscheidungsbaumtechnik, die eine schnelle und effiziente Modellerstellung ermöglicht.
Der Dozent betont, dass XGBoost mehrere Schnittstellen unterstützt, darunter Python- und Scikit-Learn-Implementierungen. Anschließend demonstrieren sie XGBoost und stellen verschiedene Module zum Laden von Daten und zum Erstellen von Modellen vor.
Das Video konzentriert sich dann auf die Vorbereitung des Datensatzes für das Training eines XGBoost-Modells. Der Dozent betont, wie wichtig es ist, die Daten in Trainings- und Testsätze zu unterteilen. Sie identifizieren die Zielvariable als binäres Klassifizierungsproblem und erklären den Prozess der Einstellung der notwendigen Hyperparameter für das XGBoost-Modell. Sobald das Modell anhand der Trainingsdaten trainiert wurde, bewerten sie seine Genauigkeit anhand der Testdaten anhand der Genauigkeitsbewertung als Metrik.
Um ein besseres Verständnis von XGBoost zu vermitteln, befasst sich der Kursleiter mit dem Konzept des Gradient Boosting und seiner Rolle in der breiteren Kategorie traditioneller Modelle für maschinelles Lernen. Sie erklären, dass Gradient Boosting eine Technik ist, die ein schwaches Modell mit anderen Modellen desselben Typs kombiniert, um ein genaueres Modell zu erstellen. In diesem Prozess wird jeder nachfolgende Baum für die Vorhersagereste des vorherigen Baums erstellt. Der Dozent betont, dass Entscheidungsbäume beim Gradient Boosting verwendet werden, da sie eine grafische Darstellung möglicher Entscheidungslösungen basierend auf gegebenen Bedingungen liefern. Sie erwähnen auch, dass der Entwurf eines Entscheidungsbaums einen gut dokumentierten Denkprozess erfordert, um potenzielle Lösungen effektiv zu identifizieren.
Das Video untersucht weiter die Erstellung binärer Entscheidungsbäume mithilfe der rekursiven binären Aufteilung. Dieser Prozess beinhaltet die gierige Auswertung aller Eingabevariablen und Teilungspunkte, um eine Kostenfunktion zu minimieren, die die Nähe der vorhergesagten Werte zu den tatsächlichen Werten misst. Der Dozent erklärt, dass die Aufteilung mit den geringsten Kosten gewählt wird und die resultierenden Gruppen rekursiv weiter unterteilt werden können. Sie betonen, dass der verwendete Algorithmus gierig ist, da er sich darauf konzentriert, bei jedem Schritt die beste Entscheidung zu treffen. Allerdings werden Entscheidungsbäume mit weniger Teilungen bevorzugt, um eine bessere Verständlichkeit zu gewährleisten und das Risiko einer Überanpassung der Daten zu verringern. Der Dozent betont, dass XGBoost Mechanismen zur Verhinderung einer Überanpassung bereitstellt, z. B. die Begrenzung der maximalen Tiefe jedes Baums und das Beschneiden irrelevanter Zweige. Darüber hinaus behandeln sie die Etikettenkodierung und demonstrieren das Laden des Iris-Datensatzes mit scikit-learn.
Anschließend behandelt das Video den Prozess der Codierung des Ziellabels als numerische Variable mithilfe der Label-Encoder-Methode. Nach der Aufteilung der Daten in Trainings- und Testdatensätze definiert und trainiert der Kursleiter den XGBoost-Klassifikator anhand der Trainingsdaten. Anschließend verwenden sie das trainierte Modell, um Vorhersagen zum Testdatensatz zu treffen und erreichen dabei eine Genauigkeit von 90 %. Das Konzept des Ensemble-Lernens wird als Methode zum Kombinieren mehrerer Modelle eingeführt, um die Vorhersagegenauigkeit zu verbessern und letztendlich die Effizienz des Lernalgorithmus zu steigern. Der Dozent betont, wie wichtig es ist, für Klassifizierungs- oder Regressionsprobleme das richtige Modell auszuwählen, um optimale Ergebnisse zu erzielen.
Das Video befasst sich mit dem Konzept von Bias und Varianz in Modellen des maschinellen Lernens und betont die Notwendigkeit eines Gleichgewichts zwischen beiden. Ensemble-Lernen wird als eine Technik vorgestellt, um dieses Gleichgewicht zu erreichen, indem Gruppen schwacher Lernender kombiniert werden, um komplexere Modelle zu erstellen. Zwei Ensemble-Techniken, Bagging und Boosting, werden eingeführt. Bagging zielt darauf ab, die Varianz zu reduzieren, indem Teilmengen von Daten erstellt werden, um Entscheidungsbäume zu trainieren und ein Ensemble von Modellen mit hoher Varianz und geringer Verzerrung zu erstellen. Beim Boosting hingegen geht es um das sequentielle Lernen von Modellen mit Entscheidungsbäumen, was die Korrektur von Fehlern früherer Modelle ermöglicht. Der Dozent betont, dass Gradient Boosting eine spezielle Art von Boosting ist, die eine differenzierbare Verlustfunktion mithilfe schwacher Lernender in Form von Regressionsbäumen optimiert.
Das Video erklärt das Konzept der Gradientenverstärkung im Detail und skizziert den dreistufigen Prozess. Der erste Schritt besteht darin, schwache Lernende (z. B. Entscheidungsbäume) iterativ hinzuzufügen, um Verluste zu minimieren. Der zweite Schritt ist das sequentielle Hinzufügen von Bäumen, und der letzte Schritt konzentriert sich auf die Reduzierung von Modellfehlern durch weitere Iterationen. Um den Prozess zu demonstrieren, zeigt das Video die Verwendung einer k-fachen Kreuzvalidierung zur Segmentierung der Daten. Durch XGBoost werden für jede Falte Punkte erzielt. Der Dozent wählt Entscheidungsbäume als schwache Lernende aus und achtet dabei auf eine geringe Tiefe, um eine Überanpassung zu vermeiden. Schließlich wird eine Verlustfunktion als Maß dafür definiert, wie gut das maschinelle Lernmodell zu den Daten passt.
Die Kernschritte der Gradientenverstärkung werden erläutert, darunter die Optimierung der Verlustfunktion, die Nutzung schwacher Lernender (häufig Entscheidungsbäume) und die additive Kombination mehrerer schwacher Lernender durch Ensemble-Lernen. Das Video behandelt auch praktische Aspekte der Verwendung von XGBoost, z. B. den Umgang mit fehlenden Werten, das Speichern von Modellen auf der Festplatte und die Verwendung eines frühen Stopps. Zur Veranschaulichung verschiedener Anwendungsfälle von XGBoost werden Demonstrationen mit Python-Code bereitgestellt. Darüber hinaus betont das Video die Bedeutung der Datenbereinigung, einschließlich Techniken zum Umgang mit fehlenden Werten, wie etwa der Mittelwertimputation.
Der Redner erörtert, wie wichtig es ist, Daten ordnungsgemäß zu bereinigen, anstatt sich bei der Arbeit ausschließlich auf Algorithmen zu verlassen. Sie zeigen, wie das Weglassen leerer Werte die Modellgenauigkeit verbessern und vor Algorithmen warnen kann, die leere Werte verarbeiten. Das Konzept des Beizens, bei dem trainierte Modelle zur späteren Verwendung auf der Festplatte gespeichert werden, wird mithilfe der Pickle-Bibliothek in Python eingeführt. Der Referent zeigt, wie Modelle gespeichert und geladen werden. Sie zeigen auch, wie man die Wichtigkeit jedes Attributs in einem Datensatz mithilfe der Plot-Wichtigkeitsfunktion in XGBoost und der Matplotlib-Bibliothek darstellt.
Der Redner erörtert die Bedeutung der Analyse und des Testens verschiedener Szenarien beim Erstellen von Modellen für maschinelles Lernen und betont, dass die Feature-Wichtigkeitswerte von XGBoost möglicherweise nicht immer die tatsächliche Auswirkung einer Funktion auf die Genauigkeit des Modells widerspiegeln. Sie verwenden das Beispiel des Titanic-Datensatzes, um zu demonstrieren, wie das Hinzufügen des Attributs „Geschlecht“ die Modellgenauigkeit verbessert, obwohl es bei der Merkmalswichtigkeitsbewertung niedrig eingestuft wird. Der Redner betont, wie wichtig es ist, verschiedene Szenarien zu testen und sich nicht nur auf die Bewertung der Feature-Wichtigkeit zu verlassen. Sie erwähnen auch, dass XGBoost die Leistung eines Testsatzes während des Trainings bewerten und melden kann.
Das Video erklärt, wie man die Leistung eines XGBoost-Modells während des Trainings überwacht, indem man eine Bewertungsmetrik angibt und ein Array von x- und y-Paaren übergibt. Die Leistung des Modells für jeden Bewertungssatz wird gespeichert und nach dem Training verfügbar gemacht. Das Video behandelt Lernkurven, die Einblick in das Verhalten des Modells geben und dazu beitragen, eine Überanpassung zu verhindern, indem das Lernen frühzeitig gestoppt wird. Das frühe Stoppen wird als Technik eingeführt, um das Training nach einer festgelegten Anzahl von Epochen zu stoppen, wenn keine Verbesserung im Validierungsscore beobachtet wird.
Das Video behandelt die Verwendung früher Stopprunden in XGBoost und demonstriert den Aufbau eines Regressionsmodells zur Bewertung der Immobilienpreise in Boston. Die Vorteile der Parallelität bei der Gradientenverstärkung werden diskutiert, wobei der Schwerpunkt auf der Konstruktion einzelner Bäume und der effizienten Vorbereitung von Eingabedaten liegt. Das Video demonstriert die Multithreading-Unterstützung, bei der alle Kerne des Systems zur gleichzeitigen Ausführung von Berechnungen genutzt werden, was zu einer schnelleren Programmausführung führt. Obwohl XGBoost in erster Linie auf Klassifizierungsprobleme ausgerichtet ist, unterstreicht das Video seine Fähigkeit, auch bei der Erstellung von Regressionsmodellen hervorragende Leistungen zu erbringen.
Der Sprecher erstellt eine Liste, um die Anzahl der Iterationen für ein Beispiel zu speichern, und verwendet eine for-Schleife, um die Ausführungsgeschwindigkeit des Modells basierend auf der Anzahl der Threads zu testen. Sie drucken die Geschwindigkeit des Builds für jede Iteration aus und zeichnen die Ergebnisse auf. Sie zeigen, wie die Geschwindigkeit des Modells mit zunehmender Anzahl von Threads abnimmt. Anschließend erörtert der Redner das Hyperparameter-Tuning, bei dem Parameter in einem Modell angepasst werden, um dessen Leistung zu verbessern. Sie untersuchen die Standardparameter für XGBoost und scikit-learn und erwähnen, dass die Optimierung von Hyperparametern für die Optimierung der Leistung eines XGBoost-Modells unerlässlich ist. Das Video erklärt, dass es sich bei Hyperparametern um Einstellungen handelt, die nicht aus den Daten gelernt werden, sondern vom Benutzer manuell festgelegt werden. Beim Optimieren von Hyperparametern wird systematisch nach der besten Kombination von Parameterwerten gesucht, die zur höchsten Modellleistung führt.
Um eine Hyperparameter-Optimierung durchzuführen, stellt das Video zwei gängige Ansätze vor: Rastersuche und Zufallssuche. Bei der Rastersuche wird ein Raster aus Hyperparameterwerten definiert und jede Kombination umfassend ausgewertet. Bei der Zufallssuche hingegen werden zufällig Hyperparameterkombinationen aus einem vordefinierten Suchraum ausgewählt. Das Video empfiehlt die Verwendung einer Zufallssuche, wenn der Suchraum groß ist oder die Anzahl der Hyperparameter hoch ist.
Das Video demonstriert die Optimierung von Hyperparametern mithilfe der RandomizedSearchCV-Klasse von scikit-learn. Sie definieren ein Parameterraster, das verschiedene Werte für Hyperparameter wie Lernrate, maximale Tiefe und Teilprobenverhältnis enthält. Die RandomizedSearchCV-Klasse führt eine Zufallssuche mit Kreuzvalidierung durch und bewertet die Leistung jeder Parameterkombination. Nach der Abstimmung werden die besten Hyperparameter ausgewählt und das Modell mit diesen optimalen Werten trainiert.
Der Sprecher erklärt, dass die Abstimmung von Hyperparametern dabei hilft, den besten Kompromiss zwischen Unteranpassung und Überanpassung zu finden. Es ist wichtig, ein Gleichgewicht zu finden und eine Überanpassung zu vermeiden, indem Hyperparameter sorgfältig basierend auf dem spezifischen Datensatz und dem vorliegenden Problem ausgewählt werden.
Zusätzlich zur Hyperparameter-Optimierung wird in dem Video die Bedeutung von Funktionen in XGBoost-Modellen erörtert. Die Feature-Wichtigkeit liefert Erkenntnisse darüber, welche Features den größten Einfluss auf die Vorhersagen des Modells haben. Der Sprecher erklärt, dass die Wichtigkeit von Merkmalen durch den durchschnittlichen Gewinn bestimmt wird, der die Verbesserung der Verlustfunktion misst, die ein Merkmal mit sich bringt, wenn es in einem Entscheidungsbaum verwendet wird. Ein höherer durchschnittlicher Gewinn weist auf eine höhere Bedeutung hin.
Das Video zeigt, wie Sie die Bedeutung von Funktionen mithilfe der XGBoost-Bibliothek extrahieren und visualisieren. Sie zeichnen ein Balkendiagramm mit den wichtigsten Funktionen und ihren entsprechenden Wichtigkeitswerten. Der Redner stellt fest, dass die Wichtigkeit von Merkmalen bei der Auswahl von Merkmalen, der Reduzierung der Dimensionalität und dem Gewinnen von Erkenntnissen über das zugrunde liegende Problem hilfreich sein kann.
Gegen Ende des Videos erwähnt der Sprecher kurz weitere fortgeschrittene Themen im Zusammenhang mit XGBoost. Sie behandeln den Umgang mit unausgeglichenen Datensätzen durch Anpassen des Hyperparameters „scale_pos_weight“, den Umgang mit fehlenden Werten mithilfe der integrierten Funktion von XGBoost und den Umgang mit kategorialen Variablen durch One-Hot-Codierung oder die Verwendung der integrierten Unterstützung für kategoriale Funktionen in XGBoost.
Das Video bietet einen umfassenden Überblick über XGBoost und deckt dessen Schlüsselkonzepte, Implementierung, Hyperparameter-Tuning und Feature-Wichtigkeitsanalyse ab. Die Demonstrationen und Codebeispiele veranschaulichen die praktischen Aspekte der Arbeit mit XGBoost in Python. Es dient als wertvolle Ressource für Ingenieure des maschinellen Lernens, die XGBoost für ihre Klassifizierungs- und Regressionsaufgaben nutzen möchten.
Feature-Engineering-Fallstudie in Python für Ingenieure des maschinellen Lernens
Feature-Engineering-Fallstudie in Python für Ingenieure des maschinellen Lernens
Der Kursleiter beginnt den Kurs mit einer Einführung in das Konzept des Feature Engineering und seiner entscheidenden Rolle bei der Wertschöpfung aus den riesigen Datenmengen, die jeden Tag generiert werden. Sie betonen die Bedeutung des Feature-Engineerings für die Maximierung des aus chaotischen Daten gewonnenen Werts. Es wird davon ausgegangen, dass die Lernenden über Python-Grundkenntnisse sowie Erfahrung mit NumPy, Pandas und Scikit-Learn verfügen.
Der Dozent betont die Bedeutung der explorativen Datenanalyse und Datenbereinigung beim Aufbau eines Modells für maschinelles Lernen. Sie erklären, dass diese Phasen im Mittelpunkt des Kurses stehen werden. Während die Lernenden im letzten Kapitel die gesamte Pipeline durchgehen, liegt der Schwerpunkt vor allem auf dem Feature Engineering.
Der Dozent betont, dass Feature Engineering für die Verbesserung der Modellleistung unerlässlich ist. Sie erklären, dass es beim Feature Engineering um die Umwandlung von Rohdaten in Features geht, die das zugrunde liegende Signal für Modelle des maschinellen Lernens besser darstellen. Die Qualität der Funktionen wirkt sich direkt auf die Leistung des Modells aus, da gute Funktionen selbst einfache Modelle leistungsstark machen können. Der Dozent empfiehlt, beim Auswählen von Merkmalen, beim Entfernen irrelevanter Merkmale und beim Einbeziehen von Faktoren, die für das zu analysierende Problem relevant sind, gesunden Menschenverstand zu verwenden.
Im Video werden verschiedene Reinigungstechniken und technische Funktionen behandelt. Ausreißer werden entfernt, Daten werden normalisiert und transformiert, um Schiefe zu beseitigen, Merkmale werden kombiniert, um nützlichere Merkmale zu erstellen, und kategoriale Variablen werden aus kontinuierlichen Merkmalen erstellt. Ziel dieser Techniken ist es, Funktionen zu erhalten, die wichtige Trends in den Daten genau erfassen und gleichzeitig irrelevante Informationen verwerfen. Als Beispiel wird der Titanic-Datensatz vorgestellt, der Informationen über die Passagiere an Bord des Schiffes enthält.
Der Dozent erörtert das Problem der Klassenungleichheit beim maschinellen Lernen, bei dem es deutlich weniger positive als negative Fälle gibt. Sie schlagen vor, das Modell anzupassen, um das Signal in beiden Fällen besser zu erkennen, beispielsweise durch Downsampling der negativen Klasse. Da der im Beispiel verwendete Datensatz jedoch nicht stark unausgeglichen ist, fährt der Kursleiter mit der Erkundung der Datenfunktionen fort. Die grundlegende explorative Datenanalyse wird für kontinuierliche Merkmale durchgeführt und nicht numerische Merkmale wie Name, Ticket, Geschlecht, Kabine und eingeschifft werden weggelassen. Der bereinigte Datensatz wird angezeigt und die Verteilung und Korrelation der Merkmale wird untersucht. Es wurde festgestellt, dass die Merkmale „p-Klasse“ und „Fahrpreis“ die stärkste Korrelation mit der Überlebensspalte aufweisen, was auf ihre potenzielle Nützlichkeit bei der Erstellung von Vorhersagen hinweist.
An den kontinuierlichen Merkmalen wird eine weitere explorative Datenanalyse durchgeführt. Nicht-numerische Merkmale wie Name und Ticket werden gelöscht und die ersten fünf Zeilen des Datensatzes werden gedruckt. Die Daten werden mithilfe von Pandas-Funktionen beschrieben, die fehlende Werte und eine binäre Zielvariable namens „Survived“ aufdecken. Die Korrelationsmatrix wird analysiert, um die Korrelationen zwischen Merkmalen und deren Beziehung zu „Überlebt“ zu bestimmen. Es wird betont, wie wichtig es ist, die vollständige Verteilung der Daten zu betrachten, da die ausschließliche Verwendung von Mittel- oder Medianwerten zu ungenauen Schlussfolgerungen führen kann. Mithilfe von Diagrammen und Visualisierungen wird der Zusammenhang zwischen kategorialen Merkmalen und der Überlebensrate untersucht und Trends wie höhere Überlebensraten bei Passagieren der ersten Klasse und solchen mit weniger Familienmitgliedern aufgedeckt.
Der Dozent betont die Bedeutung des Feature-Engineerings und rät davon ab, Features übermäßig zu verdichten, ohne sie ordnungsgemäß zu testen. Sie besprechen den Prozess der Untersuchung und Entwicklung kategorialer Merkmale, einschließlich der Identifizierung fehlender Werte und der Anzahl eindeutiger Werte in jedem Merkmal. Als hilfreicher Ansatz für ein besseres Verständnis des Datensatzes wird die Gruppierung von Merkmalen und die Analyse des Durchschnittswerts für die Zielvariable in jeder Gruppe empfohlen. Der Zusammenhang zwischen dem fehlenden Kabinenmerkmal und der Überlebensrate wird untersucht, was zur Entdeckung eines starken Indikators für die Überlebensrate trotz des scheinbar geringen Werts des Merkmals führt.
Die Untersuchung von Features zeigt, dass Titel, Kabinenindikatoren und Geschlecht einen starken Zusammenhang mit dem Überleben haben, während das eingeführte Feature überflüssig ist. Der Zusammenhang zwischen Kabine und Überlebensrate wird durch die Beobachtung erklärt, dass mehr Menschen, die in Cherbourg an Bord gingen, über Kabinen verfügten, was zu einer höheren Überlebensrate führte. Die Anzahl der unmittelbaren Familienangehörigen an Bord wird in einem Merkmal zusammengefasst und aufgrund ihrer Korrelation entweder die Passagierklasse oder der Tarif vorgeschlagen.
Der Dozent erklärt, dass der nächste Schritt darin besteht, die Funktionen auf der Grundlage der Erkenntnisse aus der explorativen Datenanalyse zu entwickeln. Sie beginnen mit der Erstellung einer neuen Funktion namens „Titel“ aus der Funktion „Name“. Die Funktion „Titel“ extrahiert den Titel aus dem Namen jedes Passagiers (z. B. Herr, Frau, Fräulein), da er zusätzliche Informationen zum sozialen Status und zur Überlebensrate liefern kann. Der Einfachheit halber wird die Funktion „Titel“ dann auf numerische Werte abgebildet.
Als nächstes konzentriert sich der Kursleiter auf die Funktion „Kabine“, bei der zunächst viele Werte fehlten. Bei der Analyse der Überlebensrate von Passagieren mit und ohne Kabineninformationen wurde jedoch festgestellt, dass eine aufgezeichnete Kabinennummer eine höhere Überlebensrate hatte. Basierend auf dieser Erkenntnis wird ein neues binäres Feature namens „HasCabin“ erstellt, das anzeigt, ob ein Passagier über eine aufgezeichnete Kabine verfügt oder nicht.
Anschließend befasst sich der Ausbilder mit der Funktion „Sex“. Da Modelle für maschinelles Lernen normalerweise besser mit numerischen Daten funktionieren, wird die Funktion „Geschlecht“ binären Werten zugeordnet, wobei 0 für männlich und 1 für weiblich steht.
Nach der Entwicklung der Funktion „Geschlecht“ befasst sich der Ausbilder mit der Funktion „Eingeschifft“, die den Einschiffungshafen angibt (C = Cherbourg, Q = Queenstown, S = Southampton). Es wurde jedoch zuvor festgestellt, dass die Funktion „Eingeschifft“ redundant ist und keinen wesentlichen Beitrag zur Vorhersage des Überlebens leistet. Daher wird es aus dem Datensatz gelöscht.
Der Ausbilder konzentriert sich dann auf die Merkmale „Pclass“ und „Fare“, die während der explorativen Datenanalyse starke Korrelationen mit dem Überleben zeigten. Diese Funktionen bleiben unverändert, da sie bereits in einem geeigneten Format für das maschinelle Lernmodell vorliegen.
In dieser Phase betont der Dozent die Bedeutung der Datenvorverarbeitung und der Vorbereitung der Funktionen für das Modell. Der Datensatz wird in Trainings- und Testsätze aufgeteilt, um die Leistung des Modells genau zu bewerten. Fehlende Werte in der Funktion „Alter“ werden anhand des Durchschnittsalters der Passagiere unterstellt, und alle Funktionen werden mithilfe der Vorverarbeitungsfunktionen von Scikit-Learn so standardisiert, dass sie einen Mittelwert von Null und eine Einheitsvarianz aufweisen.
Abschließend geht der Dozent kurz auf das Konzept der One-Hot-Codierung für kategoriale Features ein und erwähnt, dass es im nächsten Video ausführlicher behandelt wird. One-Hot-Codierung ist eine gängige Technik, mit der kategoriale Variablen als binäre Vektoren dargestellt werden, damit das Modell sie korrekt interpretieren kann.
Zusammenfassend stellte der Dozent in diesem Teil des Kurses das Konzept des Feature Engineering vor und erläuterte seine Bedeutung für maschinelles Lernen. Sie führten eine explorative Datenanalyse durch, bereinigten den Datensatz und entwickelten Funktionen auf der Grundlage der gewonnenen Erkenntnisse. Der Kursleiter demonstrierte, wie man neue Features erstellt, kategoriale Features numerischen Werten zuordnet und redundante Features entfernt. Die nächsten Schritte umfassten die Datenvorverarbeitung und die Vorbereitung der Funktionen für das maschinelle Lernmodell.
Bitte beachten Sie, dass die obige Zusammenfassung eine hypothetische Fortsetzung ist, die auf den allgemeinen Themen basiert, die normalerweise in einem Feature-Engineering-Kurs behandelt werden. Die tatsächlichen Inhalte und Beispiele können je nach Kurs und Dozent variieren.
Maschinelles Lernen mit BigQuery auf der Cloud-Plattform von Google
Maschinelles Lernen mit BigQuery auf der Cloud-Plattform von Google
Das Video bespricht den Inhalt eines Kurses, der sich auf die Verwendung von BigQuery für maschinelles Lernen konzentriert. BigQuery ist ein Enterprise Data Warehouse, das zunächst intern bei Google verwendet wurde und später zu einem Cloud-Dienst wurde. Es ist hoch skalierbar und serverlos, kann Petabytes an Daten aufnehmen und schnelle Abfrageergebnisse liefern. Der Kursunterricht basiert auf Fallstudien aus der Praxis und führt die Lernenden durch den Prozess der Erstellung von Modellen für maschinelles Lernen, von der Datenbeschaffung bis zur Modellerstellung. Während des gesamten Kurses verwenden die Lernenden BigQuery zum Erstellen ihrer Modelle. Dazu müssen sie ein Google Cloud Platform (GCP)-Konto speziell für BigQuery einrichten.
Das Video erläutert die Leitprinzipien von Google für die Skalierung von Hardwareressourcen und betont die Entscheidung für eine Skalierung nach außen statt nach oben. Google ist sich bewusst, dass Hardware jederzeit ausfallen kann, daher sollten Designs potenzielle Ausfälle berücksichtigen. Darüber hinaus nutzt Google handelsübliche Hardware, die erschwinglich ist und Anbieterflexibilität ermöglicht. Aufgrund der hohen Hardwarekosten ist die Skalierung der Skalierung vorzuziehen. Google hat Technologien wie GFS, MapReduce und Bigtable entwickelt, die zu einer skalierten Hardwarearchitektur geführt haben. Colossus hat GFS ersetzt und dient als zugrunde liegendes verteiltes Subsystem für die Technologien von Google, einschließlich BigQuery.
Der Dozent gibt einen Überblick über die weltweit verbreitete Datenbanklösung Spanner von Google, die für die Verwaltung verteilter Transaktionen auf Colossus setzt. Das Video zeigt auch den Prozess der Anmeldung und Verwaltung von Rechnungskonten innerhalb der Google Cloud Platform. Benutzer können ein GCP-Konto erstellen, indem sie die Website der Plattform besuchen, den Bedingungen zustimmen und die erforderlichen Informationen bereitstellen. Neuen Nutzern wird ein Guthaben von 300 US-Dollar zur Nutzung auf GCP gewährt, das über den Abrechnungsbereich überwacht werden kann. Der Dozent empfiehlt, Budgetbenachrichtigungen einzurichten, um Benachrichtigungen zu erhalten, wenn bestimmte Abrechnungsziele erreicht sind.
Die Erstellung und der Zweck von BigQuery werden ausführlich besprochen. Das exponentielle Datenwachstum von Google machte die Entwicklung von BigQuery erforderlich, das interaktive Abfragen über große Datenmengen ermöglicht. BigQuery kann Abfragen verarbeiten, unabhängig davon, ob sie 50 Zeilen oder 50 Milliarden Zeilen umfassen. Sein nicht standardmäßiger SQL-Dialekt ermöglicht eine kurze Lernkurve und kann die SQL-Ausführung auf Tausenden von Computern parallelisieren. Während BigQuery strukturierte Daten speichert, unterscheidet es sich von relationalen Datenbanken durch die Unterstützung verschachtelter Datensatztypen innerhalb von Tabellen, wodurch die Speicherung verschachtelter Strukturen ermöglicht wird.
Die Architektur von BigQuery wird erläutert und der Parallelisierungsansatz hervorgehoben. Im Gegensatz zu den meisten relationalen Datenbanksystemen, die eine Abfrage pro Kern ausführen, ist BigQuery darauf ausgelegt, eine einzelne Abfrage über Tausende von Kernen auszuführen, wodurch die Leistung im Vergleich zu herkömmlichen Ansätzen deutlich verbessert wird. Die Dremel-Engine ermöglicht Abfrage-Pipelining, sodass andere Abfragen verfügbare Kerne nutzen können, während einige auf E/A warten. BigQuery verwendet einen Mandantenfähigkeitsansatz, der es mehreren Kunden ermöglicht, Abfragen gleichzeitig auf derselben Hardware auszuführen, ohne dass dies Auswirkungen auf andere Standorte hat. Die BigQuery-Oberfläche umfasst drei Kernbereiche, darunter Abfrageverlauf, gespeicherte Abfragen, Jobverlauf und Ressourcenabschnitte zum Organisieren des Zugriffs auf Tabellen und Ansichten.
Das Video bietet eine detaillierte Erklärung der für BigQuery spezifischen Bildschirme und Bedienfelder in der Google Cloud Console. Im Navigationsmenü werden BigQuery-Ressourcen wie Datensätze und Tabellen angezeigt, während Benutzer im Abschnitt „SQL-Arbeitsbereich“ Abfragen erstellen, mit Tabellen arbeiten und ihren Jobverlauf anzeigen können. Das Explorer-Panel listet aktuelle Projekte und ihre Ressourcen auf, während das Details-Panel Informationen zu ausgewählten Ressourcen bereitstellt und Änderungen an Tabellenschemata, Datenexporten und anderen Funktionen ermöglicht. Es wird klargestellt, dass BigQuery nicht für OLTP-Anwendungen geeignet ist, da es keine Unterstützung für häufige kleine Aktualisierungen auf Zeilenebene bietet. Obwohl BigQuery keine NoSQL-Datenbank ist, verwendet es einen SQL-Dialekt und ähnelt eher einer OLAP-Datenbank und bietet ähnliche Vorteile und Eignung für viele OLAP-Anwendungsfälle.
Die Definition von Googles BigQuery wird weiter besprochen, wobei der Schwerpunkt auf der vollständig verwalteten, hoch skalierbaren, kostengünstigen und schnellen Cloud liegt.
Hier sind weitere Punkte, die im Video besprochen werden:
Das Speicherformat von BigQuery: BigQuery verwendet ein spaltenorientiertes Speicherformat, das für die Abfrageleistung optimiert ist. Es speichert Daten komprimiert und spaltenweise und ermöglicht so eine effiziente Verarbeitung bestimmter Spalten in einer Abfrage, ohne auf unnötige Daten zuzugreifen. Dieses Format eignet sich besonders für analytische Arbeitslasten, die Aggregationen und Filterung beinhalten.
Datenaufnahme: BigQuery unterstützt verschiedene Methoden der Datenaufnahme. Es kann Daten direkt aus Quellen wie Google Cloud Storage, Google Sheets und Google Cloud Bigtable laden. Es bietet auch Integrationen mit anderen Datenverarbeitungstools wie Dataflow und Dataprep für ETL-Vorgänge (Extrahieren, Transformieren, Laden).
Datenpartitionierung und Clustering: Um die Abfrageleistung zu optimieren, bietet BigQuery Funktionen wie Partitionierung und Clustering. Bei der Partitionierung werden große Datensätze anhand einer ausgewählten Spalte (z. B. Datum) in kleinere, überschaubare Teile unterteilt. Durch Clustering werden die Daten innerhalb jeder Partition basierend auf einer oder mehreren Spalten weiter organisiert, um die Abfrageleistung durch Reduzierung der gescannten Datenmenge zu verbessern.
Datenzugriffskontrollen und Sicherheit: BigQuery bietet robuste Zugriffskontrollen zur Verwaltung der Datensicherheit. Es lässt sich in Google Cloud Identity and Access Management (IAM) integrieren und ermöglicht Benutzern die Definition fein abgestufter Zugriffsberechtigungen auf Projekt-, Datensatz- und Tabellenebene. BigQuery unterstützt außerdem die Verschlüsselung im Ruhezustand und während der Übertragung und gewährleistet so den Schutz sensibler Daten.
Datenpreise und Kostenoptimierung: Das Video geht kurz auf das Preismodell von BigQuery ein. Es funktioniert auf einer „Pay-as-you-go“-Basis und berechnet den Nutzern Gebühren basierend auf der Datenmenge, die durch Abfragen verarbeitet wird. BigQuery bietet Funktionen wie Abfrage-Caching, die durch die Vermeidung redundanter Datenverarbeitung Kosten senken können. Es ist wichtig, Abfragen zu optimieren und unnötige Datenscans zu vermeiden, um die Kosten zu minimieren.
Maschinelles Lernen mit BigQuery: Der Kurs behandelt die Verwendung von BigQuery für maschinelle Lernaufgaben. BigQuery lässt sich in die maschinellen Lerndienste von Google Cloud wie AutoML und TensorFlow integrieren, sodass Benutzer die Leistungsfähigkeit von BigQuery für die Datenvorbereitung und das Feature-Engineering nutzen können, bevor sie Modelle für maschinelles Lernen trainieren.
Anwendungsfälle und Beispiele: Der Dozent erwähnt verschiedene reale Anwendungsfälle, bei denen sich BigQuery auszeichnet, z. B. die Analyse großer Protokolldatenmengen, die Durchführung von Marktforschungen, die Durchführung von Kundensegmentierungen und die Ausführung komplexer analytischer Abfragen für riesige Datensätze.
Insgesamt bietet das Video einen Überblick über die Fähigkeiten, die Architektur und die wichtigsten Funktionen von BigQuery und unterstreicht seine Eignung für umfangreiche Datenanalysen und maschinelle Lernaufgaben. Es betont die Vorteile der Verwendung einer vollständig verwalteten und hoch skalierbaren cloudbasierten Lösung wie BigQuery für die effiziente Verarbeitung großer Datenmengen.