Web Apps mit KI-Modellen

  • Trainiere ein maschinelles Lernmodell mit Python-Bibliotheken in einem Jupyter Notebook
  • Integriere ein trainiertes maschinelles Lernmodell in eine Streamlit-Web-App

Das sind die Aktivitäten für diese Lektion:

ARBEITEN MIT MASCHINELLEN LERNMODELLEN

Eine weitere wichtige Funktion von Jupyter Notebooks, Python und Streamlit ist die Möglichkeit, Machine-Learning-Modelle zu trainieren und Vorhersagen zu treffen. 

Wenn du dich zum ersten Mal mit künstlicher Intelligenz beschäftigst, solltest du dir die KI-Lektionen in diesem Lehrplan ansehen, um die Grundlagen zu lernen, bevor du dich an die fortgeschrittenen Programmieraufgaben wagst. Du kannst eine benutzerfreundliche Plattform für maschinelles Lernen wie Teachable Machine verwenden, um ein Modell zu erstellen und es in eine Python-Web-App einzubinden. 

Wenn du bereits Erfahrung mit künstlicher Intelligenz und der Arbeit mit Datensätzen mithilfe von Jupyter Notebooks hast, ist dies ein guter nächster Schritt für dich. 

In dieser Lektion lernst du einige der Python-Bibliotheken für maschinelles Lernen kennen und erfährst etwas über die verschiedenen Modelle für maschinelles Lernen, die du mit Python erstellen kannst. 

Um ein maschinelles Lernmodell zu erstellen, gibt es 3 Hauptbestandteile. 

DATENSATZ

FINDET MUSTER MIT LERNALGORITHMUS


VORHERSAGE!

Der Datensatz ist dein Input für das Modell. Er kann Text, Bilder, Töne oder Posen enthalten. In Lektion 2 haben wir mit Text- und numerischen Daten gearbeitet und dabei Jupyter Notebooks verwendet. In dieser Lektion werden wir weiter mit Textdaten arbeiten, und zwar in Form einer Tabellenkalkulation.

Beim Finden von Mustern geht es im Wesentlichen darum, das Modell für maschinelles Lernen anhand des Datensatzes zu erstellen. Python enthält viele Bibliotheken, mit denen ein KI-Modell aus Daten erstellt werden kann. In diesem Lehrplan werden wir viele der Funktionen aus dem scikit-learn-Paket verwenden. Zusätzlich zu den Bibliotheken, die es zur Verfügung stellt, enthält die Website viele ausgezeichnete Informationen über maschinelles Lernen und den Prozess der Modellbildung. Sie ist eine großartige Quelle, um mehr zu erfahren!

Sobald du dein Modell erstellt hast, kann es dazu verwendet werden, ein Ergebnis auf der Grundlage neuer Informationen vorherzusagen. Auch hierfür bietet Python Bibliotheken, die das ermöglichen.

DATEN VORVERARBEITEN

Bevor dein Datensatz an den Algorithmus zur Erstellung des Modells gesendet werden kann, muss er vorverarbeitetoder "bereinigt" werden, damit der Algorithmus zur Modellerstellung damit arbeiten und ein möglichst genaues Modell erstellen kann. Der größte Teil der Arbeit bei der Erstellung eines maschinellen Lernmodells liegt in der Vorverarbeitung. Du musst dir die Daten genau ansehen und entscheiden, was wichtig ist, was weggelassen werden kann und was bereinigt werden muss.

Was beinhaltet die Vorverarbeitung? Bei einem textbasierten Datensatz gibt es einige Dinge, die zu beachten sind.

 

Null-Werte

Manchmal enthält der Datensatz leere oder ungültige Werte, insbesondere wenn es sich um Umfragedaten handelt. Manchmal wirst du alle Zeilen mit Nullwerten eliminieren.

Wenn die Anzahl der Stichproben jedoch gering ist, möchtest du sie vielleicht nicht eliminieren. Eine andere Möglichkeit ist, einen Nullwert durch einen anderen Wert zu ersetzen. Dabei kann es sich um eine Null handeln oder um den Durchschnitt aller anderen Werte in diesem Feld.

Ausreißer

Manchmal enthalten die Daten eine oder zwei Stichproben, die sich stark vom Rest der Daten unterscheiden. Das könnte das Modell verzerren. Du möchtest nicht, dass die Ausreißer die Modellerstellung beeinflussen, deshalb werden Ausreißer oft aus dem Datensatz entfernt.

Du könntest zum Beispiel einen Datensatz haben, bei dem 95 % der Stichproben aus Personen im Alter von 10 bis 30 Jahren bestehen, aber es gibt ein paar Stichproben, bei denen die Personen über 50 sind. Da die überwiegende Mehrheit der Stichproben in der Altersgruppe 10-30 Jahre liegt, kannst du in Erwägung ziehen, die Stichproben aus der älteren Altersgruppe zu entfernen.

