Introduction to Machine Learning - Exam.pdf

Introduction to Machine Learning - Exam
Introduction to Machine Learning - Exam Aufgabe 1) Gegeben sei ein Datensatz von Patienteninformationen mit verschiedenen Merkmalen wie Alter, Gewicht, Blutdruck und Cholesterinwert. Du sollst anhand dieser Informationen vorhersagen, ob ein Patient an Herzkrankheiten leidet. Dazu wirst Du verschiedene maschinelle Lernverfahren anwenden und bewerten. a) Führe eine Datenvorbereitung durch und teile ...

© StudySmarter 2024, all rights reserved.

Introduction to Machine Learning - Exam

Aufgabe 1)

Gegeben sei ein Datensatz von Patienteninformationen mit verschiedenen Merkmalen wie Alter, Gewicht, Blutdruck und Cholesterinwert. Du sollst anhand dieser Informationen vorhersagen, ob ein Patient an Herzkrankheiten leidet. Dazu wirst Du verschiedene maschinelle Lernverfahren anwenden und bewerten.

a)

Führe eine Datenvorbereitung durch und teile den Datensatz in Trainings- und Testdaten auf. Verwende dafür eine Trainingsdatengröße von 80 % und eine Testdatengröße von 20 %. Implementiere den Code in Python und erkläre die Schritte.

import pandas as pdfrom sklearn.model_selection import train_test_split# Laden des Datensatzesdf = pd.read_csv('patienteninformationen.csv')# Aufteilen in Merkmale (X) und Zielvariable (y)X = df.drop('Herzkrankheit', axis=1)y = df['Herzkrankheit']# Aufteilen in Trainings- und TestdatenX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Lösung:

Datenvorbereitung und Aufteilung des Datensatzes

Um den Datensatz effektiv nutzen zu können, ist es notwendig, eine ordnungsgemäße Datenvorbereitung durchzuführen und den Datensatz in Trainings- und Testdaten aufzuteilen. Dies ermöglicht die Evaluierung und Validierung der Vorhersagemodelle. Im Folgenden wird Schritt für Schritt beschrieben, wie dies mithilfe von Python durchgeführt wird:

  • Bibliotheken importieren: Zunächst müssen die notwendigen Bibliotheken importiert werden. In diesem Fall verwenden wir pandas zum Arbeiten mit dem Datensatz und train_test_split aus sklearn.model_selection zur Aufteilung der Daten.
  • Datensatz laden: Der Datensatz wird aus einer CSV-Datei geladen. Hierbei wird angenommen, dass die Datei 'patienteninformationen.csv' genannt wird.
  • Merkmale und Zielvariable trennen: Der Datensatz enthält verschiedene Merkmale (z. B. Alter, Gewicht, Blutdruck) und eine Zielvariable (Herzkrankheit). Diese werden getrennt, damit sie für das Training und die Testphase verwendet werden können.
  • Aufteilen in Trainings- und Testdaten: Schließlich wird der Datensatz in Trainings- und Testdaten aufgeteilt. Dabei wird 80% der Daten für das Training und 20% für das Testen verwendet.
import pandas as pdfrom sklearn.model_selection import train_test_split# Laden des Datensatzesdf = pd.read_csv('patienteninformationen.csv')# Aufteilen in Merkmale (X) und Zielvariable (y)X = df.drop('Herzkrankheit', axis=1)y = df['Herzkrankheit']# Aufteilen in Trainings- und TestdatenX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Zusammenfassung der Schritte:

  • 1. Importiere die notwendigen Bibliotheken.
  • 2. Lade den Datensatz.
  • 3. Trenne den Datensatz in Merkmale (X) und Zielvariable (y).
  • 4. Teile den Datensatz in Trainings- und Testdaten auf, wobei 80% der Daten für das Training und 20% für das Testen verwendet werden.

b)

Trainiere ein logistisches Regressionsmodell mit den Trainingsdaten und evaluiere die Leistung des Modells mit den Testdaten. Berechne die Genauigkeit, Präzision und den Recall des Modells. Erkläre die Bedeutung dieser Metriken.

from sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score, precision_score, recall_score# Erstellen und Trainieren des Modellsmodel = LogisticRegression(max_iter=1000)model.fit(X_train, y_train)# Vorhersage auf Testdateny_pred = model.predict(X_test)# Berechnung der Metrikenaccuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred)recall = recall_score(y_test, y_pred)print(f'Genauigkeit: {accuracy}')print(f'Präzision: {precision}')print(f'Recall: {recall}')

