Skip to content

Grundlagen_in_ML

Michael Brüggemann edited this page Jan 4, 2024 · 6 revisions

Grundlagen

  • Klassifikationsprobleme können durch die "Features" eines Datensatzes gelöst werden.

  • Features sind hierbei die einzelnen Daten, die ein Ereignis auszeichnen (Bsp Wälder: ein Wald könnte durch Baummenge, Baumdichte, NDVI und die höhe der erkannten Objekte identifiziert werden)

    • es ist daher relevant herauszufinden, welche Features im Datensatz enthalten sind.
  • ein Algorithmus kann mehrere "Models" haben. Ein Model ist dabei eine Parameterkombination für den Algorithmus.

Pre-Processing

  • Das Pre-Processing sind Schritte die auf dem Datensatz vorgenommen werden, bevor dieser in Training- und Testdaten gesplittet wird. Pre-Processing kann hilfreich sein, um negative Effekte bei Data-Splitting zu vermeiden. Schritte zum Pr-Processing sind z.B.:
    • Entfernen von "near-zero-variance" Predictoren. Dies dient dazu, Features mit einer Varianz nahe Null zu entfernen, da diese durch das Splitten sonst eine Varianz von 0 haben könnten, was in einigen Modellen zu Problemen führt
    • "Imputation" (Interpolieren fehlender Werte): Dies ist notwendig, da fehlende Werte in einem Feature nicht zur Prediction genutzt werden können
    • Entfernen "hoch-korrelierter" Predictoren: Dies ist hilfreich, wenn das Modell besser ohne Korrelierte Werte performt.
    • Entfernen von "linear-abhängigen" Predictoren: Linear abhängige Predictoren tragen die gleiche Information, daher können diese entfernt werden, um Rechenzeit zu sparen, ohne das Klassifikationsergebnis zu verschlechtern.

Hyperparameter Tuning

  • um die richtigen Parameter für den Algorithmus zu finden, gibt es unterschiedliche Suchstrategien
  • ein Parameter ist immer im Kontext der Daten auf denen der Algorithmus trainiert wird "optimal"
  • Manche Bibliotheken biete auch direkt vorbereite Tuning-Methoden, es lohnt sich also, nach diesen zu schauen.
  • welche Parameter "getuned" werden müssen, wird oft durch die Packages vorgegeben (in caret: modelLookup(<modelname als String>). Möchte man die selbst ermitteln, kann man sog. "Signifikanztest" durchführen, um zu ermitteln, bei welchen Parametern eine Veränderung eine Auswirkung hat.

Tuning Grids

  • oft wird beim Parameter Tuning ein "Tuning grid" verwendet. Dies ist ein "Gitter" aus möglichen Parameterwerten. Aus all diesen Werten werden alle Möglichen Komibnationen gebildet. Aus diesen Kombinationen wird dann je ein "Model" erstellt.

Cross-validation im Hyperparametertuning

  • Nutzt man man k-fold-crossvalidation kann man eine bessere Auswahl eines Models treffen. Hier bei werden alle

?? Wann ist eine Suchstrategie besser als die andere?

Genauigkeitsmetriken

  • mit einer Genauigkeitsmetrik wird bestimmt, wie gut ein Model "performt" hat. Solche Metriken sind zum Beispiel:
    • Accuracy
    • AUC-Score
    • Kappa-Score

?? Was bedeuten diese Metriken

Confusion Matrix

  • Die Confusion-Matrix liefert einige Metriken über die Performanz des Modells bezogen auf die Klassifikation, hier sind unter anderem folgende Metriken relevant (ANNAHME: nur 2 Klassen):
    • Sensitivity: % der Daten die eine Klasse "x" hatten und vom Modell auch als Klasse "x" erkannt wurden.
    • Specificity: % der Daten die eine Klasse "y" hatten und vom Modell auch aber als Klasse "y" erkannt wurden.
    • Pos Pred Value: % der Daten die nicht Klasse "x" hatten und vom Modell auch erkannt wurde, dass die Daten nicht die Klasse "x" haben (Inverse zu "Sensitivity"!
    • F1: der "harmonische Mittelwert" zwischen "Sensitivity" und "Pos Pred Value". Ist sehr sinnvoll bei nicht-balancierten Daten (90% Klasse "x", 10% Klasse "y").
  • Für binäre Klassifikationsprobleme werden diese Metriken zwischen beiden Klassen gebildet. Enthält der Datensatz >2 Klassen, so wird jede Metrik im "one-vs-all" prinzip ermittelt (eine Klasse wird mit jeweils allen anderen verglichen)

Verarbeiten von Hyperparametern in unserer Anwendung

  • es sollten am besten zwei Wege möglich sein:
  1. keine Hyperparameter werden übergeben. Hier führt das Backend selbst ein model-tuning durch und optimiert die Parameter auf ein Optimum, gegeben bestimmer Genauigkeitsmetriken.
  2. der User übergibt Hyperparameter. Hier werden die Hyperparameter direkt fest eingetragen und es findet keine Optimierung statt. Dies muss unbedingt dem User mitgeteilt werden!!

Clone this wiki locally