Lerninhalte finden
Features
Entdecke
© StudySmarter 2024, all rights reserved.
Angenommen, Du hast einen Datensatz mit n Beobachtungen und p Ursprungsmerkmalen. Du sollst Principal Component Analysis (PCA) anwenden, um die Dimensionen zu reduzieren. Im Rahmen der PCA ermöglichst Du die Projektion der Daten auf einen Raum mit k Dimensionen, wobei k < p ist. Dabei soll sichergestellt werden, dass die projizierten Daten die größte Varianz aufweisen.
Gegeben sei der Datensatz:
'X = [[2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0], [2.3, 2.7], [2, 1.6], [1, 1.1], [1.5, 1.6], [1.1, 0.9]]'
a) Führe die PCA auf den gegebenen Datensatz durch. Gehe dabei die folgenden Schritte durch:
Zeige alle Berechnungen und Zwischenergebnisse.
Lösung:
Um die PCA auf den gegebenen Datensatz anzuwenden, werde ich die angeforderten Schritte Schritt für Schritt durchgehen.
b) Interpretiere die Ergebnisse der PCA. Beantworte dabei folgende Fragen:
Lösung:
Die Hauptkomponenten (Principal Components) in diesem Datensatz repräsentieren die neuen, orthogonalen Achsen, auf die die Daten projiziert werden. Diese Achsen sind so gewählt, dass die Varianz der auf sie projizierten Daten maximiert wird. Die erste Hauptkomponente trägt die meiste Varianz der Daten, die zweite Hauptkomponente die zweitmeiste, und so weiter. In einem zweidimensionalen Raum, wie in unserem Datensatz, bedeutet das, dass die erste Hauptkomponente die Richtung ist, in der die Daten die größte Varianz aufweisen.
Um diese Frage zu beantworten, muss man die Eigenwerte der Kovarianzmatrix betrachten. Die Eigenwerte repräsentieren die Varianz, die durch die jeweiligen Hauptkomponenten erklärt wird.
# Berechnung der Varianz-Anteileimport numpy as npX = np.array([[2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0], [2.3, 2.7], [2, 1.6], [1, 1.1], [1.5, 1.6], [1.1, 0.9]])# Zentrieren der DatenX_mean = np.mean(X, axis=0)X_centered = X - X_mean# Berechnung der Kovarianzmatrixcov_matrix = np.cov(X_centered, rowvar=False)# Berechnen der Eigenwerte und Eigenvektoreneig_vals, eig_vecs = np.linalg.eig(cov_matrix)# Anteil der Gesamtvarianzvar_explained = [(i / sum(eig_vals)) * 100 for i in eig_vals]print(f'Varianz-Anteil der ersten Hauptkomponente: {var_explained[0]:.2f}%')
Die Antwort variiert von Datensatz zu Datensatz. Dies sind die Prozentsatzanteile der Varianz, die jede Hauptkomponente erklärt. Die Summe der Varianz-Anteile der ersten k Hauptkomponenten gibt den Gesamtanteil der durch diese k Komponenten erklärten Varianz der Originaldaten an.
Das Zentrieren der Daten, also das Abziehen des Mittelwerts jeder Variablen, ist ein wichtiger Schritt in der PCA. Dies stellt sicher, dass die Daten einen Mittelwert von null haben. Der Grund dafür ist, dass die Kovarianz zwischen den Merkmalen ohne Zentrierung nicht korrekt dargestellt wird und die Hauptkomponenten nicht die richtige Richtung anzeigen würden. Zentrierte Daten garantieren, dass die Hauptkomponenten auf die wahre Struktur der Varianz und Kovarianz der Daten basieren und nicht durch unterschiedliche Mittelwerte der Ausgangsmerkmale verzerrt werden.
Support Vector Machines (SVM) und ihre AnwendungSVM ist ein überwacht lernender Algorithmus, der verwendet wird, um Daten in Klassen zu unterteilen, indem er die optimale Trennlinie (Hyperplane) findet.
(a) Erläutere den Kernel-Trick und warum er für SVMs nützlich ist. Gehe dabei auf den Unterschied zwischen einem linearen und einem nichtlinearen Kernel ein.
Lösung:
(a) Erläutere den Kernel-Trick und warum er für SVMs nützlich ist. Gehe dabei auf den Unterschied zwischen einem linearen und einem nichtlinearen Kernel ein.Der Kernel-Trick ist eine Technik, die es dem Support Vector Machine (SVM)-Algorithmus ermöglicht, nichtlineare Trennungen in den Daten zu erzeugen, indem die Daten in einen höherdimensionalen Raum projiziert werden. Das bedeutet, dass die Daten in einem neuen Raum dargestellt werden, in dem eine lineare Trennung möglich ist, auch wenn dies im ursprünglichen Raum nicht möglich war.Ein wesentlicher Vorteil des Kernel-Tricks besteht darin, dass diese Transformationen implizit durchgeführt werden, ohne dass wir die expliziten Koordinaten der höherdimensionalen Räume berechnen müssen. Stattdessen wird eine Kernel-Funktion verwendet, die die Berechnungen der Skalarprodukte in diesen höheren Dimensionen übernimmt. Dadurch werden komplexe Berechnungen und die Notwendigkeit der expliziten Darstellung in einem höherdimensionalen Raum vermieden.Hier sind die Schritte, wie der Kernel-Trick funktioniert:
K(x, x') = x \cdot x'
K(x, x') = (x \cdot x' + 1)^d
K(x, x') = \exp \left( -\frac{||x - x'||^2}{2\tau^2} \right)
(b) Zeige die Schritte zur Lösung des Optimierungsproblems einer Soft-Margin SVM mathematisch auf. Erläutere die Bedeutung der Variablen \( \xi_i \) und des Parameters \( C \) in diesem Kontext.
Lösung:
(b) Zeige die Schritte zur Lösung des Optimierungsproblems einer Soft-Margin SVM mathematisch auf. Erläutere die Bedeutung der Variablen \( \xi_i \) und des Parameters \( C \) in diesem Kontext.Die Soft-Margin SVM ermöglicht es, einige Fehlklassifizierungen zu tolerieren, um eine bessere Generalisierung auf neuen, nicht gesehenen Daten zu ermöglichen. Die Einführung slacker Variablen \( \xi_i \) ermöglicht diese Flexibilität. Der Parameter \( C \) ist ein Regularisierungsparameter, der den Kompromiss zwischen einer großen Margin und einer geringen Fehlklassifizierungsrate steuert.Hier sind die Schritte zur Lösung des Optimierungsproblems einer Soft-Margin SVM mathematisch dargestellt:1. Formuliere das Primale Optimierungsproblem:Das primale Optimierungsproblem einer Soft-Margin SVM kann wie folgt formuliert werden:
(c) Wende eine RBF-Kernel SVM an, um einen gegebenen Datensatz zu klassifizieren. Beschreibe die verschiedenen Schritte, die dabei durchlaufen werden, und begründe die Wahl der Parameter.
Lösung:
(c) Wende eine RBF-Kernel SVM an, um einen gegebenen Datensatz zu klassifizieren. Beschreibe die verschiedenen Schritte, die dabei durchlaufen werden, und begründe die Wahl der Parameter.Um eine RBF-Kernel SVM (Radial Basis Function-Kernel) zur Klassifikation eines gegebenen Datensatzes anzuwenden, durchlaufen wir mehrere Schritte. Hier ist eine detaillierte Beschreibung dieser Schritte und die Begründung der Wahl der Parameter:
RBF-Kernel-Funktion: \(K(x, x') = \exp \left( -\gamma ||x - x'||^2 \right)\)
from sklearn.svm import SVCfrom sklearn.preprocessing import StandardScalerfrom sklearn.pipeline import make_pipeline# Beispiel-DatensatzX_train = ... # Trainingsdateny_train = ... # Zielvariable# Erstelle und trainiere ein SVM-Modell mit RBF-Kernelmodel = make_pipeline(StandardScaler(), SVC(kernel='rbf', C=1.0, gamma='scale'))model.fit(X_train, y_train)
from sklearn.model_selection import GridSearchCV# Definiere den Parameterbereichparam_grid = {'svc__C': [0.1, 1, 10, 100], 'svc__gamma': ['scale', 0.1, 1, 10, 100]}# Grid-Suche mit Cross-Validationgrid_search = GridSearchCV(model, param_grid, cv=5)grid_search.fit(X_train, y_train)# Beste Parameterbest_params = grid_search.best_params_print(best_params)
from sklearn.metrics import classification_report, confusion_matrixX_test = ... # Testdateny_test = ... # Zielvariable# Vorhersageny_pred = model.predict(X_test)# Auswertenprint(classification_report(y_test, y_pred))print(confusion_matrix(y_test, y_pred))
Du entwickelst ein System zur Mustererkennung, das auf dem Naive Bayes Klassifikator basiert. Das System soll verschiedene Dokumente (Texte) klassifizieren und verwendet dafür diskrete Merkmale, die angeben, ob ausgewählte Schlüsselwörter in den Dokumenten vorkommen oder nicht. Um die Wahrscheinlichkeiten zu schätzen, nutzt Dein System das Multinomial Naive Bayes Modell. Die Dokumentklassen sind 'Sport', 'Politik' und 'Technologie'. Du hast eine Trainingsdatensatz mit 100 Dokumenten, die gleichmäßig auf die drei Klassen verteilt sind. Die Merkmale Deiner Dokumente bestehen aus 10 Schlüsselwörtern. Gegeben sei die Wortanzahl der ausgewählten Schlüsselwörter in den Klassen 'Sport', 'Politik' und 'Technologie' (zusammengefasst in der folgenden Tabelle):
Berechne die bedingte Wahrscheinlichkeit eines Dokuments, das die Schlüsselwörter k1, k2 und k3 enthält, gegeben die Klasse 'Sport'. Schätze zunächst die Wahrscheinlichkeiten für jedes der drei Schlüsselwörter in der Klasse 'Sport' unter der Annahme des Multinomial Naive Bayes Modells. Berechne dann die Gesamtwahrscheinlichkeit für das Dokument unter der Klasse 'Sport'. Hinweis: Verwende \alpha = 1 für die additive Glättung (Laplace Glättung), falls notwendig.
Lösung:
Um die bedingte Wahrscheinlichkeit eines Dokuments zu berechnen, das die Schlüsselwörter k1, k2 und k3 enthält, gegeben die Klasse 'Sport', müssen wir die Wahrscheinlichkeiten dieser Schlüsselwörter in der Klasse 'Sport' berechnen. Anschließend nutzen wir diese Wahrscheinlichkeiten, um die Gesamtwahrscheinlichkeit des Dokuments unter Verwendung des Multinomial Naive Bayes Modells zu berechnen.
Wir verwenden \(\alpha = 1\) für die additive Glättung.
Die Wortanzahl der Schlüsselwörter unter 'Sport' ist wie folgt:
Gesamtanzahl aller Schlüsselwörter in der Klasse 'Sport' (ohne Glättung): \(\sum_{i=1}^{10} \text{count}(k_i) = 20 + 10 + 15 + ... + 5 = 100\)
Mit additive Glättung beträgt die angepasste Gesamtanzahl aller Schlüsselwörter in der Klasse 'Sport':
Gesamtanzahl mit Glättung: \(100 + 10 * \alpha = 100 + 10 = 110\)
Berechnen der Einzelwahrscheinlichkeiten:
\(P(k1|Sport) = \frac{\text{count}(k1) + \alpha}{N_{\text{Sport}} + V} = \frac{20 + 1}{100 + 10} = \frac{21}{110} = 0.19\)
\(P(k2|Sport) = \frac{\text{count}(k2) + \alpha}{N_{\text{Sport}} + V} = \frac{10 + 1}{100 + 10} = \frac{11}{110} = 0.10\)
\(P(k3|Sport) = \frac{\text{count}(k3) + \alpha}{N_{\text{Sport}} + V} = \frac{15 + 1}{100 + 10} = \frac{16}{110} = 0.145\)
Die Gesamtwahrscheinlichkeit ist das Produkt der Einzelwahrscheinlichkeiten:
\(P(\text{Dokument}|\text{Sport}) = P(k1|Sport) \cdot P(k2|Sport) \cdot P(k3|Sport) = 0.19 \cdot 0.10 \cdot 0.145\)
Bei der Multiplikation ergibt sich:
\(P(\text{Dokument}|\text{Sport}) = 0.002755\)
Daher beträgt die bedingte Wahrscheinlichkeit für das Dokument, das die Schlüsselwörter k1, k2 und k3 enthält, gegeben die Klasse 'Sport',:
\(\boxed{0.002755}\)
Diskutiere, wie das System verbessert werden könnte, indem Du Abhängigkeiten zwischen den Schlüsselwörtern berücksichtigst. Erläutere kurz, wie ein Bayessches Netzwerk in diesem Kontext angewendet werden könnte und wie es die Limitierungen des Naive Bayes Klassifikators überwinden könnte.
Lösung:
Das Basismodell des Naive Bayes Klassifikators geht davon aus, dass die Merkmale (in diesem Fall die Schlüsselwörter) bedingungslos unabhängig voneinander sind, wenn die Klasse gegeben ist. Diese Annahme der bedingten Unabhängigkeit ist oft nicht realistisch, da in Texten häufig Abhängigkeiten zwischen den Schlüsselwörtern bestehen. Beispielsweise treten die Wörter „Ball“ und „Tor“ häufig gemeinsam in Sportartikeln auf.
Um die Abhängigkeiten zwischen Schlüsselwörtern abzubilden und zu nutzen, könnte ein Bayessches Netzwerk (Bayesian Network) verwendet werden.
Ein Bayessches Netzwerk ist ein probabilistisches grafisches Modell, das die Abhängigkeiten zwischen verschiedenen Variablen (Merkmalen) darstellt. Es besteht aus Knoten, die die Variablen repräsentieren, und Kanten, die die Abhängigkeiten (bedingte Wahrscheinlichkeiten) zwischen diesen Variablen darstellen. Durch diese Struktur kann das Netzwerk die Verhältnisse und Wechselwirkungen zwischen den Schlüsselwörtern explizit modellieren.
Statt anzunehmen, dass die Wahrscheinlichkeit eines Schlüsselworts allein von der Klasse abhängt, könnte ein Bayessches Netzwerk zum Beispiel die direkte Abhängigkeit zwischen bestimmten Schlüsselwörtern und deren Bedingung aufeinander ausdrücken. Das Netzwerk könnte so konstruiert werden, dass es die wahrscheinliche Korrelation reflektiert, z.B.:
Die bedingten Wahrscheinlichkeiten könnten auf Basis der Trainingsdaten ermittelt werden. Ein Bayessches Netzwerk ermöglicht es, komplexere Wahrscheinlichkeitsverteilungen zu modellieren und bietet dadurch eine präzisere und genauere Klassifikation.
Ein möglicher Ansatz wäre es, die Trainingsdaten durch ein Verfahren wie das Expectation-Maximization (EM) Verfahren zu verwenden, um die Struktur des Netzes und die entsprechenden Wahrscheinlichkeitsverteilungen zu lernen.
Das Bayessche Netzwerk könnte helfen, die folgenden Limitierungen des Naive Bayes Klassifikators zu überwinden:
Zusammenfassend lässt sich sagen, dass durch die Einführung eines Bayesschen Netzwerks zur Modellierung der Abhängigkeiten zwischen den Schlüsselwörtern das System präziser und leistungsfähiger werden kann.
Gegeben ist ein Hidden-Markov-Modell (HMM) mit folgenden Bestandteilen:
Berechne mithilfe des Vorwärts-Algorithmus die Wahrscheinlichkeit der Beobachtungssequenz O = {o1, o2, o1} bis einschließlich des letzten Schrittes. Gegeben sind:
Lösung:
Folgendes Hidden-Markov-Modell ist gegeben:
Die Beobachtungssequenz ist O = {o1, o2, o1}. Verwenden wir den Vorwärts-Algorithmus, um die Wahrscheinlichkeit der Sequenz zu berechnen.
Für den ersten Beobachtungszeitpunkt t = 1 und jeder Zustand j berechnen wir:
forward(1, s1) = P(o1|s1) * P(s1)\td.h. forward(1, s1) = 0.7 * 0.6 = 0.42
forward(1, s2) = P(o1|s2) * P(s2)\td.h. forward(1, s2) = 0.4 * 0.3 = 0.12
forward(1, s3) = P(o1|s3) * P(s3)\td.h. forward(1, s3) = 0.5 * 0.1 = 0.05
Für jeden nachfolgenden Schritt t = 2, 3 und jeden Zustand j, verwenden wir:
Beobachtung o2:
Beobachtung o1:
Zum Abschluss aggregieren wir die Wahrscheinlichkeiten für alle Zustände für den letzten Zeitschritt t = 3:
p(O|HMM) = forward(3, s1) + forward(3, s2) + forward(3, s3)
d.h. p(O|HMM) = 0.073857 + 0.035652 + 0.03233 = 0.141839
Die Wahrscheinlichkeit der Beobachtungssequenz O = {o1, o2, o1} beträgt also 0.141839.
Finde den wahrscheinlichsten Zustandsweg dieser Beobachtungssequenz mithilfe des Viterbi-Algorithmus. Nutze hierzu die Formel: \( \text{viterbi}(t, j) = \text{obs}_j(t) \times \max_{i=1}^{N} \text{transition}_{ij} \times \text{viterbi}(t-1, i) \). Stelle den Viterbi-Trellis und die Rückverfolgung dar.
Lösung:
Gegeben ist das Hidden-Markov-Modell (HMM) mit folgenden Parametern:
Die Beobachtungssequenz ist O = {o1, o2, o1}. Verwenden wir den Viterbi-Algorithmus, um den wahrscheinlichsten Zustandsweg zu berechnen.
Für den ersten Beobachtungszeitpunkt t = 1 und jeden Zustand j berechnen wir:
viterbi(1, s1) = P(o1|s1) * P(s1)d.h. viterbi(1, s1) = 0.7 * 0.6 = 0.42
viterbi(1, s2) = P(o1|s2) * P(s2)d.h. viterbi(1, s2) = 0.4 * 0.3 = 0.12
viterbi(1, s3) = P(o1|s3) * P(s3)d.h. viterbi(1, s3) = 0.5 * 0.1 = 0.05
Für jeden nachfolgenden Schritt t = 2, 3 und jeden Zustand j, verwenden wir:
Beobachtung o2:
Beobachtung o1:
Um den wahrscheinlichsten Zustandsweg zu finden, müssen wir die Rückverfolgungsinformation verwenden, die wir während der Rekursionsschritte gespeichert haben. Wir beginnen bei t = 3 und gehen rückwärts:
Für t = 3, der wahrscheinlichste Zustand ist s1 (da viterbi(3, s1) = 0.02205 der höchste Wert ist).
Für t = 2, der Zustand vor s1 war auch s1.
Für t = 1, der Zustand vor s1 war auch s1.
Der wahrscheinlichste Zustandsweg für die Beobachtungssequenz O = {o1, o2, o1} lautet daher: s1 → s1 → s1.
Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.
Kostenloses Konto erstellenDu hast bereits ein Konto? Anmelden