Lösung:

Training und Evaluation eines Logistischen Regressionsmodells

In diesem Abschnitt wirst Du lernen, wie man ein logistisches Regressionsmodell mit den Trainingsdaten trainiert und die Leistung des Modells mit den Testdaten evaluiert. Zu den zu berechnenden Metriken gehören Genauigkeit, Präzision und Recall. Diese Metriken werden nachfolgend detailliert erklärt.

  • Trainieren des Modells: Zunächst wird ein logistisches Regressionsmodell erstellt und mit den Trainingsdaten trainiert. Dazu verwenden wir die Klasse LogisticRegression aus der Bibliothek sklearn.linear_model.
  • Vorhersagen auf Testdaten: Nach dem Training des Modells werden Vorhersagen auf den Testdaten gemacht, um die Leistung des Modells zu evaluieren.
  • Berechnung der Metriken: Schließlich berechnen wir die Metriken Genauigkeit, Präzision und Recall mithilfe der entsprechenden Funktionen aus sklearn.metrics und geben die Ergebnisse aus.
from sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score, precision_score, recall_score# Erstellen und Trainieren des Modellsmodel = LogisticRegression(max_iter=1000)model.fit(X_train, y_train)# Vorhersage auf Testdateny_pred = model.predict(X_test)# Berechnung der Metrikenaccuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred)recall = recall_score(y_test, y_pred)print(f'Genauigkeit: {accuracy}')print(f'Präzision: {precision}')print(f'Recall: {recall}')

Erklärung der Metriken

  • Genauigkeit: Die Genauigkeit gibt an, wie viele der insgesamt gemachten Vorhersagen korrekt sind. Sie wird berechnet als das Verhältnis der korrekt vorhergesagten Fälle zur Gesamtanzahl der Fälle. Die Formel lautet: \[ \text{Genauigkeit} = \frac{\text{Anzahl der korrekten Vorhersagen}}{\text{Gesamtanzahl der Vorhersagen}} \]
  • Präzision: Die Präzision gibt an, wie viele der positiv vorhergesagten Fälle tatsächlich positiv sind. Dies ist besonders wichtig, wenn die Kosten für falsch-positive Ergebnisse hoch sind. Die Formel lautet: \[ \text{Präzision} = \frac{\text{Wahre Positive}}{\text{Wahre Positive + Falsch Positive}} \]
  • Recall: Der Recall (auch Empfindlichkeit oder True Positive Rate genannt) gibt an, wie viele der tatsächlichen positiven Fälle korrekt identifiziert wurden. Dies ist wichtig, wenn die Kosten für falsch-negative Ergebnisse hoch sind. Die Formel lautet: \[ \text{Recall} = \frac{\text{Wahre Positive}}{\text{Wahre Positive + Falsch Negative}} \]

Zusammengefasst helfen diese Metriken dabei, die Leistung des Modells aus verschiedenen Blickwinkeln zu bewerten und besser zu verstehen, wie gut das Modell funktioniert.

Aufgabe 2)

In einem medizinischen Forschungsprojekt sollen Behandlungsdaten analysiert werden. Die Behandlungsdaten umfassen für jeden Patienten das Alter (in Jahren), das Geschlecht (0 für weiblich, 1 für männlich), und ob die Behandlung erfolgreich war (1 für ja, 0 für nein). Die Forscher möchten herausfinden, wie das Alter und das Geschlecht die Wahrscheinlichkeit eines Behandlungserfolgs beeinflussen. Verwenden Sie hierfür die Methoden lineare und logistische Regression.

a)

Formulieren Sie ein lineares Regressionsmodell, das die Erfolgswahrscheinlichkeit der Behandlung in Abhängigkeit vom Alter und vom Geschlecht des Patienten beschreibt. Geben Sie die Regressionsgleichung an.

Lösung:

Um ein lineares Regressionsmodell zu formulieren, das die Erfolgswahrscheinlichkeit der Behandlung in Abhängigkeit vom Alter und vom Geschlecht beschreibt, beginnen wir mit der Festlegung der Regressionsgleichung. Angenommen, die Erfolgswahrscheinlichkeit der Behandlung sei die abhängige Variable y, das Alter sei x_1, und das Geschlecht sei x_2 (mit 0 für weiblich und 1 für männlich).

