Praktikum Mustererkennung - Exam.pdf

Praktikum Mustererkennung - Exam
Praktikum Mustererkennung - Exam Aufgabe 1) In der Mustererkennung spielen der Merkmalsvektor und die Klassenzugehörigkeit eine zentrale Rolle. Ein Merkmalsvektor \mathbf{x} = (x_1, x_2, \dots, x_n) charakterisiert die messbaren Eigenschaften eines Objekts. Ziel ist es, anhand dieser Merkmale eine Klassenzuordnung vorzunehmen. Hierbei sind die Trennbarkeit der Klassen und die Invarianz gegenüber T...

© StudySmarter 2024, all rights reserved.

Praktikum Mustererkennung - Exam

Aufgabe 1)

In der Mustererkennung spielen der Merkmalsvektor und die Klassenzugehörigkeit eine zentrale Rolle. Ein Merkmalsvektor \mathbf{x} = (x_1, x_2, \dots, x_n) charakterisiert die messbaren Eigenschaften eines Objekts. Ziel ist es, anhand dieser Merkmale eine Klassenzuordnung vorzunehmen. Hierbei sind die Trennbarkeit der Klassen und die Invarianz gegenüber Transformationen von besonderer Bedeutung.

a)

a. Gegeben seien die Merkmalsvektoren zweier Objekte: \( \mathbf{x}_1 = (2, 3, 5) \) und \( \mathbf{x}_2 = (1, 4, 5) \). Berechne die Euklidische Distanz zwischen den beiden Vektoren. Ist aufgrund der Berechnung eine Aussage über die Trennbarkeit der Klassen möglich? Begründe deine Antwort.

Lösung:

Um die Euklidische Distanz zwischen den beiden Vektoren \(\textbf{x}_1\) und \(\textbf{x}_2\) zu berechnen, nutzen wir die folgende Formel:

  • \[d(\textbf{x}_1, \textbf{x}_2) = \sqrt{(x_{1_1} - x_{2_1})^2 + (x_{1_2} - x_{2_2})^2 + (x_{1_3} - x_{2_3})^2}\]

Setze die gegebenen Werte \(\textbf{x}_1 = (2, 3, 5)\) und \(\textbf{x}_2 = (1, 4, 5)\) in die Formel ein:

  • \[ d((2, 3, 5), (1, 4, 5)) = \sqrt{(2 - 1)^2 + (3 - 4)^2 + (5 - 5)^2} \]
  • = \[ \sqrt{1^2 + (-1)^2 + 0^2}\]
  • = \[ \sqrt{1 + 1 + 0}\]
  • = \[ \sqrt{2}\]

Die berechnete Euklidische Distanz zwischen den beiden Vektoren beträgt also \(\sqrt{2}\).

Bezüglich der Trennbarkeit der Klassen: Nur anhand der Euklidischen Distanz von \(\sqrt{2}\) kann keine definitive Aussage über die Trennbarkeit der Klassen gemacht werden. Die Euklidische Distanz gibt uns lediglich an, wie weit die beiden Punkte in einem n-dimensionalen Raum voneinander entfernt sind. Für eine fundierte Aussage über die Trennbarkeit der Klassen sind weitere Informationen erforderlich, wie z.B. die Verteilung der übrigen Merkmalsvektoren in den jeweiligen Klassen, mögliche Überlappungen sowie die Klassifikationsregeln, die angewendet werden.

b)

b. Ein weiterer Merkmalsvektor \( \mathbf{x}_3 = (3, 1, 4) \) unterliegt einer Transformation durch die Matrix \( \mathbf{T} = \begin{pmatrix} 0 & -1 & 0 \ 1 & 0 & 0 \ 0 & 0 & 1 \end{pmatrix} \). Berechne die transformierten Koordinaten von \( \mathbf{x}_3 \). Diskutiere, ob und warum das Ergebnis invariant gegenüber dieser Transformation ist.

Lösung:

