15 KiB
15 KiB
Notizen NSL Lektion 1
Thema: Unsupervised Learning Datum: 18.06.2026 Dozentin: Matthias Dehmer
Recap
Supervised Learning
- Input: Arbeitet auf Daten (Feature Vektoren) mit Labels
- Output: Modell für Prediction
- Regression:
- Daten
X(Features) gegeben -> man willY(Zielgrösse) vorhersagen - Gesucht ist eine Funktion
fmit\hat{y} = f(x)für eine Vorhersage
- Daten
- Klassifikation
- Binär
- Multiclass
- Applications
- Spam Filtering
- Image Classification
- Gesture Recognition
- Fraud Detection
Unsupervised Learning
- Input: Arbeitet auf Daten (Feature Vektoren) ohne Labels
- Output: Model discovering underlying data structure of the data
- Methoden
- Clustering
- Dimension Reduction
- Association Rules
- Anwendungen
- Exploratory Data Analysis
- Outlier Detection
- Data Compression
- Denoising
Reinforcement Learning
- Input: Current observed State from Environment and reward score
- Output: Agent chooses next action
- Methoden:
- Control
- Q-Learning
- Applications
- Games (Chess, Go)
Recap: Supervised Learning
- Viele Machine Learning Probleme lassen sich in einfache Optimierungsprobleme überführen
- Fehlerquadratsumme (Methode der kleinsten Quadrate)
Recap: Lineare Regression
- Problem: Wir wollen eine gute Approximation der Daten durch eine Gerade (Linearitätsforderung)
- Vorgehen: Gerade in die Punktwolke legen und Parameter solange anpassen bis Fehler (Epsilon) minimal sind
- Wobei Epsilon:
\epsilon_i = y_i - \hat{y}_i
- Wobei Epsilon:
- Wir suchen eine Gerade, mit der Bedingung, dass die quadratische Summe aller Epsilon minimal wird
\min \sum_{i=1}^{n} \epsilon_i^2 = \min \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
- Zur Analyse immer einen Scatterplot machen
- Dabei sieht man von Auge bereits ob eine Linearität vorhanden ist
Unsupervised Learning
- Keine Labels
- Es gibt keine Outcome Variable
- Wie kann man sich das vorstellen
- Data is generated by some unknown process
- Unsupervised learning finds patterns in the data
- Methoden
- Clustering (k-Means, Hierarchical, DBSCAN)
- Density Estimation: Gaussian Mixture Models
- Dimensionality Reduction
- Neural Networks
- Autoencoder
- Generative Adversarial Models
- Restricted Boltzman Machines
Clustering
- Clustering ist der Prozess der eine Gruppe in Untergruppen aufteilt
- Elemente in Untergruppen sind sich ähnlich
- Schwierig ist es ein Ähnlichkeitsmass (measure) zu finden
- Die Anzahl der Cluster hängt von der Anwendung ab
- intra-cluster measure -> tightness (Homogenität) of the cluster
- inter-cluster measure -> Daten sollen so gewählt werden, dass sie sich nicht überlappen
- Hauptproblem des Clusterings
- Wir haben einen Datensatz D den wir clustern wollen
- D enthält Altersangaben
- Wir schicken D durch einen Clusteringalgorithmus
- Wir erhalten C1-3
- C1: 20-30
- C2: 40-50
- C3: 60-80
- K-Means braucht eine Angabe wieviele Cluster zu erzeugen sind
- Wieviele Cluster sind denn aber sinnvoll?
- Zwei wesentliche Forderungen beim Clustern
- Cluster sollen homogen sein (gleich verteilte Abstände innerhalb des Clusters)
- Cluster sollen heterogen getrennt sein (nicht überlappen)
- Wir sehen: Die Anzahl der Cluster ist nicht eindeutig
- C1,C2: Schreibweise
|C| = 2"Die Grösse der Cluster C ist 2"
- C1,C2: Schreibweise
- Wie messen wir die Homogenität in folgendem Fall?
- c1 = {2,4,6}
- c2 = {2,15,80}
- Man könnte sich die Abstände zum Centroiden anschauen
- Hom(C1) > Hom(C2)
Anwendung von Clustering
- Ähnlichkeit von Kunden, Krankheiten, Produkte
- Betrugserkennung
- Bspw. Intrusion Detection in Netzwerken
- Vergleich session duration zu transmitted bytes
- ssh -> lange Session Zeit aber nicht viel Daten
- web traffic -> kurze Session Zeit aber viele Daten
- Alle Verbindungen, die nicht in diese Cluster passen, sind "verdächtig"
Dimensionsreduktion von Datensets
- Warum soll man Dimensionen reduzieren?
- Man fischt sich diejenigen Dimensionen heraus, welche für die gewünschte Information wichtig sind
- Alle ohne nützliche Information werden eliminiert (Projektion der gewünschten Dimension)
- Eine Art wie man Dimensionen reduzieren kann, ist PCA
- Principal Component Analysis
- Vereinfacht komplexe Datensets und behält dabei die wichtigsten Strukturen
- Wie funktioniert eine Dimensionsreduktion dim1000 zu dim2 mit PCA?
- PC1: Man legt eine Achse in die Richtung wo die Varianz maximal ist
- PC2: Richtung der maximalen verbleibenden Varianz, die orthogonal zu PC1 steht
- Bei einer (symmetrischen) Kovarianzmatrix sind die Eigenvektoren ohnehin paarweise orthogonal
- Allgemein: PC$_k$ = Eigenvektor zum $k$-grössten Eigenwert der Kovarianzmatrix
Begriffe in der Dimensionsreduktion
- Varianz
- Streuung um den Mittelwert
- Population vs. Stichprobe (Bessel-Korrektur mit
n-1):
\sigma^2 = \frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^2 \qquad s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2
- Kovarianz
- Mass für das gemeinsame Streuen zweier Variablen (steigen sie zusammen oder gegenläufig?)
- Hinweis: Kovarianz ist nicht die Steigung — die Regressionssteigung ist
\beta = \mathrm{Cov}(X,Y)/\mathrm{Var}(X) - Ist nicht begrenzt im Gegensatz zur Korrelation (
\rho = \mathrm{Cov}(X,Y)/(\sigma_X \sigma_Y) \in [-1, 1])
\mathrm{Cov}(X,Y) = \frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})
- Kovarianz-Matrix
- Für zentrierte Datenmatrix
X_c \in \mathbb{R}^{n \times d}(Mittelwert pro Spalte abgezogen) d \times d, symmetrisch, positiv semidefinit- Diagonale = Varianzen, off-diagonal = Kovarianzen
- Für zentrierte Datenmatrix
\Sigma = \frac{1}{n}\, X_c^{\top} X_c \qquad \Sigma_{jk} = \mathrm{Cov}(X_j, X_k)
- Eigenwert-Problem (Lambda)
- Korrektur: die Eigenwerte
\lambdasind die Nullstellen des charakteristischen Polynoms (nicht die Eigenvektoren) - Definition:
A\mathbf{v} = \lambda \mathbf{v} \iff (A - \lambda I)\mathbf{v} = \mathbf{0} - Nicht-triviale Lösung existiert nur, wenn
\det(A - \lambda I) = 0(charakteristisches Polynom) - Vorgehen: 1)
\lambdaaus dem char. Polynom bestimmen, 2) je\lambdaden Eigenvektor\mathbf{v}aus(A - \lambda I)\mathbf{v} = \mathbf{0}lösen - In der PCA: Eigenwert
\lambda_i= Varianz entlang PC$_i$; Gesamtvarianz= \mathrm{tr}(\Sigma) = \sum_i \lambda_i; erklärter Varianzanteil= \lambda_i / \sum_j \lambda_j
- Korrektur: die Eigenwerte
PCA Vorgehen
- Daten zentrieren (Mittelwert pro Feature abziehen); bei unterschiedlichen Skalen zusätzlich standardisieren (auf Einheitsvarianz)
- Kovarianzmatrix
\Sigmaberechnen - Eigenwert-Problem lösen -> Eigenwerte
\lambda_iund zugehörige Eigenvektoren\mathbf{v}_i - Endkoordinatensystem bestimmen: Eigenvektoren nach Eigenwerten absteigend sortieren, die Top-
kals neue Achsen wählen und die Daten darauf projizieren (Z = X_c W, mitW= Matrix der Top-kEigenvektoren)
Clustering Data
- Beispielsweise Segmentierung von Kunden
- Soll möglichst automatisch Cluster von Kundenprofilen erstellen
- Challenge beim Clustern: Kann ein semantischer Wert zu Gruppen hinzugefügt werden?
- Bspw. Diese Gruppe Männer zwischen 30 und 40 Jahren interessiert sich für Fussball
Types of Clustering
- Hard Clustering
- ein Element gehört genau zu einem cluster
- Mengenpartitionierung
- Methoden: k-Means, k-Mediods
- Soft Clustering
- Ein Element kann zu einem oder mehreren Clustern gehören
- Methode: Gaussian Mixture Models (EM Algorithm)
Ähnlichkeitsmasse (Distanzmasse)
- Distanzmetrik
D(u, v)zwischen zwei Punktenuundv - Euklidische Distanz (L2-Norm): einfache geometrische Distanz
\lVert u - v \rVert_2 = \sqrt{\sum_{k=1}^{d} (u_k - v_k)^2}
- Manhattan-Distanz (L1-Norm): komponentenweise summiert, "man kann nicht schräg laufen"
\lVert u - v \rVert_1 = \sum_{k=1}^{d} |u_k - v_k|
- Kosinus-Ähnlichkeit: normiertes Skalarprodukt, misst den Winkel zwischen den Feature-Vektoren
\cos\varphi = \frac{u^{\top} v}{\lVert u \rVert_2 \, \lVert v \rVert_2}
- Minkowski-Distanz: verallgemeinert L1/L2 über den Parameter
p(p=1Manhattan,p=2Euklid,p=\inftyChebyshev)
D(u, v) = \left( \sum_{i=1}^{d} |u_i - v_i|^p \right)^{1/p}
- Merke: kleine Distanz = hohe Ähnlichkeit; Distanz
0= maximale Ähnlichkeit
Clustering with K-Means
- Beliebtester Clustering-Algorithmus
- Verwendet die euklidische Distanz
- Annahme: Anzahl Cluster
kist im Voraus bekannt (Nachteil) - Zwei Phasen
- Training: Partitionieren der Datenmenge in
kUntermengen über das Distanzmass - Inference (optional): nachdem die Zentroiden bestimmt sind, neue Datenpunkte dem nächsten Zentrum zuordnen
- Training: Partitionieren der Datenmenge in
Zielfunktion (Objective)
- Ziel: Daten in
kGruppen ähnlicher Varianz aufteilen und dabei die Within-Cluster Sum of Squares (WCSS, auch Inertia) minimieren - Gegeben
n$d$-dimensionale Punktex_1, \dots, x_n; partitioniere in disjunkte MengenP_1, \dots, P_k:
\sum_{i=1}^{k} \sum_{x \in P_i} \| x - \mu_i \|^2 \;\to\; \min \quad \text{mit} \quad \bigcup_{i} P_i = \{x_1, \dots, x_n\}, \; P_i \cap P_j = \emptyset \;\; \forall i \neq j
- Das ist äquivalent zur Minimierung der Varianz:
\sum_{i=1}^{k} \sum_{x \in P_i} \| x - \mu_i \|^2 = \sum_{i=1}^{k} |P_i| \, \mathrm{Var}(P_i)
Ablauf (Lloyd's Algorithm)
- Initiale Positionen für
kZentroiden setzen (gute Startwerte → schnellere Konvergenz) - Zuordnung (Centers to Clusters): Voronoi-Tessellation der Datendomäne, jeden Punkt seinem nächsten Zentroiden zuordnen
- Update (Clusters to Centers): Zentroiden als Mittelwert (Schwerpunkt) aller Punkte im Cluster neu berechnen
- Schritte 2–3 wiederholen, bis Konvergenz (keine Änderung der Zuordnung mehr)
- Konvergenz: ein Punkt wechselt das Cluster, wenn er einem anderen Zentrum näher ist; das Update reduziert die Intra-Cluster-Varianz
Nachteile & Annahmen von k-Means
- NP-hart → k-Means ist heuristisch und kann in einem lokalen statt globalen Optimum landen
- Sensitiv gegenüber Ausreissern (wegen der L2-Distanz)
- Setzt konvexe, isotrope (etwa gleich grosse, runde) Cluster voraus
kmuss vorab bekannt sein- Inertia ist nicht normiert (skalenabhängig)
- Sensitiv gegenüber der Initialisierung
- zufällig in der Datendomäne, oder
kzufällig gewählte Datenpunkte, oder- k-means++: Startzentren möglichst weit auseinander wählen
- Leere Cluster möglich (Zentroid zu weit weg, zieht keine Punkte an) → Workaround: mehrfach mit verschiedenen Startpunkten laufen lassen
Anzahl Cluster k bestimmen & Qualität messen
- WCSS sinkt monoton mit steigendem
k(wird0beik = n) → allein kein Gütemass, da nicht normiert - Elbow-Methode: WCSS bzw. erklärte Varianz über
kplotten und den "Knick" (elbow) wählen- Erklärte Varianz = Anteil der Between-Cluster-Varianz an der Gesamtvarianz (ideal: 100 %)
- Silhouette-Score: bewertet die Zuordnung pro Punkt über die mittlere Intra-Cluster-Distanz
a_iund die mittlere Distanz zum nächsten Clusterb_i- Bereich:
1= ideal,0= überlappende Cluster,-1= vermutlich falsch zugeordnet - Gesamt-Score = Mittelwert der
s_iüber alle Punkte
- Bereich:
s_i = \frac{b_i - a_i}{\max(a_i, b_i)}
- (Hartigan-Regel ist im Skript, gilt aber als veraltet → hier weggelassen)
Clustering with k-Medoids/PAM
- K-Means funktioniert schlecht mit kategorialen Daten und ist anfällig für Ausreisser (L2-Distanz)
- Informell: "K-Medoids verhält sich zu K-Means wie der Median zum Durchschnitt"
- Idee: den Zentroid (Mittelwert) durch einen Medoid ersetzen
- Medoid = der am zentralsten gelegene tatsächliche Datenpunkt eines Clusters
- Der Medoid kommt also real im Datensatz vor (anders als der berechnete Mittelwert)
- Benötigt ein Distanzmass
D
- PAM = Partition Around Medoids (konkreter k-Medoids-Algorithmus)
Medoid (Definition)
- Der Medoid minimiert die Summe der Distanzen zu allen anderen Punkten des Clusters:
\mathbf{x}_m = \arg\min_{\mathbf{y} \in \{x_1, \dots, x_n\}} \sum_{i=1}^{n} D(\mathbf{x}_i, \mathbf{y})
PAM Algorithmus
kPunkte als initiale Medoiden wählen- jeden Datenpunkt dem Cluster mit dem nächsten Medoid zuordnen
- zufällig einen Nicht-Medoid
iwählen;msei der Medoid, demiaktuell zugeordnet ist - Gesamtkosten
Jeines Tauschs von Medoidmmitiberechnen - falls
J < 0: tauschen (iwird neuer Medoid) - zurück zu Schritt 2, bis Konvergenz
Categorial Values for k-Means/k-Medoids
- Kategoriale Werte tauchen oft in Datasets auf
- Geschlecht, Farben, Binär (True/False)
- K-Means funktioniert hier nicht direkt
- Problem: meist keine Ordnung und keine sinnvolle Arithmetik auf den Werten – auch nicht bei Integer-Codierung
- Rot→0, Grün→1, Blau→2, Gelb→3
- Was wäre dann ein Zentroid bei 1.32? Und ist Distanz(Grün, Gelb)
= 2wirklich grösser als Distanz(Rot, Grün)= 1?
Workarounds to support Categorial Values
- One-Hot Encoding
- jede Kategorie wird zu einer eigenen 0/1-Spalte
- bläst den Raum auf: aus 1 Farb-Spalte (4 Werte) werden 4 Dimensionen
- Fluch der Dimensionalität: in hohen Dimensionen sind alle Punkte ungefähr gleich weit entfernt
- Distanz Zentrum→Ecke eines Hyperwürfels (Seitenlänge
2r) wächst mitr\sqrt{d}
- Distanz Zentrum→Ecke eines Hyperwürfels (Seitenlänge
- Empfehlung: zuerst Dimensionsreduktion (z.B. PCA), dann im Unterraum clustern
Clustering with k-Modes / k-Prototypes
- k-Modes: ersetzt den Mittelwert durch den Modus (häufigster Wert) und nutzt ein Unähnlichkeitsmass statt der euklidischen Distanz
- k-Prototypes: kombiniert k-Modes (kategorial) mit k-Means (numerisch) → für gemischte Attribute
- Unähnlichkeitsmass für zwei Objekte
a, bmitmkategorialen Attributen (zählt die Mismatches):
D(\mathbf{a}, \mathbf{b}) = \sum_{i=1}^{m} \delta(a_i, b_i), \qquad \delta(a_i, b_i) = \begin{cases} 1 & a_i \neq b_i \\ 0 & a_i = b_i \end{cases}
- Modus
\mathbf{q} = (q_1, \dots, q_m)^{\top}: minimiert die Summe der Unähnlichkeiten zu allen Objekten
D(X, \mathbf{q}) = \sum_{i=1}^{n} D(\mathbf{x}_i, \mathbf{q})
\mathbf{q}muss nicht inXliegen und ist nicht zwingend eindeutig; gefunden über die Häufigkeit der Kategorien je Attribut
kmodes Package (für Übung 2)
- scikit-learn enthält kein k-Modes/k-Prototypes → separates Paket
kmodes
from kmodes.kprototypes import KPrototypes
kproto = KPrototypes(n_clusters=4, init='Cao', verbose=2)
clusters = kproto.fit_predict(X, categorical=[1, 2]) # Indizes der kategorialen Spalten
kproto.cluster_centroids_ # bestimmte Cluster-Zentren