Die allgemeine Form der linearen Regressionsgleichung lautet:

  • y = β_0 + β_1 * x_1 + β_2 * x_2 + ε

Hierbei gilt:

  • β_0: der Achsenabschnitt (Intercept)
  • β_1: der Koeffizient für die Altersvariable x_1 (wie stark das Alter den Behandlungserfolg beeinflusst)
  • β_2: der Koeffizient für die Geschlechtsvariable x_2 (wie stark das Geschlecht den Behandlungserfolg beeinflusst)
  • ε: der Fehlerterm (Residuum), der nicht durch die anderen Variablen erklärt wird

Die endgültige Regressionsgleichung, die die Erfolgswahrscheinlichkeit der Behandlung basierend auf Alter und Geschlecht beschreibt, lautet somit:

  • y = β_0 + β_1 * Alter + β_2 * Geschlecht + ε

In dieser Gleichung kannst Du die Werte für β_0, β_1 und β_2 aus den Regressionsanalysen bestimmen, die Du mit deinen Daten durchführst.

c)

Leiten Sie die logistische Funktion für das beschriebene Problem her. Geben Sie die Modellgleichung an und erläutern Sie die Bedeutung der Koeffizienten \(\beta_0\), \(\beta_1\), und \(\beta_2\).

Lösung:

Die logistische Funktion ist für die Modellierung der Wahrscheinlichkeit eines binären Outcomes besonders geeignet. Für unser Problem, bei dem der Behandlungserfolg (1 für ja, 0 für nein) von Alter und Geschlecht abhängt, leiten wir die logistische Funktion wie folgt her:

Wir beginnen mit der logit-Funktion, welche die logarithmischen Odds eines Ereignisses beschreibt:

  • \( \text{logit}(p) = \log \left( \frac{p}{1-p} \right) \)

In unserem Fall modelliert die logit-Funktion die Beziehung zwischen der Erfolgswahrscheinlichkeit \( p \) und den Prädiktoren (Alter und Geschlecht) als lineare Kombination:

  • \( \text{logit}(p) = \beta_0 + \beta_1 \times \text{Alter} + \beta_2 \times \text{Geschlecht} \)

Um die logit-Funktion in Wahrscheinlichkeiten zu transformieren, verwenden wir die logistische Funktion:

  • \( p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 \times \text{Alter} + \beta_2 \times \text{Geschlecht})}} \)

Dies ist die Modellgleichung für die logistische Regression. Dabei sind:

  • \( p \): Die Wahrscheinlichkeit, dass die Behandlung erfolgreich ist.
  • \( \beta_0 \): Der Achsenabschnitt (Intercept) des Modells. Er gibt die Grundlogit bei einem Alter von 0 und weiblichem Geschlecht (Geschlecht = 0) an.
  • \( \beta_1 \): Der Koeffizient für die Altersvariable. Er gibt an, wie stark sich die log-Odds des Behandlungserfolgs pro Jahr ändern.
  • \( \beta_2 \): Der Koeffizient für die Geschlechtsvariable. Er misst den Unterschied in den log-Odds des Behandlungserfolgs zwischen weiblichen (0) und männlichen (1) Patienten.

Die Bedeutung der Koeffizienten:

  • \( \beta_0 \) (Intercept): Dieser Koeffizient zeigt die log-Odds des Behandlungserfolgs für eine Frau (Geschlecht = 0) mit einem Alter von 0 Jahren an. Er dient als Basiswert für das Modell.
  • \( \beta_1 \) (Alterskoeffizient): Dieser Koeffizient zeigt, wie sich die log-Odds des Behandlungserfolgs für jedes zusätzliche Jahr im Alter ändern.
  • \( \beta_2 \) (Geschlechtskoeffizient): Dieser Koeffizient zeigt, wie sich die log-Odds des Behandlungserfolgs zwischen weiblichen und männlichen Patienten unterscheiden. Ein positiver Wert bedeutet höhere log-Odds (und damit eine höhere Wahrscheinlichkeit) für männliche Patienten und umgekehrt.

