Programming lesson
Maschinelles Lernen mit CIFAR-10 und R: Ein praktischer Leitfaden für Clustering und Visualisierung
Lerne, wie du den CIFAR-10-Datensatz und den European-Jobs-Datensatz mit R analysierst. Dieser Leitfaden erklärt Clustering, Visualisierung und lineare Regression anhand aktueller Beispiele aus KI und Data Science.
Einführung in CIFAR-10 und Clustering mit R
Der CIFAR-10-Datensatz ist ein Klassiker im maschinellen Lernen. Er enthält 60.000 32×32-Farbbilder in 10 Klassen wie Flugzeuge, Autos, Vögel, Katzen, Hirsche, Hunde, Frösche, Pferde, Schiffe und Lastwagen. Entwickelt von Alex Krizhevsky, Vinod Nair und Geoffrey Hinton, dient er als Benchmark für Bildklassifikationsalgorithmen. In diesem Tutorial nutzen wir CIFAR-10 jedoch nicht für Deep Learning, sondern für eine explorative Datenanalyse mit Clustering und Visualisierung in R. Wir kombinieren dies mit dem European-Jobs-Datensatz, der Beschäftigungsprozente für europäische Länder im Jahr 1979 enthält – ein kleiner Datensatz mit nur 26 Datenpunkten, ideal zum Üben von Clustering-Techniken.
Warum Clustering? Ein Trend-Beispiel aus der KI-Welt
Stell dir vor, du entwickelst eine App, die personalisierte Playlists erstellt – ähnlich wie Spotify. Anstatt jeden Nutzer manuell zu kategorisieren, gruppiert ein Clustering-Algorithmus ähnliche Hörgewohnheiten. So entstehen automatisch Cluster wie „Party-Hits“, „Studienmusik“ oder „Workout-Playlists“. Genau diese Logik wenden wir auf Bilddaten und Arbeitsmarktdaten an. Clustering hilft, Muster zu erkennen, ohne dass Labels vorgegeben sind – ein zentrales Konzept des unüberwachten Lernens.
Datensätze herunterladen und vorbereiten
Lade den CIFAR-10-Datensatz von https://www.cs.toronto.edu/~kriz/cifar.html herunter. Für R empfehlen wir das Paket cifar10 oder die Rohdaten im Binary-Format. Der European-Jobs-Datensatz ist unter https://lib.stat.cmu.edu/DASL/Stories/EuropeanJobs.html verfügbar. Lade ihn als CSV. In R liest du die Daten wie folgt ein:
# CIFAR-10 (Beispiel: erstes Bild laden, hier vereinfacht)
library(cifar10)
data(cifar10)
train_x <- cifar10$train$x[1:1000, , ] # 1000 Bilder
# European Jobs
jobs <- read.csv('european_jobs.csv', header=TRUE, row.names=1)Explorative Datenanalyse und Visualisierung
CIFAR-10: Bilddaten visualisieren
Bevor wir clustern, verschaffen wir uns einen Überblick. Zeige zufällige Bilder aus dem Datensatz:
par(mfrow=c(2,5))
for(i in 1:10) {
img <- train_x[i, , ]
img <- apply(img, 2, rev) # korrekte Ausrichtung
image(1:32, 1:32, img, col=gray(0:255/255), axes=FALSE)
}Die Bilder sind klein, aber du erkennst grobe Formen. Für Clustering müssen wir die 32×32×3 (RGB) Pixel in einen Merkmalsvektor umwandeln. Reduziere die Dimensionalität mit PCA (Hauptkomponentenanalyse):
# Reshape zu 2D (Bilder x Pixel)
train_flat <- matrix(train_x, nrow=1000, ncol=32*32*3)
pca <- prcomp(train_flat, scale.=TRUE)
train_pca <- pca$x[, 1:50] # erste 50 HauptkomponentenEuropean Jobs: Daten verstehen
Der Datensatz enthält Prozentangaben für Sektoren wie Landwirtschaft, Industrie, Dienstleistungen usw. für Länder wie Deutschland, Frankreich, Italien. Ein Scatterplot der ersten zwei Hauptkomponenten zeigt Cluster:
pca_jobs <- prcomp(jobs, scale.=TRUE)
plot(pca_jobs$x[,1], pca_jobs$x[,2], xlab='PC1', ylab='PC2', main='European Jobs PCA')
text(pca_jobs$x[,1], pca_jobs$x[,2], labels=rownames(jobs), cex=0.7, pos=3)Du siehst, dass Länder wie Portugal und Griechenland nahe beieinander liegen – ähnliche Wirtschaftsstruktur.
Clustering mit k-Means
Anzahl der Cluster bestimmen
Nutze die Ellbogen-Methode oder den Silhouetten-Koeffizienten. Für CIFAR-10 wissen wir, dass es 10 Klassen gibt, aber wir testen 2 bis 15 Cluster:
wss <- sapply(2:15, function(k) kmeans(train_pca, centers=k, nstart=10)$tot.withinss)
plot(2:15, wss, type='b', xlab='Anzahl Cluster', ylab='WSS')Ein Knick bei k=10? Nicht immer, aber oft ein Hinweis. Für European Jobs versuche k=3 bis 6.
k-Means anwenden
set.seed(123)
km_cifar <- kmeans(train_pca, centers=10, nstart=25)
table(km_cifar$cluster) # Cluster-Größen
# Visualisierung der Cluster-Zentren (als Bilder)
centers <- km_cifar$centers
# Invers-PCA, um Bilder zu rekonstruieren (vereinfacht)
# ...Für European Jobs:
km_jobs <- kmeans(pca_jobs$x[, 1:3], centers=4, nstart=25)
plot(pca_jobs$x[,1], pca_jobs$x[,2], col=km_jobs$cluster, pch=19)
points(km_jobs$centers[,1], km_jobs$centers[,2], col=1:4, pch=8, cex=2)Interpretation: Cluster 1 könnte südeuropäische Länder mit hoher Landwirtschaft umfassen, Cluster 2 mitteleuropäische Industrienationen.
Lineare Regression mit R: Ein schneller Exkurs
Die Aufgabenstellung erwähnt auch lineare Regression. In R ist lm() der einfachste Weg. Angenommen, wir wollen den Beschäftigungsanteil im Dienstleistungssektor aus anderen Sektoren vorhersagen:
model <- lm(Service ~ Agriculture + Industry + ... , data=jobs)
summary(model)Dies ist nützlich, um Zusammenhänge zu verstehen – ähnlich wie bei der Vorhersage von Aktienkursen oder KI-Modellparametern.
Trend-Kontext: Wie Netflix und Spotify Clustering nutzen
Clustering ist allgegenwärtig: Netflix gruppiert Nutzer nach Sehverhalten, Spotify nach Hörgewohnheiten, und selbst in der Finanzwelt werden Aktien geclustert, um Portfolios zu optimieren. Stell dir vor, du analysierst den European-Jobs-Datensatz mit den Augen eines KI-Startups: Welche Länder ähneln sich? Welche Sektoren sind dominant? Das sind Fragen, die auch in der Wirtschaftsforschung relevant sind.
Häufige Fehler und Tipps
- Daten nicht standardisieren: PCA und k-Means reagieren empfindlich auf Skalen. Verwende
scale=TRUEoder standardisiere manuell. - Zu viele Hauptkomponenten: Für CIFAR-10 reichen oft 50, für European Jobs 2-3. Teste die Varianzerklärung.
- Seed setzen: k-Means ist nicht deterministisch. Setze
set.seed()für reproduzierbare Ergebnisse. - Cluster interpretieren: Schaue dir die Cluster-Zentren an. Bei Bildern kannst du sie als „Durchschnittsbild“ visualisieren.
Fazit
Du hast gelernt, wie du CIFAR-10 und European Jobs mit R analysierst, Cluster bildest und visualisierst. Diese Techniken sind Grundlage für fortgeschrittene Themen wie Deep Learning oder unüberwachte Anomalieerkennung. Probier selbst: Welche Cluster entdeckst du in deinem Lieblingsdatensatz? Vielleicht in Spotify-Daten oder in öffentlichen Wirtschaftsdaten? Viel Erfolg beim Experimentieren!