# 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