Daher lautet die vollständige Gleichung der logistischen Regression für unser Problem:

  • \( p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 \times \text{Alter} + \beta_2 \times \text{Geschlecht})}} \)

d)

Ein Forscher hat die folgenden geschätzten Koeffizienten für das logistische Regressionsmodell gefunden: \(\beta_0 = -1.5\), \(\beta_1 = 0.03\), und \(\beta_2 = 0.5\). Berechnen Sie die Wahrscheinlichkeit eines Behandlungserfolgs für einen 55-jährigen männlichen Patienten.

Lösung:

Um die Wahrscheinlichkeit eines Behandlungserfolgs für einen 55-jährigen männlichen Patienten unter Verwendung der gegebenen Koeffizienten des logistischen Regressionsmodells zu berechnen, verwenden wir die logistische Funktion:

  • \( p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 \times \text{Alter} + \beta_2 \times \text{Geschlecht})}} \)

Die gegebenen Koeffizienten sind:

  • \( \beta_0 = -1.5 \)
  • \( \beta_1 = 0.03 \)
  • \( \beta_2 = 0.5 \)

Für einen 55-jährigen männlichen Patienten (Alter = 55, Geschlecht = 1) setzen wir die Werte in die logistische Funktion ein:

  • \( p = \frac{1}{1 + e^{-( -1.5 + 0.03 \times 55 + 0.5 \times 1 )}} \)

Erst berechnen wir den Exponenten im Nenner:

  • \( -1.5 + (0.03 \times 55) + (0.5 \times 1) \)
  • \( -1.5 + 1.65 + 0.5 \)
  • \( -1.5 + 2.15 \)
  • \( 0.65 \)

Jetzt setzen wir den berechneten Wert in die logistische Funktion ein:

  • \( p = \frac{1}{1 + e^{-0.65}} \)

Der Exponentialausdruck kann weiter berechnet werden:

  • \( e^{-0.65} \approx 0.522 \)

Jetzt berechnen wir den Nenner:

  • \( 1 + 0.522 = 1.522 \)

Schließlich berechnen wir die Wahrscheinlichkeit:

  • \( p = \frac{1}{1.522} \approx 0.657 \)

Also beträgt die Wahrscheinlichkeit eines Behandlungserfolgs für einen 55-jährigen männlichen Patienten etwa 65,7%.

Aufgabe 3)

In dieser Aufgabe sollst Du verschiedene Aspekte von Entscheidungsbäumen und Random Forests anwenden und analysieren. Gegeben seien ein Datensatz mit Attributen und Klassenlabels sowie einer in Python implementierten Umgebung.

a)

Implementiere einen Entscheidungsbaum in Python, der den gegebenen Datensatz klassifiziert. Verwende den Gini-Index als Splitting-Kriterium. Beschreibe jedes einzelne Blatt des Baumes und erkläre, welche Attribut-Tests und Testergebnisse zu jedem Knoten geführt haben.

import numpy as npfrom sklearn.tree import DecisionTreeClassifierfrom sklearn import tree# Beispielhafte Daten:X = np.array([...])  # Attribut-Wertey = np.array([...])  # Klassenlabels# Entscheidungsbaum-Initializationclf = DecisionTreeClassifier(criterion='gini')clf = clf.fit(X, y)# Plotten des Entscheidungsbaumsimport matplotlib.pyplot as pltplt.figure(figsize=(20,10))tree.plot_tree(clf, filled=True)plt.show()

Lösung:

Um einen Entscheidungsbaum zur Klassifizierung eines gegebenen Datensatzes in Python zu implementieren und den Gini-Index als Splitting-Kriterium zu verwenden, folge diesen Schritten:

  • Importiere die notwendigen Bibliotheken.
  • Definiere den Datensatz (Attribut-Werte und Klassenlabels).
  • Initialisiere und trainiere den Entscheidungsbaum-Klassifikator, wobei der Gini-Index als Kriterium verwendet wird.
  • Plotte den Entscheidungsbaum, um die Struktur und die Attribute der einzelnen Blätter zu visualisieren.
  • Beschreibe die Ergebnisse und erkläre die Tests und Testergebnisse, die zu jedem Knoten geführt haben.

Hier ist ein vollständiges Beispiel für die Implementierung:

import numpy as npfrom sklearn.tree import DecisionTreeClassifierfrom sklearn import treeimport matplotlib.pyplot as plt# Beispielhafte Daten (X: Attribut-Werte, y: Klassenlabels)X = np.array([    [1, 2], [1, 3], [1, 4], [1, 5],    [2, 6], [2, 7], [2, 8], [2, 9],    [3, 10], [3, 11], [3, 12], [3, 13]])y = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2])# Entscheidungsbaum-Initialisierung mit Gini-Indexclf = DecisionTreeClassifier(criterion='gini')clf = clf.fit(X, y)# Plotten des Entscheidungsbaumsplt.figure(figsize=(20,10))tree.plot_tree(clf, filled=True)plt.show()

Nun erfolgt eine Beschreibung der Blätter des Entscheidungsbaums und Erklärung der Attribut-Tests und Testergebnisse:

  • Knoten 0: Dieser Knoten ist der Wurzelknoten. Hier wird ein Attribut-Test durchgeführt, um die besten Splits basierend auf dem Gini-Index zu finden.
  • Knoten 1 (Linke Seite von Knoten 0): Hier wird das erste Attribut getestet. Wenn der Wert des ersten Attributs kleiner oder gleich einem bestimmten Schwellenwert ist (z.B. 1.5), dann bewegt sich der Entscheidungsprozess nach unten zu den nächsten Knoten.
  • Knoten 2 (Rechte Seite von Knoten 1): Wenn der Wert des ersten Attributs größer als 1.5 ist, wird der Entscheidungsprozess auf der rechten Seite fortgesetzt, um weitere Tests und Splits basierend auf dem zweiten Attribut durchzuführen.
  • Blätter: Jedes Blatt repräsentiert eine Endklasse, basierend auf den Testergebnissen der darüber liegenden Knoten. Zum Beispiel: Wenn ein Datenpunkt den Attribut-Testkriterien auf dem Pfad zu einem bestimmten Blatt entspricht, wird ihm die Klasse des Blattes zugewiesen.

Auf diese Weise kann der Entscheidungsbaum einen gegebenen Datensatz klassifizieren und die Struktur der Tests visualisieren, die zu jeder Entscheidung führen.

b)

Random Forests bieten eine robustere Methode, um die Vorhersagegenauigkeit zu erhöhen. Trainiere einen Random Forest mit dem gleichen Datensatz und evaluiere das Modell mit Cross-Validation. Berechne die OOB-Error-Rate und erkläre, was die Feature Importance zeigt.

from sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import cross_val_score# Random Forest Initializationrf_clf = RandomForestClassifier(n_estimators=100, oob_score=True)rf_clf = rf_clf.fit(X, y)# OOB Erroroob_error = 1 - rf_clf.oob_score_# Cross-Validation Scorecv_scores = cross_val_score(rf_clf, X, y, cv=5)# Feature Importanceimportances = rf_clf.feature_importances_print(f'OOB Error: {oob_error}')print(f'Cross-Validation Scores: {cv_scores}')print(f'Feature Importances: {importances}')
  • Erkläre die Bedeutung des OOB-Errors und wie er im Kontext von Random Forests verwendet wird.
  • Analysiere die Feature Importances und beschreibe, welche Attribute die größten Einflüsse auf die Vorhersagen haben und warum.

Lösung:

Um einen Random Forest mit einem gegebenen Datensatz zu trainieren und das Modell mit Cross-Validation zu evaluieren, befolge bitte die nachstehenden Schritte:

  • Importiere die notwendigen Bibliotheken.
  • Definiere den Datensatz (Attribut-Werte und Klassenlabels).
  • Initialisiere und trainiere den Random Forest-Klassifikator.
  • Berechne die Out-of-Bag (OOB) Fehlerrate.
  • Führe eine Cross-Validation durch und berechne die Scores.
  • Bestimme die Feature Importances und analysiere sie.

Hier ist ein vollständiges Beispiel für die Implementierung:

from sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import cross_val_scoreimport numpy as np# Beispielhafte Daten (X: Attribut-Werte, y: Klassenlabels)X = np.array([    [1, 2], [1, 3], [1, 4], [1, 5],    [2, 6], [2, 7], [2, 8], [2, 9],    [3, 10], [3, 11], [3, 12], [3, 13]])y = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2])# Random Forest-Initialisierungenrf_clf = RandomForestClassifier(n_estimators=100, oob_score=True)rf_clf = rf_clf.fit(X, y)# OOB Error berechnenoob_error = 1 - rf_clf.oob_score_# Cross-Validation Scores berechnencv_scores = cross_val_score(rf_clf, X, y, cv=5)# Feature Importance berechnenimportances = rf_clf.feature_importances_print(f'OOB Error: {oob_error}')print(f'Cross-Validation Scores: {cv_scores}')print(f'Feature Importances: {importances}')