Normung

Oft variieren die Zahlen in einem großen Datensatz, je nachdem, welche Merkmale dargestellt werden. Du hast zum Beispiel ein Alter, das von 0 bis 70 variiert, aber auch ein Gehalt, das von 0 bis 500.000 reicht! Die Skalen sind sehr unterschiedlich, so dass ein Merkmal im Modell mehr zählen kann.

Um das zu beheben, kannst du die Daten so standardisieren, dass sie auf einer einzigen Skala liegen. scikit-learn bietet einen StandardScaler, der jedes Merkmal so aktualisiert, dass der Mittelwert 0 und die Standardabweichung 1 ist.

Ein weiterer Punkt, den du beachten solltest, ist eine ausgewogene Anzahl von Stichproben für jede Klasse oder jedes Label. Du solltest sicherstellen, dass die Anzahl der Proben für jede Klasse in deinem Datensatz ungefähr gleich ist.

Kodierung

KI mag Zahlen, nicht unbedingt Wörter. Daher ist es hilfreich, alle Daten in Zahlen umzuwandeln. scikit-learn bietet Encoder-Funktionen, mit denen du eine Reihe möglicher Textwerte ganz einfach in eine Reihe von Zahlen umwandeln kannst.

Ein Beispiel wäre das Aktivitätsniveau mit den Beispielwerten sitzend, leicht, mäßig, hoch. Diese Antworten könnten als Werte 0, 1, 2 und 3 kodiert werden, was für den Algorithmus zur Modellbildung viel einfacher zu handhaben ist.

DATEN SPALTIEREN

Nachdem du deine Daten vorverarbeitet hast, musst du sie in einen Trainings- und einen Testsatz aufteilen. Die Trainingsmenge wird zum Trainieren und Erstellen des Modells verwendet. Dann testest du dein Modell mit der Testmenge, um zu sehen, wie es abschneidet.

Es gibt Standardaufteilungen (in der Regel 75 % für das Training und 25 % für das Testen), aber du kannst es aufteilen, wie du willst. Auch hier gibt es Funktionen, die das alles für dich automatisieren. 

ERSTELLEN DES MODELLS

Der nächste Schritt ist die Erstellung des Modells. Eine wichtige Entscheidung ist, welchen Algorithmus ich verwenden soll. Es gibt viele verschiedene Algorithmen für überwachtes Lernen, und es ist schwer zu wissen, welchen man verwenden soll. Ein guter Weg ist es, mehrere Algorithmen auszuprobieren und dann zu sehen, welcher die beste Genauigkeit liefert. 

Der erste Schritt ist zu entscheiden, ob du eine Klassifizierung Algorithmus oder einen Regression Algorithmus brauchst. Das hängt davon ab, was du vorhersagen willst. 

Klassifizierungsalgorithmen werden verwendet, um diskrete Ziele oder Klassen vorherzusagen. Zum Beispiel wäre die Klassifizierung von E-Mails als Spam oder nicht Spam ein Klassifizierungsproblem

Regressionsalgorithmen werden verwendet, um etwas vorherzusagen, das in einem kontinuierlichen Bereich liegt. Ein Beispiel wäre die Vorhersage, wie viel Gehalt eine Person bekommt. Die Vorhersage ist ein Zahlenbereich und die Ausgabe könnte ein beliebiger Wert innerhalb dieses Bereichs sein. 

Hier sind nur einige der beliebtesten Algorithmen für die Modellerstellung.

neuronales Netz

Klassifizierung

  • Entscheidungsbaum
  • Zufalls-Wald 
  • K-Nächste Nachbarn
  • Naive Bayes
  • Logistische Regression
  • Support-Vektor-Maschine

Regression

  • Lineare Regression
  • Ridge Regression
  • Lasso-Regression
  • Polynomielle Regression
  • Bayessche lineare Regression
  • Support-Vektor-Regression

Beachte, dass einige Algorithmen unter beide Typen fallen. Es gibt zum Beispiel sowohl einen Entscheidungsbaum-Klassifikator als auch einen Entscheidungsbaum-Regressor. Und eine Support Vector Machine arbeitet für die Klassifizierung, während die Support Vector Regression für die Regression arbeitet. 

Wie entscheidest du also, welches Modell du verwenden solltest? Du solltest recherchieren, was andere Datenwissenschaftler/innen für verschiedene Situationen verwenden, um herauszufinden, was für dein Modell in Frage kommt. Du solltest auch verschiedene Algorithmen mit deinen Daten ausprobieren und dann herausfinden, welcher die beste Genauigkeit liefert. Du kannst auch die Parameter für einen bestimmten Algorithmus verändern, um zu sehen, ob er ein genaueres Modell liefert. 

scitkit-learn stellt Funktionen für all diese Algorithmen bereit, sodass es ganz einfach ist, ein Modell zu erstellen. 

BEWERTUNG DES MODELLS

Du möchtest, dass dein Modell so gut wie möglich ist, also musst du seine Leistung bewerten. Zwei gängige Variablen bei der Bewertung eines Modells sind Verzerrung und Varianz. 

Abweichung ist die Differenz zwischen dem vorhergesagten Wert des Modells und dem richtigen Wert. 

Abweichung gibt an, wie sehr sich die Vorhersagen ändern, wenn unterschiedliche Daten verwendet werden. 

Du willst ein gutes Gleichgewicht zwischen Verzerrung und Varianz erreichen.

Hohe Verzerrung -> Underfitting.

Underfitting passiert, wenn das Modell zu einfach ist, um das Rauschen in den Trainingsdaten zu berücksichtigen. Das kann passieren, wenn es nicht genügend Daten oder nicht genügend Merkmale (Spalten) oder zu viel Rauschen in den Daten gibt. Wenn ein Modell sowohl bei den Trainingsdaten als auch bei den Testdaten nicht gut abschneidet, ist das ein Zeichen für Underfitting.

Hohe Varianz -> Overfitting.

Überanpassung passiert, wenn du ein Modell mit einem Datensatz trainierst und es sehr gut abschneidet, aber wenn du ihm dann neue Daten vorlegst, schneidet es überhaupt nicht mehr gut ab. Das kann passieren, wenn das Modell zu komplex ist und versucht, sich zu eng an die Trainingsdaten anzupassen. Das Modell kann bei den Trainingsdaten sehr gute Vorhersagen machen, aber bei den Testdaten schneidet es dann schlecht ab.

Eine Methode, um die Leistung eines Modells zu überprüfen, ist die Kreuzvalidierung.

Kreuzvalidierung bedeutet, dass du dein Modell mehrmals trainierst, wobei du jedes Mal eine andere Aufteilung der Trainings-/Testdaten verwendest. Dein Datensatz wird in mehrere Faltenoder Teilmengen. Dann wird ein Fold als Validierungs- oder Testdatensatz beibehalten und die restlichen Folds werden zum Trainieren des Modells verwendet. Dieser Vorgang wird mehrmals durchgeführt, sodass sich die Trainings- und Testdaten jedes Mal ändern. 

 

sciikit-learn bietet auch eine Metrik Bibliothek, mit der du ganz einfach Leistungswerte für deine Modelle ermitteln kannst. 

  • Genauigkeitswert = richtige Vorhersagen/Gesamtvorhersagen
  • Genauigkeit = richtig positive Ergebnisse/(richtig positive Ergebnisse + falsch positive Ergebnisse)
  • recall = richtig positive Ergebnisse/(richtig positive Ergebnisse + falsch negative Ergebnisse)
  • F1-Punktzahl = (2 x Genauigkeit x Rückruf)/(Genauigkeit + Rückruf)
  • Spezifität = wahres Negativ/ (wahres Positiv + falsches Negativ)
  • Konfusionsmatrix - zeigt die Anzahl der richtig positiven, richtig negativen, falsch positiven und falsch negativen Ergebnisse

Indem du die Metriken verschiedener Algorithmen prüfst, kannst du das beste Modell auswählen. 

VORSCHAUEN!

Wenn du ein Modell hast, mit dem du zufrieden bist, willst du es in deiner App verwenden. 

Es ist gängige Praxis, die Vorverarbeitung, Erstellung und Auswertung deines Modells mit Python in einer Umgebung wie Jupyter Notebooks durchzuführen. Von dort aus kannst du dein Modell als Datei exportieren.

Dann kannst du das Modell in deiner Streamlit-App laden und es für Vorhersagen nutzen. 

In dieser Lektion wirst du den gesamten Prozess anhand eines Schlaganfallrisikodatensatzes durchlaufen. Du wirst sehen, wie du die Daten vorverarbeitest, Modelle mit verschiedenen Algorithmen erstellst und dann ein Modell in einer einfachen Streamlit-App verwendest, um das Schlaganfallrisiko anhand einiger Eingabemerkmale vorherzusagen. 

AKTIVITÄT 1: TRAINIERE EIN KI-MODELL IN JUPYTER NOTEBOOK

Geschätzte Zeit: 60 Minuten

Erforsche einen Schlaganfall-Risiko-Datensatz, um ein KI-Modell zu erstellen