Um die transformierten Koordinaten von \(\textbf{x}_3 = (3, 1, 4)\) zu berechnen, müssen wir den Merkmalsvektor mit der Transformationsmatrix \(\textbf{T}\) multiplizieren. Die Transformationsmatrix ist gegeben durch:

  • \[ \mathbf{T} = \begin{pmatrix} 0 & -1 & 0 \ 1 & 0 & 0 \ 0 & 0 & 1 \end{pmatrix} \]

Setzen wir \(\textbf{x}_3\) als Spaltenvektor dar:

  • \[ \mathbf{x}_3 = \begin{pmatrix} 3 \ 1 \ 4 \end{pmatrix} \]

Berechnen wir nun das Produkt:

  • \[ \textbf{T} \mathbf{x}_3 = \begin{pmatrix} 0 & -1 & 0 \ 1 & 0 & 0 \ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 3 \ 1 \ 4 \end{pmatrix} \]
  • = \[ \begin{pmatrix} (0 \cdot 3) + (-1 \cdot 1) + (0 \cdot 4) \ (1 \cdot 3) + (0 \cdot 1) + (0 \cdot 4) \ (0 \cdot 3) + (0 \cdot 1) + (1 \cdot 4) \end{pmatrix} \]
  • = \[ \begin{pmatrix} -1 \ 3 \ 4 \end{pmatrix} \]

Die transformierten Koordinaten von \(\textbf{x}_3\) sind also \(\begin{pmatrix} -1 \ 3 \ 4 \end{pmatrix}\).

Diskussion über die Invarianz: In diesem Fall ist die Invarianz gegenüber der Transformation gegeben, wenn die Transformation das Merkmalsverhältnis und die Klassenzugehörigkeit des Vektors nicht ändert. Die Transformation \(\textbf{T}\) ist eine lineare Transformation, bestehend aus einer Rotation der ersten beiden Komponenten um 90 Grad gegen den Uhrzeigersinn und einer Identitätsoperation auf der dritten Komponente. Da die dritte Komponente unangetastet bleibt und die ersten beiden Komponenten nur ihre Position und Richtung ändern, bleibt die Struktur der Daten unverändert. Allerdings könnte diese Art der Transformation je nach Anwendungsfall unterschiedliche Auswirkungen haben. Wenn z.B. die räumliche Orientierung von Bedeutung ist, könnte der Klasseninhalt beeinflusst werden. Andernfalls bleibt die Klasseninformation erhalten, solange nur Linearkombinationen genutzt werden.

c)

c. Beschreibe einen Algorithmus zur Klassifizierung eines Merkmalsvektors anhand seines Abstands zu den Zentroiden. Gegeben seien die Zentroiden zweier Klassen: \( \mathbf{c}_1 = (2, 2, 2) \) und \( \mathbf{c}_2 = (4, 4, 4) \). Implementiere die Klassifizierung in Python. Nutze hierfür den Punkt \( \mathbf{x} = (3, 3, 3)\).

Lösung:

Beschreibung des Algorithmus:

Der Algorithmus zur Klassifizierung eines Merkmalsvektors anhand seines Abstands zu den Zentroiden funktioniert wie folgt:

  • 1. Berechne die Euklidische Distanz des Merkmalsvektors zu jedem gegebenen Zentroide.
  • 2. Weise den Merkmalsvektor der Klasse des Zentroide zu, zu dem die Distanz am kleinsten ist.

Gegeben seien die Zentroiden \(\mathbf{c}_1 = (2, 2, 2)\) und \(\mathbf{c}_2 = (4, 4, 4)\). Wir sollen den Punkt \(\mathbf{x} = (3, 3, 3)\) klassifizieren.

Im Folgenden ist die erforderliche Python-Implementierung:

 import numpy as np  # Definiere die Zentroiden und den Merkmalsvektor centroid_1 = np.array([2, 2, 2]) centroid_2 = np.array([4, 4, 4]) x = np.array([3, 3, 3])  # Berechne die Euklidischen Distanzen dist_to_c1 = np.linalg.norm(x - centroid_1) dist_to_c2 = np.linalg.norm(x - centroid_2)  # Vergleiche die Distanzen und weise die Klasse zu if dist_to_c1 < dist_to_c2:     klasse = 'Klasse 1' else:     klasse = 'Klasse 2'  print(f'Punkt {x} gehört zu {klasse}')  