Nun erfolgt eine Erklärung der Ergebnisse und Analysen:

  • OOB Error: Der Out-of-Bag (OOB) Error ist eine Methode zur Validierung und Schätzung der Vorhersagegenauigkeit eines Random Forest-Modells. Während der Trainingsphase wird jeder Entscheidungstree im Random Forest mit einer zufälligen Auswahl an Stichproben (mit Zurücklegen) aus dem Trainingsdatensatz trainiert. Ungefähr ein Drittel der Datenpunkte wird in jedem Tree nicht verwendet (Out-of-Bag-Daten). Diese OOB-Datenpunkte werden verwendet, um die Fehlerrate zu schätzen, indem sie durch die entsprechenden Trees vorhergesagt werden, die sie nicht gesehen haben. Dies bietet eine unabhängige Bewertung der Modellleistung ohne zusätzliche Cross-Validation.
  • Cross-Validation Scores: Cross-Validation ist eine Methode zur Bewertung der Modellleistung, indem der Datensatz in mehrere Folds unterteilt wird. Das Modell wird auf mehreren Training- und Test-Splits trainiert und evaluiert, um eine robustere Schätzung der Modellleistung zu erhalten. Die resultierenden Scores geben einen Überblick über die Performanz des Modells über verschiedene Daten-Splits hinweg.
  • Feature Importances: Die Feature Importances zeigen, welche Attribute den größten Einfluss auf die Vorhersagen des Modells haben. Ein höherer Wichtigkeitswert eines Attributs bedeutet, dass dieses Attribut eine größere Rolle bei der Aufteilung der Daten und der Erstellung der Entscheidungstrees im Random Forest gespielt hat. Durch die Analyse der Feature Importances kann man wertvolle Einblicke gewinnen, um zu verstehen, welche Merkmale am wichtigsten sind und möglicherweise nützlichere Vorhersagen liefern. Zum Beispiel, wenn eine bestimmte Spalte in den Attributen einen sehr hohen Importance-Score hat, bedeutet dies, dass diese Spalte entscheidend für die Klassifizierung ist, und möglicherweise sollte man sich bei weiteren Analysen oder Datenvorbereitungen darauf konzentrieren.

Aufgabe 4)

K-Means und Hierarchisches Clustering: Verfahren und UnterschiedeK-Means und Hierarchisches Clustering sind zwei gängige Clusteranalyseverfahren zur Gruppierung von Datensätzen in Clustern.

  • K-Means: Partitionierungsverfahren, minimiert die Summe der quadratischen Abstände der Datenpunkte zu den Clusterzentroiden.
    • Algorithmus: Initialisierung k Clusterzentren, Zuordnung der Punkte, Update der Zentren, Wiederholung bis Konvergenz.
    • Zahl der Cluster k muss vorab festgelegt werden.
  • Hierarchisches Clustering: Erstellung einer Hierarchie von Clustern, Ausgabe in Dendrogramm.
    • Agglomerativ: Beginnt mit jedem Punkt als eigenem Cluster, fusioniert Cluster schrittweise.
    • Divisiv: Beginnt mit einem einzigen Cluster, spaltet Cluster schrittweise.
    • Keine Vorabfestlegung der Clusteranzahl notwendig.
  • Unterschiede:
    • K-Means: Effizient für große Datensätze, erfordert k vorab.
    • Hierarchisch: Besser für kleine bis mittlere Datensätze, eignet sich zur Analyse der Clusterstruktur.

a)

Teilaufgabe 1: Du hast einen Datensatz mit 150 Punkten in einem zweidimensionalen Raum. Diese Punkte besitzen keine offensichtliche Clusterzugehörigkeit. Erkläre Schritt für Schritt, wie Du den K-Means Algorithmus anwenden würdest, um diese Punkte in 3 Cluster zu unterteilen. Zeige die dazugehörigen Formeln für die Berechnung der Abstände und den Update-Prozess der Zentren. Stelle sicher, dass Du die Konvergenzkriterien kennzeichnest.Hinweis: Gehe davon aus, dass die initialen Clusterzentroiden zufällig ausgewählt wurden.