Folge einem dieser Videos, je nachdem, ob du Lokal kodieren auf deinem Computer (Video 1) oder Codierung online (Video 2) an:
  1. Lade einen Datensatz zur Schlaganfallvorhersage von Kaggle herunter.
  2. Arbeite mit den Daten in einem Jupyter Notebook, um:
    • Überprüfe die Daten
    • Daten vorbereiten, um sie für das Modell vorzubereiten
    • Erstelle einige verschiedene Modelle
    • Evaluiere und wähle ein Modell für deine App
    • Exportiere das Modell
Notizbuch herunterladen

CHALLENGE

Probiere ein anderes Modell aus als die im Jupyter Notebook. 

  1. Recherchiere auf der scikit-learn-Website nach anderen Klassifizierungsalgorithmen und sieh dir andere Beispiele für die Modellbildung auf Kaggle an.
  2. Wähle einen Algorithmus und füge den Code in dein Notizbuch ein, um das Modell zu erstellen.  
  3. Verwende die Scikit-Learn-Metriken, um die Genauigkeit zu überprüfen. 

Wie schneidet dein Modell ab? Ist es besser als die anderen Algorithmen im Notizbuch?

AKTIVITÄT 2: EINE VORHERSAGE-APP BAUEN

Geschätzte Zeit: 45 Minuten

Verwende dein Modell in einer Streamlit App

Folge einem der unten verlinkten Videos, um eine Web-App zu erstellen, die das Schlaganfallrisiko anhand der Benutzereingaben vorhersagt.
Wähle das passende Video, je nachdem, wie du deine App programmierst, entweder lokal mit Visual Studio Code oder online mit Codespaces.

CHALLENGE

Der Iris-Datensatz ist ein klassischer Datensatz, der die Irisblüten anhand der Größe der Blütenblätter und Kelchblätter in drei Arten (setosa, versicolor und virginica) einteilt.

  1. Recherchiere den Datensatz, um seine Merkmale und Ziele kennenzulernen. 
  2. Du kannst den Datensatz herunterladen und dein eigenes Modell erstellen oder dieses Modell(Pickle-Datei) verwenden, das mit K-nearest neighbors erstellt wurde. Beachte, dass für diesen Datensatz kein Scaler benötigt wurde. Die Pickle-Datei enthält nur das Modell.
  3. Importiere das Modell und erstelle eine Streamlit-App, um die Irisarten anhand der vier Datensatzmerkmale vorherzusagen.

TECHNOVATION INSPIRATION

Hier sind einige erstaunliche Beispiele von Technovation-Teilnehmern, die Python und Streamlit verwendet haben, um Web-Apps mit maschinellen Lernmodellen zu erstellen. 

REFLEXION

Du hast den gesamten Prozess der Vorverarbeitung eines Datensatzes, der Erstellung mehrerer Modelle und der Bewertung und Auswahl eines Modells für die Verwendung in einer App durchlaufen. Das ist eine ganze Menge, die du in einer Lektion lernen kannst!

Reflexion
Welche Art von Modell wirst du für deine Lösung benötigen - Klassifizierung oder Regression?
Welche Teile waren für dich schwer zu verstehen?
Welche Schritte kannst du jetzt unternehmen, um mehr zu erfahren, damit du deine Lösung aufbauen kannst?

ÜBERPRÜFUNG DER SCHLÜSSELBEGRIFFE

  • Preprocessing - Einen Datensatz nehmen und sicherstellen, dass die darin enthaltenen Daten für das Training eines maschinellen Lernmodells geeignet sind
  • Klassifizierungsalgorithmus - Ein Algorithmus, der verwendet wird, um ein maschinelles Lernmodell zu trainieren, das diskrete Werte klassifiziert oder vorhersagt.
  • Regressionsalgorithmus - Algorithmus, mit dem ein maschinelles Lernmodell trainiert wird, um einen Wert in einem kontinuierlichen Bereich vorherzusagen
  • Verzerrung - die Differenz zwischen dem vorhergesagten Wert des Modells und dem richtigen Wert, die auf falsche Annahmen zurückzuführen ist, die das Modell vereinfachen
  • Varianz - die Schwankungsbreite der Modellvorhersagen, wenn ein Modell nicht in der Lage ist, neue Daten zu verallgemeinern
  • Überanpassung - wenn das Modell zu gut zu den Trainingsdaten passt, so dass es neue Daten nicht gut vorhersagen kann, verursacht durch eine hohe Varianz im Modell
  • Underfitting - wenn ein Modell zu stark vereinfacht ist und weder bei den Trainings- noch bei den Testdaten gut abschneidet, weil es zu viele Verzerrungen oder Annahmen enthält
  •  

ZUSÄTZLICHE RESSOURCEN

Maschinelles Lernen 

Streamlit