Ausgabe dieser Funktion:

 Punkt [3 3 3] gehört zu Klasse 1  

Erläuterung: Wir berechnen die Euklidischen Distanzen des Punktes \(\mathbf{x} = (3, 3, 3)\) zu den Zentroiden \(\mathbf{c}_1\) und \(\mathbf{c}_2\). Wenn die Distanz zu \(\mathbf{c}_1\) kleiner als die zu \(\mathbf{c}_2\) ist, wird der Punkt der Klasse 1 zugeordnet, andernfalls der Klasse 2. Das Python-Skript erfüllt diese Aufgabe und ermittelt, dass der Punkt \(\mathbf{x}\) der Klasse 1 angehört.

Aufgabe 2)

Du bist Datenwissenschaftler in einem Forschungsprojekt und hast einen hochdimensionalen Datensatz von biologischen Proben. Dein Ziel ist es, eine Dimensionalitätsreduktion durchzuführen, um die wichtigsten Merkmale der Daten zu identifizieren und die Proben in einem zweidimensionalen Raum zu visualisieren. Du entscheidest Dich, sowohl PCA als auch LDA zu verwenden.

a)

  • (a) Hauptkomponentenanalyse (PCA):
    • Leite die Kovarianzmatrix des Datensatzes her und berechne die Eigenvektoren und Eigenwerte.
    • Wähle die ersten beiden Hauptkomponenten aus und transformiere den Datensatz auf diese neuen Achsen. Zeige die resultierenden zweidimensionalen Datenpunkte.
    • Erkläre, was die gewählten Hauptkomponenten in Bezug auf die Varianz der Daten bedeuten.

Lösung:

Wir führen eine Hauptkomponentenanalyse (PCA) durch, um die wichtigsten Merkmale des Datensatzes zu identifizieren und die Proben in einem zweidimensionalen Raum zu visualisieren.

  • (a) Hauptkomponentenanalyse (PCA):
    • Herleiten der Kovarianzmatrix des Datensatzes und Berechnung der Eigenvektoren und Eigenwerte.
    • Auswahl der ersten beiden Hauptkomponenten und Transformation des Datensatzes auf diese neuen Achsen. Zeigen der resultierenden zweidimensionalen Datenpunkte.
    • Erklärung der Bedeutung der gewählten Hauptkomponenten in Bezug auf die Varianz der Daten.

Schritte der PCA

Folge diesen Schritten, um die PCA durchzuführen:

  1. Berechnung der Kovarianzmatrix:
  2. Zuerst standardisieren wir unseren Datensatz, um sicherzustellen, dass alle Merkmale gleiche Bedeutung haben. Die Standardisierung erfolgt durch Subtraktion des Mittelwerts und Division durch die Standardabweichung für jedes Merkmal.

    import numpy as npX_standardized = (X - X.mean(axis=0)) / X.std(axis=0)

    Die Kovarianzmatrix misst die linearen Beziehungen zwischen den Merkmalen des Datensatzes. Wenn unser Datensatz durch die Matrix X repräsentiert wird, dann ist die Kovarianzmatrix C gegeben durch:

    C = np.cov(X_standardized.T)
  3. Berechnung der Eigenvektoren und Eigenwerte:
  4. Um die wichtigsten Komponenten zu identifizieren, berechnen wir die Eigenvektoren und Eigenwerte der Kovarianzmatrix:

    eigenvalues, eigenvectors = np.linalg.eig(C)
  5. Auswahl der Hauptkomponenten und Transformation:
  6. Wir sortieren die Eigenvektoren nach den Eigenwerten in absteigender Reihenfolge. Die ersten beiden Eigenvektoren, die den größten Eigenwerten entsprechen, sind die zwei Hauptkomponenten, die wir auswählen:

    idx = eigenvalues.argsort()[::-1]eigenvalues = eigenvalues[idx]eigenvectors = eigenvectors[:, idx]# Die ersten beiden Hauptkomponenten PCseigenvectors_2d = eigenvectors[:, :2]

    Wir transformieren nun den Datensatz auf die neuen Achsen:

    X_pca = X_standardized.dot(eigenvectors_2d)
  7. Visualisierung der transformierten Daten:
  8. Zum Visualisieren der zweidimensionalen Datenpunkte verwenden wir eine Plotting-Bibliothek wie matplotlib:

    import matplotlib.pyplot as pltplt.scatter(X_pca[:, 0], X_pca[:, 1])plt.xlabel('Erste Hauptkomponente')plt.ylabel('Zweite Hauptkomponente')plt.title('PCA der biologischen Proben')plt.show()
  9. Erklärung der Hauptkomponenten:
  10. Die erste Hauptkomponente repräsentiert die Richtung der größten Varianz im Datensatz. Dies bedeutet, dass die Daten entlang dieser Achse die größte Streuung aufweisen. Die zweite Hauptkomponente ist orthogonal zur ersten Hauptkomponente und erklärt die zweitgrößte Varianz.

    Durch die PCA können wir die wichtigsten Merkmale des hochdimensionalen Datensatzes in einem zweidimensionalen Raum visualisieren, was zu einer besseren Interpretation und Analyse der Daten führt.

b)

  • (b) Lineare Diskriminanzanalyse (LDA):
    • Berechne die Within-Class und Between-Class Streumatrizen des Datensatzes.
    • Berechne die Diskriminantenvektoren und transformiere den Datensatz auf die neue zweidimensionale Basis.
    • Interpretiere die resultierenden zweidimensionalen Datenpunkte in Bezug auf die Trennbarkeit der Klassen.

Lösung:

Im Rahmen dieses Forschungsprojekts führen wir eine Lineare Diskriminanzanalyse (LDA) durch, um die wichtigsten Merkmale des hochdimensionalen Datensatzes zu identifizieren und die Proben in einem zweidimensionalen Raum zu visualisieren.

  • (b) Lineare Diskriminanzanalyse (LDA):
    • Berechnung der Within-Class und Between-Class Streumatrizen des Datensatzes.
    • Berechnung der Diskriminantenvektoren und Transformation des Datensatzes auf die neue zweidimensionale Basis.
    • Interpretation der resultierenden zweidimensionalen Datenpunkte in Bezug auf die Trennbarkeit der Klassen.

Schritte der LDA

Folge diesen Schritten, um die LDA durchzuführen:

  1. Berechnung der Within-Class und Between-Class Streumatrizen:
  • Within-Class Streumatrix: Die Within-Class Streumatrix misst die Streuung der Datenpunkte innerhalb jeder Klasse. Gegeben ein Datensatz mit mehreren Klassen, wird die Within-Class Streumatrix folgendermaßen berechnet:
import numpy as npn_features = X.shape[1]classes = np.unique(y)S_W = np.zeros((n_features, n_features))for c in classes:    X_c = X[y == c]    covariance_matrix = np.cov(X_c.T)    S_W += covariance_matrix * (X_c.shape[0] - 1)
  • Between-Class Streumatrix: Diese Streumatrix misst die Streuung der Mittelwerte der Klassen im Vergleich zum Gesamtmittelwert:
  • mean_overall = np.mean(X, axis=0)S_B = np.zeros((n_features, n_features))for c in classes:    X_c = X[y == c]    mean_class = np.mean(X_c, axis=0)    n_c = X_c.shape[0]    mean_diff = (mean_class - mean_overall).reshape(n_features, 1)    S_B += n_c * (mean_diff).dot(mean_diff.T)
  • Berechnung der Diskriminantenvektoren:
  • Wir berechnen die Eigenvektoren und Eigenwerte der Matrix S_W-1S_B, um die Richtung zu finden, die die Klassen am besten trennt:

    eigenvalues, eigenvectors = np.linalg.eig(np.linalg.inv(S_W).dot(S_B))idx = np.argsort(abs(eigenvalues))[::-1]eigenvectors = eigenvectors[:, idx]

    Die ersten beiden Eigenvektoren, die den größten Eigenwerten entsprechen, werden ausgewählt:

    lda_components = eigenvectors[:, :2]
  • Transformation des Datensatzes:
  • Der Datensatz wird auf die neue zweidimensionale Basis transformiert:

    X_lda = X.dot(lda_components)
  • Visualisierung der transformierten Daten:
  • Zur Visualisierung der zweidimensionalen Datenpunkte verwenden wir eine Plotting-Bibliothek wie matplotlib:

    import matplotlib.pyplot as pltfor c in classes:    plt.scatter(X_lda[y == c, 0], X_lda[y == c, 1], label=f'Class {c}')plt.xlabel('Erste Diskriminante')plt.ylabel('Zweite Diskriminante')plt.legend()plt.title('LDA der biologischen Proben')plt.show()
  • Interpretation der resultierenden zweidimensionalen Datenpunkte:
  • Die LDA maximiert die Trennbarkeit der Klassen. Die resultierenden zweidimensionalen Datenpunkte zeigen die Proben so an, dass die Klassen möglichst gut getrennt sind. Dies bedeutet, dass die Klassen entlang der neuen Achsen besser unterscheidbar sind, was die Klassifikation und Interpretation der Daten erleichtert.

    c)

    • (c) Vergleich von PCA und LDA:
      • Vergleiche die Ergebnisse der beiden Methoden (PCA und LDA) in Bezug auf die Visualisierung der Proben. Welche Methode zeigt eine bessere Trennung der Klassen und warum?
      • Diskutiere die Vor- und Nachteile von PCA und LDA für diese spezielle Anwendung.

    Lösung:

    Nachdem Du sowohl PCA als auch LDA auf Deinen hochdimensionalen Datensatz angewendet hast, ist es wichtig, die Ergebnisse beider Methoden zu vergleichen und ihre Vor- und Nachteile zu diskutieren.

    • (c) Vergleich von PCA und LDA:
      • Vergleiche die Ergebnisse der beiden Methoden (PCA und LDA) in Bezug auf die Visualisierung der Proben. Welche Methode zeigt eine bessere Trennung der Klassen und warum?
      • Diskutiere die Vor- und Nachteile von PCA und LDA für diese spezielle Anwendung.
      • Vergleich der Ergebnisse

        • Visualisierung der Proben:
        • Um die Visualisierungen zu vergleichen, betrachte die Plots, die Du mit PCA und LDA erstellt hast. Die PCA zielt darauf ab, die Richtung der größten Varianz in den Daten zu finden, ohne die Klassenetiketten zu berücksichtigen. Im Gegensatz dazu maximiert die LDA die Trennbarkeit der Klassen. Daher solltest Du in der Lage sein, bei der LDA eine klarere Trennung der Klassen in den zweidimensionalen Projektionen zu sehen.

        • Bessere Trennung der Klassen:
        • In der Regel zeigt die LDA eine bessere Trennung der Klassen als die PCA, da die LDA die Klassenetiketten in ihre Berechnungen einbezieht, um die Diskriminantenachsen zu finden, welche die Klassen am besten trennen. Dies wird besonders relevant, wenn der Fokus auf der Klassifikation der Daten liegt.

        Vor- und Nachteile von PCA und LDA

        • PCA:
          • Vorteile:
            • PCA ist eine unüberwachte Methode, die keine Klassenetiketten benötigt. Dies macht sie vielseitig und einfach anzuwenden.
            • Sie identifiziert die Richtungen der größten Varianz im Datensatz und ist nützlich zur Erkennung von Strukturen und zur Reduzierung der Dimensionalität.
          • Nachteile:
            • PCA berücksichtigt die Klasseninformation nicht, was zu einer weniger optimalen Trennung der Klassen führen kann, wenn die Klasseninformation wichtig ist.
          • Einsatzgebiet:
            • Geeignet für Explorationsanalysen und Datenvorverarbeitung, insbesondere wenn Klassenetiketten nicht bekannt sind.
        • LDA:
          • Vorteile:
            • LDA nutzt die Klassenetiketten und maximiert die Trennbarkeit der Klassen, was sie besonders nützlich für Klassifikationsprobleme macht.
            • Sie reduziert die Dimensionalität, während sie die Unterschiede zwischen den Klassen beibehält.
          • Nachteile:
            • LDA setzt voraus, dass Klassenetiketten bekannt sind und dass sie einigermaßen ausgewogen sind.
            • Sie kann problematisch sein, wenn Klassen nicht linear trennbar sind oder wenn die Anzahl der Merkmale die Anzahl der Proben übersteigt (Small Sample Size Problem).
          • Einsatzgebiet:
            • Geeignet für Klassifikationsprobleme, bei denen die Klassenetiketten bekannt und ausgeglichen sind.

        Fazit

        Letztendlich hängt die Wahl zwischen PCA und LDA von Deiner spezifischen Anwendung und den Eigenschaften Deines Datensatzes ab. Für Klassifikationsprobleme, bei denen die Trennung der Klassen entscheidend ist, bietet LDA oft eine bessere Leistung. PCA hingegen kann nützlich sein, wenn keine Klassenetiketten verfügbar sind oder wenn Du eine allgemeine Struktur der Daten erkunden möchtest.

      Aufgabe 3)

      Du arbeitest an einem Textklassifikationsprojekt, bei dem Du den Naive Bayes Klassifikator verwenden möchtest. Dein Datensatz besteht aus E-Mails, die entweder als 'Spam' oder 'Nicht-Spam' klassifiziert werden sollen. Jede E-Mail wird durch die Häufigkeit bestimmter Schlüsselwörter repräsentiert.

      a)

      Erläutere, wie der Naive Bayes Klassifikator angewendet wird, um zu bestimmen, ob eine neue E-Mail Spam ist oder nicht. Gehe dabei auf die Schritte der Berechnung von P(Spam|X) und P(Nicht-Spam|X) ein.

      Lösung:

      Um den Naive Bayes Klassifikator zu verwenden und zu bestimmen, ob eine neue E-Mail Spam ist oder nicht, gehst Du folgendermaßen vor:

      • Schritt 1: DatenvorbereitungDer erste Schritt besteht darin, die Häufigkeiten der Schlüsselwörter in den E-Mails zu zählen. Dies bedeutet, dass Du für jede E-Mail zählst, wie oft jedes Schlüsselwort vorkommt. Diese Daten werden dann zum Trainieren des Klassifikationsmodells verwendet.
      • Schritt 2: Bedingte Wahrscheinlichkeiten berechnenBerechne die bedingten Wahrscheinlichkeiten, dass bestimmte Schlüsselwörter in Spam- und Nicht-Spam-E-Mails auftreten. Dies bedeutet, dass Du berechnest, wie wahrscheinlich es ist, dass ein bestimmtes Schlüsselwort in einer E-Mail vorkommt, gegeben dass die E-Mail als Spam oder Nicht-Spam klassifiziert wurde. Diese Wahrscheinlichkeiten werden wie folgt berechnet:
        • Für jedes Schlüsselwort \(w\):
          • \(P(w|Spam) = \frac{{Anzahl \, der \, Spam-E-Mails \, mit \, w}}{{Gesamtanzahl \, der \, Spam-E-Mails}}\)
          • \(P(w|Nicht-Spam) = \frac{{Anzahl \, der \, Nicht-Spam-E-Mails \, mit \, w}}{{Gesamtanzahl \, der \, Nicht-Spam-E-Mails}}\)
      • Schritt 3: Wahrscheinlichkeiten für Spam und Nicht-Spam berechnenDu berechnest die a priori Wahrscheinlichkeiten für Spam und Nicht-Spam, basierend auf der Anzahl der Spam- und Nicht-Spam-E-Mails im Trainingsdatensatz:
        • \(P(Spam) = \frac{{Gesamtanzahl \, der \, Spam-E-Mails}}{{Gesamtanzahl \, der \, E-Mails}}\)
        • \(P(Nicht-Spam) = \frac{{Gesamtanzahl \, der \, Nicht-Spam-E-Mails}}{{Gesamtanzahl \, der \, E-Mails}}\)
      • Schritt 4: Berechnung von \(P(Spam|X)\) und \(P(Nicht-Spam|X)\)Nutze die bayes’sche Formel, um die Wahrscheinlichkeiten zu berechnen, dass eine neue E-Mail mit bestimmten Schlüsselwörtern Spam oder Nicht-Spam ist. Angenommen, die E-Mail hat die Schlüsselwörter \(X = (w_1, w_2, ..., w_n)\), dann berechnest du:
        • \(P(Spam|X) = P(Spam) \times P(w_1|Spam) \times P(w_2|Spam) \times ... \times P(w_n|Spam)\)
        • \(P(Nicht-Spam|X) = P(Nicht-Spam) \times P(w_1|Nicht-Spam) \times P(w_2|Nicht-Spam) \times ... \times P(w_n|Nicht-Spam)\)
      • Schritt 5: Vergleich und EntscheidungVergleiche die berechneten Wahrscheinlichkeiten \(P(Spam|X)\) und \(P(Nicht-Spam|X)\). Wenn \(P(Spam|X)\) größer ist als \(P(Nicht-Spam|X)\), wird die E-Mail als Spam klassifiziert. Andernfalls wird sie als Nicht-Spam klassifiziert.

      Dieser Prozess, der auf bedingten Wahrscheinlichkeiten und der Anwendung des Satzes von Bayes basiert, ermöglicht es dem Naive Bayes Klassifikator, Entscheidungen anhand der Merkmale (Schlüsselwörter) in den E-Mails zu treffen.

      b)

      Angenommen, Du hast die Wahrscheinlichkeiten folgendermassen berechnet: P(X|Spam) = 0,0002, P(X|Nicht-Spam) = 0,001, P(Spam) = 0,4, und P(Nicht-Spam) = 0,6. Verwende den Satz von Bayes, um P(Spam|X) und P(Nicht-Spam|X) zu berechnen. Zeige alle Schritte und erkläre Deine Berechnungen.

      Lösung:

      Um die Wahrscheinlichkeiten \(P(Spam|X)\) und \(P(Nicht-Spam|X)\) zu berechnen, kannst Du den Satz von Bayes verwenden. Der Satz von Bayes lautet:

      • \(P(Spam|X) = \frac{{P(X|Spam) \times P(Spam)}}{{P(X)}}\)
      • \(P(Nicht-Spam|X) = \frac{{P(X|Nicht-Spam) \times P(Nicht-Spam)}}{{P(X)}}\)

      Der gemeinsame Nenner \(P(X)\) bleibt gleich in beiden Gleichungen, daher können wir ihn vernachlässigen, wenn wir nur pflichtig sind, die Wahrscheinlichkeiten zu vergleichen.

      Beginnen wir mit der Berechnung von \(P(Spam|X)\). Wir haben die folgenden Werte gegeben:

      • \(P(X|Spam) = 0,0002\)
      • \(P(Spam) = 0,4\)

      Dann ist:

      • \(P(Spam|X) = \frac{{P(X|Spam) \times P(Spam)}}{{P(X)}} = \frac{{0,0002 \times 0,4}}{{P(X)}} = \frac{{0,00008}}{{P(X)}}\)

      Als nächstes berechnen wir \(P(Nicht-Spam|X)\). Wir haben die folgenden Werte:

      • \(P(X|Nicht-Spam) = 0,001\)
      • \(P(Nicht-Spam) = 0,6\)

      Dann ist:

      • \(P(Nicht-Spam|X) = \frac{{P(X|Nicht-Spam) \times P(Nicht-Spam)}}{{P(X)}} = \frac{{0,001 \times 0,6}}{{P(X)}} = \frac{{0,0006}}{{P(X)}}\)

      Nun haben wir zwei Werte:

      • \(P(Spam|X) = \frac{{0,00008}}{{P(X)}}\)
      • \(P(Nicht-Spam|X) = \frac{{0,0006}}{{P(X)}}\)

      Um die beiden Wahrscheinlichkeiten zu vergleichen, brauchen wir nur die Zähler zu betrachten, weil der Nenner \(P(X)\) gleich ist:

      • \(0,00008\) für Spam
      • \(0,0006\) für Nicht-Spam

      Da \(0,0006\) größer als \(0,00008\) ist, haben wir:

      • \(P(Nicht-Spam|X) > P(Spam|X)\)

      Folglich wird die E-Mail als Nicht-Spam klassifiziert.

      c)

      Diskutiere die Unabhängigkeitsannahme des Naive Bayes Klassifikators. Erkläre, warum diese Annahme in der Praxis oft nicht erfüllt ist, und beschreibe mögliche Folgen für die Klassifikationsgenauigkeit. Gehe auf mögliche Methoden ein, wie dieses Problem gemildert werden kann.

      Lösung:

      Die Unabhängigkeitsannahme des Naive Bayes Klassifikators besagt, dass die Merkmale (in diesem Fall die Schlüsselwörter) unabhängig voneinander sind, gegeben die Klasse (Spam oder Nicht-Spam). Diese Annahme macht die Berechnungen einfach und effizient, da die gemeinsame Wahrscheinlichkeit als Produkt der einzelnen bedingten Wahrscheinlichkeiten berechnet werden kann.

      Warum diese Annahme oft nicht erfüllt ist:

      • Abhängigkeiten zwischen Wörtern: In natürlichen Texten gibt es oft syntaktische und semantische Abhängigkeiten zwischen Wörtern. Beispielsweise treten die Wörter „kostenlos“ und „Gewinn“ häufig zusammen in Spam-E-Mails auf. Diese Abhängigkeiten werden vom Naive Bayes Klassifikator ignoriert.
      • Kontextuelle Informationen: Wörter werden durch ihren Kontext beeinflusst. Ein Wort kann in verschiedenen Kontexten unterschiedliche Bedeutungen haben, was die Unabhängigkeitsannahme verletzt.

      Mögliche Folgen für die Klassifikationsgenauigkeit:

      • Falsche Klassifikationen: Da die Abhängigkeiten zwischen Merkmalen ignoriert werden, kann der Klassifikator falsche Annahmen über die Verteilung der Merkmale treffen. Dies kann zu falschen Klassifikationen führen.
      • Reduzierte Genauigkeit: Die Vernachlässigung der Abhängigkeiten kann die Klassifikationsgenauigkeit reduzieren, insbesondere wenn stark abhängige Merkmale vorhanden sind.

      Methoden zur Milderung des Problems:

      • Feature Engineering: Eine Möglichkeit, das Problem zu mildern, besteht darin, Merkmale sorgfältig auszuwählen und zu konstruieren. Kombinierte Merkmale, die Abhängigkeiten einfangen, können eingeführt werden. Zum Beispiel können Wortpaare (Bigramme) als zusätzliche Merkmale verwendet werden.
      • Regularisierung: Durch Hinzufügen von Regularisierungsbegriffen kann das Modell stabiler und weniger anfällig für Überanpassung werden, was bei abhängigen Merkmalen helfen kann.
      • Erweiterte Modelle: Statt des einfachen Naive Bayes-Modells können erweiterte Modelle wie der Tree Augmented Naive Bayes (TAN) verwendet werden. Diese Modelle erlauben eine gewisse Abhängigkeit zwischen Merkmalen.
      • Andere Klassifikatoren: In einigen Fällen kann der Einsatz von anderen Klassifikatoren, wie z.B. Support Vector Machines (SVM) oder neuronalen Netzen, die Abhängigkeiten zwischen Merkmalen besser berücksichtigen, eine bessere Wahl sein.

      Zusammenfassend lässt sich sagen, dass obwohl die Unabhängigkeitsannahme des Naive Bayes Klassifikators in der Praxis oft nicht erfüllt ist, gibt es mehrere Wege, dieses Problem zu mildern und die Klassifikationsgenauigkeit zu verbessern.

    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