Lösung:

Teilaufgabe 1: Du hast einen Datensatz mit 150 Punkten in einem zweidimensionalen Raum. Diese Punkte besitzen keine offensichtliche Clusterzugehörigkeit. Erkläre Schritt für Schritt, wie Du den K-Means Algorithmus anwenden würdest, um diese Punkte in 3 Cluster zu unterteilen. Zeige die dazugehörigen Formeln für die Berechnung der Abstände und den Update-Prozess der Zentren. Stelle sicher, dass Du die Konvergenzkriterien kennzeichnest.Hinweis: Gehe davon aus, dass die initialen Clusterzentroiden zufällig ausgewählt wurden.Um den K-Means Algorithmus anzuwenden, gehst Du wie folgt vor:

  1. Initialisierung: Wähle zufällig drei Punkte aus dem Datensatz als initiale Clusterzentroiden: \(\textbf{C}_1, \textbf{C}_2, \textbf{C}_3\).
  2. Zuweisung der Punkte: Weise jeden der 150 Punkte dem nächstgelegenen Clusterzentroiden zu.
    • Die Distanz zwischen einem Punkt \(x_i\) und einem Zentrum \(\textbf{C}_j\) wird mit der euklidischen Distanz berechnet:
    • \[\text{dist}(x_i, \textbf{C}_j) = \sqrt{(x_{i_1} - \textbf{C}_{j_1})^2 + (x_{i_2} - \textbf{C}_{j_2})^2}\]
  3. Update der Zentren: Berechne die neuen Zentroiden der Cluster, indem Du den Durchschnitt der Koordinaten aller Punkte innerhalb eines Clusters berechnest: \[\textbf{C}_j = \frac{1}{|C_j|} \sum_{x_i \in C_j} x_i\] Hierbei ist \(C_j\) die Menge der Punkte, die dem Cluster \(j\) zugewiesen wurden.
  4. Wiederholung: Wiederhole die Schritte 2 und 3 (Punkte zuweisen und Zentren aktualisieren), bis sich die Positionen der Zentroiden kaum mehr ändern (d.h. die Veränderung ist kleiner als ein vorher festgelegter Schwellenwert) oder eine festgelegte maximale Anzahl von Iterationen erreicht wurde.
Konvergenzkriterien:
  • Die Änderung der Clusterzentroiden ist kleiner als ein vordefinierter Schwellenwert. Ein typisches Kriterium könnte sein: \[\|\textbf{C}_{\text{new}} - \textbf{C}_{\text{old}}\| < \epsilon\] wobei \(\epsilon\) ein sehr kleiner positiver Wert ist.
  • Eine maximale Anzahl an Iterationen wurde erreicht.
Am Ende hast Du die 150 Punkte in drei Cluster unterteilt, wobei jeder Cluster durch sein finales Zentrum repräsentiert wird. Der Algorithmus minimiert dabei die Summe der quadratischen Abstände der Datenpunkte zu ihren jeweiligen Clusterzentroiden.

b)

Teilaufgabe 2: Der gleiche Datensatz wird nun mit einem hierarchischen agglomerativen Clustering-Ansatz untersucht. Erläutere detailliert das Verfahren dieses Ansatzes. Beschreibe den Prozess des Cluster-Fusionsschritts und wie Du die Clusterhierarchie (Dendrogramm) interpretierst. Schlage auch vor, welche Abstandsmetrik (z.B. Single Linkage, Complete Linkage oder Average Linkage) genutzt werden könnte, und begründe Deine Wahl.Erkläre den Unterschied zum K-Means Verfahren und diskutiere die Vor- und Nachteile im Kontext des gegebenen Datensatzes.

Lösung:

Teilaufgabe 2: Der gleiche Datensatz wird nun mit einem hierarchischen agglomerativen Clustering-Ansatz untersucht. Erläutere detailliert das Verfahren dieses Ansatzes. Beschreibe den Prozess des Cluster-Fusionsschritts und wie Du die Clusterhierarchie (Dendrogramm) interpretierst. Schlage auch vor, welche Abstandsmetrik (z.B., Single Linkage, Complete Linkage oder Average Linkage) genutzt werden könnte, und begründe Deine Wahl.Erkläre den Unterschied zum K-Means Verfahren und diskutiere die Vor- und Nachteile im Kontext des gegebenen Datensatzes.Ablauf des hierarchischen agglomerativen Clustering-Ansatzes:

  1. Initialisierung: Beginne damit, dass jeder der 150 Punkte als eigener Cluster betrachtet wird.
  2. Berechnung der Abstände: Berechne die Abstände zwischen allen Clustern mithilfe einer Abstandsmetrik. Beispiele für Met­ri­ken sind:
    • Single Linkage: Der minimale Abstand zwischen Punkten der beiden Cluster.
    • Complete Linkage: Der maximale Abstand zwischen Punkten der beiden Cluster.
    • Average Linkage: Der durchschnittliche Abstand zwischen Punkten der beiden Cluster.
  3. Fusionieren der nächsten Cluster: Finde die beiden Cluster mit dem kleinsten Abstand und fusioniere sie zu einem neuen Cluster.
  4. Aktualisieren der Abstände: Aktualisiere die Abstandsmetrik, um die Abstände zwischen dem neuen Cluster und den verbleibenden Clustern zu reflektieren.
  5. Wiederholen: Wiederhole die Schritte 3 und 4, bis nur noch ein Cluster übrig bleibt oder eine gewünschte Clusteranzahl erreicht ist.
Interpretation des Dendrogramms: Ein Dendrogramm ist ein Baumdiagramm, das die Reihenfolge und Distanz der Clusterfusionen darstellt. Jeder Verzweigungspunkt im Dendrogramm repräsentiert eine Fusion. Die Höhe der Verzweigung repräsentiert die Distanz oder Ähnlichkeit, bei der die Fusion stattgefunden hat. Niedrigere Verzweigungen deuten auf eng verwandte Cluster hin, während höhere Verzweigungen größere Unterschiede anzeigen.Wahl der Abstandsmetrik: Für diesen Datensatz könnte die Average Linkage Metrik geeignet sein, da sie eine ausgewogene Betrachtung der Abstände innerhalb der Cluster bietet.
  • Single Linkage: Neigt dazu, lange, dünne Ketten zu bilden und kann bei noisigen Daten unzuverlässig sein.
  • Complete Linkage: Neigt dazu, kompakte und gleichmäßige Cluster zu bilden, aber kann auch anfällig für Ausreißer sein.
  • Average Linkage: Bietet eine gute Balance und berücksichtigt den durchschnittlichen Abstand innerhalb von Clustern.
Unterschiede zum K-Means Verfahren:
  • Vorstruktur: K-Means erfordert eine vorherige Festlegung der Anzahl von Clustern (k), während hierarchisches Clustering diese nicht benötigt.
  • Dynamik: K-Means ist eine Partitionierungs-Methode, die wiederholt die Zentroiden aktualisiert. Hierarchisches Clustering erstellt eine festgelegte Struktur von Clustern (Dendrogramm), indem kontinuierlich Cluster fusioniert werden.
Vor- und Nachteile im Kontext des gegebenen Datensatzes:
  • K-Means Vorteile:
    • Effizient bei großen Datensätzen.
    • Einfach zu implementieren und zu verstehen.
  • K-Means Nachteile:
    • Erfordert die vorherige Festlegung der Anzahl der Cluster.
    • Kann schlecht initialisiert werden (anfällig für Anfangsbedingungen).
  • Hierarchisches Clustering Vorteile:
    • Erforder keine Festlegung der Clusteranzahl im Voraus.
    • Bietet eine umfassende Ansicht der Clusterstruktur und -hierarchie.
  • Hierarchisches Clustering Nachteile:
    • Weniger effizient und rechenintensiver bei sehr großen Datensätzen.
    • Kann anfällig für Ausreißer sein.
Abschließend ermöglicht die Hierarchische Clusteranalyse für Deinen Datensatz eine detaillierte Betrachtung der Clusterhierarchie, während K-Means eine schnelle und effiziente Partitionierung bietet, besonders wenn die Anzahl der Cluster bekannt ist. Die Wahl des Verfahrens hängt daher stark von den spezifischen Anforderungen und Eigenschaften des Datensatzes ab.
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden