421 lines
19 KiB
Markdown
421 lines
19 KiB
Markdown
# Notizen Lektion 2
|
|
|
|
>Thema: Einführung Practical Machine Learning 2
|
|
>Datum: 22.04.2026
|
|
>Dozent: Jürgen Vogel
|
|
|
|
## recap
|
|
|
|
> [!NOTE] Definition
|
|
> algorithm that learns from experience E to solve some tasks T with performance P and P improves with E
|
|
|
|
- Model
|
|
- represents the solution to the tasks T
|
|
- is learnt and adapted based on E
|
|
- can be evaluated with respect to P
|
|
- Features
|
|
- are the relevant part of the data E for creating the model
|
|
- may have to be designed explicitly depending on the ML algorithm
|
|
- Categorization with respect to
|
|
- experience E: supervised vs. unsupervised vs. reinforcement leanring
|
|
- tasks T: clustering vs. classification vs. regresseion
|
|
- human-readable model: white box vs. black box
|
|
- Project
|
|
- agile/iterative development (CRISP-DM)
|
|
- Key Challenges
|
|
- definition of T that is both solvable and generates value
|
|
- large amounts of high quality data E
|
|
- feature engineering
|
|
- dealing with 95% models
|
|
|
|
## Evaluation
|
|
|
|
### How good is the machine learning system?
|
|
|
|
- returned result is good if it solves the problem at hand
|
|
- may be qualitative or quantitative
|
|
- may be subjective (user need, context, and preferences)
|
|
- may change over time
|
|
- also depends on factors such as credibility, specificity, exhaustivitiy, recency, clarity, interpretability... of the result
|
|
|
|
- Beispiel Suchmaschine: Eine Reihe von Keywords werden in eine Suchmaschine eingegeben
|
|
- Wann ist die Antwort der Suchmaschine "gut"?
|
|
- Schwirig zu beantworten, da es sich von Nutzer zu Nutzer unterscheided
|
|
- Casual User: Frage aus generellem Context -> generellere Antwort okay
|
|
- "Wo ist in Laufdistanz ein Restaurant, das offen ist"
|
|
- Man will nicht das bestmögliche Setting finden und alle Restaurants finde
|
|
- Schnelles Ergebnis und gut genug
|
|
- Expert User: Recherchiert sehr detailierte Informationen
|
|
- Umfangreiche Analyse machen
|
|
- Was gibts alles für wiss. Literatur zum Thema?
|
|
- Was sind die besten Verfahren?
|
|
- Informationsbedürfnis sehr hoch
|
|
|
|
- thus, the ML system needs to be assessed in "real-life" situations
|
|
- often with user involvement
|
|
- similar methods as with user requirements research
|
|
- usability tests, interviews, field studies, log analysis
|
|
- but this takes time and is costly
|
|
|
|
### Metrics SR/ER
|
|
|
|
- Wichtig:
|
|
- Success Rate
|
|
- Error Rate
|
|
|
|
- Success
|
|
- Result is correct -> ein einzelnes Sample ist richtig klassifiziert worden
|
|
- success rate -> durschnitt über grössere Menge samples
|
|
- nennt man auch accuracy
|
|
- Error
|
|
- Result is incorrect -> ein einzelnes Sample ist falsch
|
|
- error rate -> durschnitt über grössere Menge samples
|
|
|
|
- Beides ist eine 1/0 Betrachtung -> Entweder falsch oder richtig
|
|
|
|
- Bsp: Wie viele Personen sind auf Bild
|
|
- Modell sagt 3 Personen
|
|
- Auf Bild sind 5 Personen
|
|
- Wie bewertet man das?
|
|
- falsch? -> 100% error
|
|
- ein bisschen richtig? 3/5 erkannt 2/5 fehler
|
|
|
|
- Generalisieren wir die Erfolgsrate erhält man
|
|
- our ML system takes some test data D as input and produces some results
|
|
- D -> {r'1, ... r'n}
|
|
- e.g. if r'i are from a list of predefined labels , we call this classification
|
|
- the test data also includes the expected result "gold standard"
|
|
- D -> {r1, ..., rn}
|
|
- for the test setting, we define some comparison functions
|
|
- c(r, r') = 1 if r = r', 0 else # vergleichsfunktion
|
|
- then we can calculate the success rate SR as
|
|
- SR = (1/n)*sum(i=1, n, c(ri, r'i))
|
|
|
|
### Precision and Recall for Binary Classification
|
|
|
|
- Bsp. Suchmaschine -> Man will evaluieren ob das Modell gut funktioniert
|
|
- Für eine Suchanfrage wurde ein Test Set zusammengestellt
|
|
- Manuell bewertet (Gold Standard):
|
|
- Man weiss für jeden Eintrag: Website passt oder passt nicht
|
|
|
|
Bewertung:
|
|
|
|
| | positive gold | negative gold |
|
|
| ------------------- | ------------------- | ------------------- |
|
|
| positive classified | true positive (TP) | false positive (FP) |
|
|
| negative classified | false negatives (FN) | true negative (TN) |
|
|
|
|
- True Positives: Classifier bewertet positiv, Goldstandard sagt positiv
|
|
- True Negatives: Classifier sagt negativ und das stimmt auch
|
|
- False Negatives: Classifier sagt nicht negativ, Goldstandard sagt aber positiv
|
|
- das ist ein Fehler
|
|
- Bsp. Suchmaschine: Die Suchmaschine liefert ein Suchresultat nicht zurück obwohl es relevant wäre
|
|
- False Positives: Classifier sagt positive, das stimmt aber nicht
|
|
- das ist ein weiterer Fehler
|
|
- Bsp. Suchmaschine: Die Suchmaschine liefert ein nichtrelevantes Suchresultat zurück
|
|
|
|
- Daraus abgeleitete Metriken:
|
|
- **Precision**
|
|
- Menge der TP in Bezug auf die insgesamt positiven Samples (gemäss Gold Standard)
|
|
- Wenn mein Algorithmus keinen Fehler macht dann hat man 100% precision
|
|
- P = TP / (Class p Classified)
|
|
- Bsp.: Wieviele der angezeigten Webseiten, sind gemäss Gold Standard wirklich relevant?
|
|
- **Recall**
|
|
- Wie hoch ist der Anteil der False Negatives gemäss Gold Standard
|
|
- R = TP / (Class p Gold)
|
|
- Bsp. Welche Seiten die der Mensch (Gold Standard) als relevant klassifiziert hat, werden tatsächlich angezeigt?
|
|
- Perfekt wenn all relevanten Seiten angezeigt wurden
|
|
- Schlecht wenn keine relevanten Seiten gefunden wurden
|
|
- Erweiterte Metrik: Confusion Matrix
|
|
|
|
|
|
- Precision vs Recall
|
|
- There is often a trafe-off between Precision and Recall
|
|
- improving the algorithm towards one weakens the other
|
|
- Will ich das Modell in richtung Precision verbessern, wird der Recall schlechter und umgekehrt
|
|
- Entweder das eine oder andere kann optimiert werden
|
|
- Bspw. Suchmaschine: Einfach alles anzeigen, dann gibts keine False Negatives weil das Gesuchte immer gefunden wird
|
|
- Die Precision wird dabei aber sehr sehr schlecht, weil ganz viele False Positives dabei sind
|
|
- 100% Recall 0% Precision
|
|
- Oft muss ein Kompromiss getroffen werden zwischen Precision und Recall
|
|
- Die Entscheidung was optimiert werden soll, muss vom Entwicklungsteam getroffen werden
|
|
- Precision-oriented users
|
|
- Web Surfers
|
|
- Recall-oriented users
|
|
- Professional searches, legal, etc
|
|
|
|
- Dafür gibt es aber folgendes Hilfsmittel: **F-measure**
|
|
- Das gewichtete, harmonische Mittel zwischen Precision und Recall
|
|
- Formel: Skript Seite 7
|
|
- F = 1/( alpha* 1/P + [1-alpha] * 1/R) = (beta^2 + 1)PR / (beta^2P+R) = beta^2 = 1 - alpha / alpha
|
|
- Ist parametrisierbar
|
|
- Beta < emphasize precision
|
|
- Beta > emphasize recall
|
|
|
|
### Other metrics
|
|
|
|
- the generalization of our binary classifier result matrix (classification result vs. gold standard) is called a confusion matrix
|
|
- many different metrics can be derived from this
|
|
- https.//en.wikipedia.org/wiki/Confusion_matrix
|
|
- other widely used metrics include ROC, K-S, gail/lift, ...
|
|
- for specific ML problems and algorithms many additional metrics exists
|
|
|
|
## Automated Evaluation Workflow
|
|
|
|
- How can we automatie evaluation
|
|
1. define a controlled test set (benchmarks)
|
|
- collection of data (labeled)
|
|
- one or more tasks to be solved by the ML system
|
|
- expected results
|
|
- created by (typically) human domain experts
|
|
2. execute ML system for test set
|
|
3. compare computed results against expected results
|
|
|
|
### Evaluation Goals
|
|
|
|
- Compare a solution with ...
|
|
- different configuration options
|
|
- bspw. feingranulare parametrisierung in einem decision tree (gini parameter bspw)
|
|
- alternative solutions
|
|
- a basic solution ("baseline")
|
|
- abschätzung nach unten
|
|
- the industry and/or academic leader ("state-of-the-art")
|
|
- abschätzung nach oben
|
|
- human performance ("gold standard")
|
|
- auch eine abschätzung nach oben, welche man machen sollte
|
|
- Mensch macht auch 1-2% Fehler
|
|
- itself over time
|
|
|
|
## Using Data for Training and Testing
|
|
|
|
- ML Methods usually require fine-tuning for good quality
|
|
- Trainingsdaten dürfen nicht gleichzeitig zum Testen verwendet werden, es muss aufgeteilt werden
|
|
- Wie splitte ich in Trainingsdaten und Testdaten?
|
|
- Modell wird besser wenn mehr trainingsdaten gegeben werden
|
|
- aber man will auch möglichst viele Daten fürs Testen, damit Metrik verbessert wird
|
|
- Konflikt
|
|
- Einfache Methode: 80% Training 20% Testing
|
|
- Verteilung wichtig! Einfach die vorderen 80% fürs Training nehmen und die hinteren 20% als Test ist nicht gut
|
|
- Daten sind oft sortiert
|
|
- Beide Datenmengen müssen repräsentativ sein!
|
|
- Quick fix: Random Number generator verwenden (**rand-split** in scikit-learn)
|
|
- wenn die gesamtdatenmenge gross genug ist, geht das relativ gut auf
|
|
- im Mittel hat man eine gute Verteilung
|
|
- Problematisch wird das wenn das Klassifikationsproblem stark unbalanciert ist
|
|
- Websuche: Datenmenge 100k Webseiten, davon sind 20 relevant -> winzige relevante Menge (p class) und eine grosse (n class)
|
|
|
|
- Besser als Random-Split: K-Fold Cross Validation
|
|
|
|
|
|
### K-Fold Cross Validation
|
|
|
|
- Wie geht man möglichst effizient mit den gelabelten (gold standard) Daten um?
|
|
- Es geht nicht gleichzeitig aber nacheinander
|
|
- erst trainieren, dann testen
|
|
- How to split gold standard data into test and trainin set such that
|
|
- we have enough training data
|
|
- our test results are not biased
|
|
- k-fold cross validation
|
|
- split data into k folds (Aufteilung in k Teile)
|
|
- use (k-1) for training, 1 for testing
|
|
- repeat k times
|
|
- Siehe Grafik Skript Seite 14
|
|
|
|
- Aufteilung auf 3 Folds
|
|
- Jedes Sample wurde jeweils einmal zum training und zum testen verwendet
|
|
- Man hat ein Problem, wenn sich die Metriken (Fehlerquoten) beim Testen von Fold zu Fold sich stark unterscheiden
|
|
- Weiteres Problem: Modell sehr sensibel auf Trainingsdaten
|
|
- Zu wenig Trainingsdaten vorhanden
|
|
- Unterschiede von Fold zu Fold sehr gross -> Könnte heissen, dass das Modell nicht stabil ist
|
|
- Kommen von Fold zu Fold aber gleich gute Resultate zurück (Varianz und Standardabweichung gleich)
|
|
- Gutes Zeichen für das Modell
|
|
|
|
- In der Praxis arbeitet man nicht mit 3 sonder mit 10 Folds
|
|
- 10 fold cross validation
|
|
- 90/10
|
|
- Wird statistisch besser
|
|
- Setzt voraus, das man genug grosse Datenmengen hat
|
|
|
|
## Dataset Challenges
|
|
|
|
- Potential Problems: is the dataset...
|
|
- correct?
|
|
- large enough?
|
|
- representative?
|
|
- cause overfitting? -> Zu viele eintönige Daten, und das Modell lernt eine Niche
|
|
- for many application domains, large datasets are available
|
|
- not all free but still cost saving
|
|
- allows to compare approaches in a larger community
|
|
- where to search
|
|
- wikipedia
|
|
- kaggle
|
|
- research groups at universities
|
|
- conference series
|
|
- research articles
|
|
- data collecting companies and public administrations
|
|
|
|
## Unsupervised Learning
|
|
|
|
> [!NOTE] Definition
|
|
> an algorithm learns from experience E to solve some tasks T with performance P if P improves with E
|
|
|
|
- K-Means Clustering
|
|
- Sample Vektor repräsentiert als feature vektor
|
|
- Grosse Dokumentensammlung mit grossem Durcheinander in einem Folder
|
|
- Man möchte das in eine sinnvolle Verzeichnisstruktur bringen
|
|
- Clustering könnte helfen
|
|
|
|
## Clustering
|
|
|
|
- Datensatz in Gruppen einteilen, jede Gruppe nennt man Cluster
|
|
- Iris Datenset kann in Clusters unterteilt werden
|
|
- News Artikel auf Google News
|
|
- Kunden in Kundengruppen
|
|
- Das alles ist **unsupervised Classification**
|
|
- Based on some similarity measure
|
|
- all instances within a cluster should be similar
|
|
- ähnliche feature Werte (numerische Werte)
|
|
- and instances in different clusters should be dissimilar
|
|
- Erster Punkt: Cluster Bilden
|
|
- Zweiter Punkt: Einzelne Cluster identifizieren, was genau ist das Merkmal von jedem Cluster?
|
|
- Häufig muss dies der Mensch machen, da die Algorithmen das nicht können
|
|
- Cluster discovered
|
|
- Beispielsweise durch die Euklidsche Distanz
|
|
- ähnlichkeit zwischen zwei Vektoren (Feature Vektor)
|
|
|
|
|
|
## K-Means
|
|
|
|
- Idea
|
|
- creates K clusters
|
|
- interpret samples x as real-valued vectors x-> (vector)
|
|
- data preparation: numeric data only
|
|
- assignement of x to a cluster is based on its distance to the cluster centroids
|
|
- jeder Cluster hat einen Mittelpunkt (centroids)
|
|
- der Datenpunkt kommt in den Cluster rein wo die Distanz am kleinsten ist
|
|
- Mittelpunkt (centroid) ist im Vorhinein nicht bekannt
|
|
- und ist auch nicht statisch, der verschiebt sich
|
|
- Problem: Der Mittelpunkt des Clusters wird berechnet aufgrund der Daten im Set
|
|
- Am Anfang ist aber noch kein Cluster bekannt
|
|
- Daher löst man das mit einem iterativen Prozess
|
|
|
|
```
|
|
# select K random samples {c1, c2, ... , ck} as approximatrion of centroids
|
|
until termination condition
|
|
for each sample xi:
|
|
assign xi to the cluster Cj such that dist(xj,cj) is minimal
|
|
for each cluster Cj update the approximations of centroids
|
|
cj = u(Cj)
|
|
```
|
|
|
|
### How many clusters K
|
|
|
|
1. Number of clusters K is given
|
|
- partition n samples into predetermined number of clusters
|
|
2. Finding the "right" number of cluster is part of the problem
|
|
- partition n samples into appropriate number of clusters
|
|
- often try and error
|
|
3. Use an algorithm to determine K automatically
|
|
- define a function to assess the "qualits" of all clusters
|
|
- e.g. pairwise distance of all samples within a cluster to measure how homogenous the cluster is
|
|
- increase K until no further quality improvement
|
|
|
|
### Discussion K-Means
|
|
|
|
- Advantages
|
|
- easy to implement and understand (white box)
|
|
- Disadvantages
|
|
- assumes that clusters are sphere-shaped
|
|
- number of iterations and resulting clusters results depend on seed choice
|
|
- use heuristic rather than random picks
|
|
- algorihm may converge on local minima
|
|
- re-run with different seeds
|
|
- post-process resulting clusters
|
|
- split the n "worst" clusters into 2 or more subclusters
|
|
- merge 2 close clusters (where centroids are close) into one
|
|
- slow
|
|
- updating centroid after each new sample assignment may speed up the process
|
|
|
|
### Cluster Evaluation Metrics
|
|
|
|
1. in case we have a classified data set (gold standard)
|
|
- homogeneity score
|
|
- between 1 and 0, where 1 means that each computed cluster contains only samples of one gold standard cluster
|
|
- completeness score
|
|
- between 1 and 0 where 1 means that all samples from a gold standard cluster are assigned to the same computed cluster
|
|
- Adjusted rand index (ARI)
|
|
- Überlappung zwischen berechneten Cluster und gold standard cluster wird berechnet (schnittmenge)
|
|
- overlap = number of common items
|
|
- between -1 or 1, where 1 means equality
|
|
2. in case the gold standard is not known
|
|
- dann kann man es nur noch geometrisch bewerten
|
|
- SSE: sum of squared error (Fehlerquadratsumme)
|
|
sum of squared distance of each sample to the centroid of its assigned cluster
|
|
- silhouette coefficient
|
|
- wie gut ist der punkt abgegrenzt vom Nachbarcluster
|
|
- average distance of sample to all other points in the same cluster - average distance of sample to all other points in the next nearest cluster
|
|
- between -1 and 1 where 1 means dense clusters
|
|
|
|
## Naive Bayes
|
|
|
|
- Supervised learning
|
|
|
|
### Bayes' Theorem
|
|
|
|
- mathematical law about conditional probabilities
|
|
- given two events A and B, then the conditional probability P(B|A) relates to the probability that event B occurs after A has occured
|
|
- applies e.g. when we are blindl drawing samples from a bag containing red an black alls without returning the balls
|
|
- assume we start wit 2 red and 2 black balls
|
|
- then P(red) = 2/4 = P(black) for the first draw
|
|
- if we draw a red ball first, then we know upfront for the 2nd draw
|
|
- P(red|red) = 1/3 and P(black|red) = 2/3
|
|
- probability that two conditionally-related events P(A) and P(B|A) occur one after another: P(A^B) = P(A) * P(B|A)
|
|
- e.g probability to first draw red and then red again: P(red^red) = P(red)*P(red|red) = 2/4 * 1/3 = 1/6
|
|
- P(A|B), P(B|A) may be calculated as
|
|
- P(A|B) = P(A^B) / P(B) and P(B|A) = P(A^B) / P(A)
|
|
- in the drawing example: P(red|red) = 2/4 * 1/3 / 2/4 = 1/3
|
|
- from this we can derive Bayes' theorem
|
|
- P(A|B) = P(B|A) * P(A) / P(B)
|
|
|
|
### Using Bayes' Theorem for Classification
|
|
|
|
- Our events are A = class c, B = sample x.
|
|
- We calculate P(c|x)
|
|
- x -> Ich bekomme ein sample
|
|
- P(c|x) -> wie hoch ist die Wahrscheinlichkeit dass das sample x in der klasse c ist?
|
|
- given x, our classifier thus
|
|
1. calculates P(c|x) for all c
|
|
2. selects c with the highes P(c|x)
|
|
- P(c|x) = P(x|c) * P(c) / P(x)
|
|
- P(c) -> probability of a class c -> kann aus den Samples ausgelesen werden -> Zählen wieviele Samples hab ich in einer Klasse
|
|
- es gilt: n = n_samples within c / n_samples
|
|
- P(x) -> wie häufig hab ich ein bestimmtes sample in meinen Trainingsdaten? -> Meist nur ein einziges mal, manchmal ein identisches sample mehrmals
|
|
- wenn nur einmal gilt: n = 1 / n_samples
|
|
- P(x|c) -> wie häufig hab ich einen Feature Vektor in einer bestimmten Klasse -> Optimalerweise nur einmal -> Bei einer klasse wahrscheinlichkeit = 1 und bei allen anderen 0
|
|
- man schaut sich die einzelnen Features an und schaut welche kombinationen von Features sind einen Hinweis auf eine Klasse
|
|
- P(f1, f2, ..., fn|c) where fi are the sample's features
|
|
- we assume that fi are independent from each other given a class c
|
|
- thus we can calculate P(f1,f2,...,fn|c) = P(f1|c) * P(f2|c) * ... * P(fn|c)
|
|
- 3 different NB variants for calculating P(fi|c)
|
|
- Gaussian: fi are continuous and P(fi|c) are normally distributed
|
|
- multinomial: P(fi|c) = n_fi in c / n_fi occures overall
|
|
- bernoulli: binary features
|
|
- in general this independence assumption is wrong
|
|
- within c certain features are often correlated
|
|
- thus the name: naive bayes classifier (NB)
|
|
- but the NB classifier performs well in practice despite this "naive" assumption
|
|
- Advantages
|
|
- very fast learning and testing
|
|
- performed super auf grossen Datensätzen
|
|
- low storage requirements
|
|
- optimal if the independence assumptions hold
|
|
- typischerweise hat man aber keine unabhängigen features
|
|
- very good in domains with many equally important features
|
|
- robust gegen schlechtes feature engineering
|
|
- bspw.: Um zu erkennen ob das ein Brief ist schau ich ob ein Datum drauf ist -> Das ist Mist
|
|
- für decicion tree fatal
|
|
- für naive bayes hat man halt nur einen neuen Skalierungsfaktor
|
|
- sehr fehlertolerant
|
|
- Disadvantages
|
|
- Often not the best classifier
|