From 5d8ae718c6c96ecdc15a711070140857cf66020f Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 8 Jun 2025 13:29:16 +0000 Subject: [PATCH] Translated ['src/AI/AI-Unsupervised-Learning-Algorithms.md'] to de --- src/AI/AI-Unsupervised-Learning-Algorithms.md | 49 +++++++++---------- src/SUMMARY.md | 2 +- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/AI/AI-Unsupervised-Learning-Algorithms.md b/src/AI/AI-Unsupervised-Learning-Algorithms.md index 402db5453..19d783597 100644 --- a/src/AI/AI-Unsupervised-Learning-Algorithms.md +++ b/src/AI/AI-Unsupervised-Learning-Algorithms.md @@ -19,14 +19,14 @@ K-Means ist ein zentroidbasierter Clustering-Algorithmus, der Daten in K Cluster > *Anwendungsfälle in der Cybersicherheit:* K-Means wird zur Intrusionserkennung verwendet, indem Netzwerkereignisse geclustert werden. Zum Beispiel haben Forscher K-Means auf den KDD Cup 99 Intrusionsdatensatz angewendet und festgestellt, dass es den Datenverkehr effektiv in normale und Angriffscluster partitionierte. In der Praxis könnten Sicherheitsanalysten Protokolleinträge oder Benutzerdaten clustern, um Gruppen ähnlicher Aktivitäten zu finden; Punkte, die nicht zu einem gut geformten Cluster gehören, könnten Anomalien anzeigen (z. B. eine neue Malware-Variante, die ihr eigenes kleines Cluster bildet). K-Means kann auch bei der Klassifizierung von Malware-Familien helfen, indem Binärdateien basierend auf Verhaltensprofilen oder Merkmalsvektoren gruppiert werden. #### Auswahl von K -Die Anzahl der Cluster (K) ist ein Hyperparameter, der vor dem Ausführen des Algorithmus definiert werden muss. Techniken wie die Elbow-Methode oder der Silhouette-Score können helfen, einen geeigneten Wert für K zu bestimmen, indem die Clustering-Leistung bewertet wird: +Die Anzahl der Cluster (K) ist ein Hyperparameter, der vor dem Ausführen des Algorithmus definiert werden muss. Techniken wie die Ellenbogenmethode oder der Silhouette-Score können helfen, einen geeigneten Wert für K zu bestimmen, indem die Clustering-Leistung bewertet wird: -- **Elbow-Methode**: Zeichnen Sie die Summe der quadrierten Abstände von jedem Punkt zu seinem zugewiesenen Clusterzentroiden als Funktion von K. Suchen Sie nach einem "Ellbogen"-Punkt, an dem sich die Abnahmerate scharf ändert, was auf eine geeignete Anzahl von Clustern hinweist. -- **Silhouette-Score**: Berechnen Sie den Silhouette-Score für verschiedene Werte von K. Ein höherer Silhouette-Score weist auf besser definierte Cluster hin. +- **Ellenbogenmethode**: Zeichnen Sie die Summe der quadrierten Abstände von jedem Punkt zu seinem zugewiesenen Clusterzentroiden als Funktion von K. Suchen Sie nach einem "Ellenbogen"-Punkt, an dem sich die Abnahmerate scharf ändert, was auf eine geeignete Anzahl von Clustern hinweist. +- **Silhouette-Score**: Berechnen Sie den Silhouette-Score für verschiedene Werte von K. Ein höherer Silhouette-Score zeigt besser definierte Cluster an. #### Annahmen und Einschränkungen -K-Means geht davon aus, dass **Cluster sphärisch und gleich groß** sind, was nicht für alle Datensätze zutreffen muss. Es ist empfindlich gegenüber der anfänglichen Platzierung der Zentroiden und kann zu lokalen Minima konvergieren. Darüber hinaus ist K-Means nicht für Datensätze mit variierenden Dichten oder nicht-globulären Formen sowie für Merkmale mit unterschiedlichen Skalen geeignet. Vorverarbeitungsschritte wie Normalisierung oder Standardisierung können erforderlich sein, um sicherzustellen, dass alle Merkmale gleichmäßig zu den Distanzberechnungen beitragen. +K-Means geht davon aus, dass **Cluster sphärisch und gleich groß** sind, was nicht für alle Datensätze zutreffen muss. Es ist empfindlich gegenüber der anfänglichen Platzierung der Zentroiden und kann zu lokalen Minima konvergieren. Darüber hinaus ist K-Means nicht geeignet für Datensätze mit variierenden Dichten oder nicht-globulären Formen und Merkmalen mit unterschiedlichen Skalen. Vorverarbeitungsschritte wie Normalisierung oder Standardisierung können notwendig sein, um sicherzustellen, dass alle Merkmale gleichmäßig zu den Distanzberechnungen beitragen.
Beispiel -- Clustering von Netzwerkereignissen @@ -58,25 +58,24 @@ for idx, center in enumerate(kmeans.cluster_centers_): print(f" Cluster {idx}: {center}") ``` In diesem Beispiel sollte K-Means 4 Cluster finden. Der kleine Angriffscluster (mit ungewöhnlich hoher Dauer ~200) wird idealerweise seinen eigenen Cluster bilden, gegeben seiner Distanz zu normalen Clustern. Wir drucken die Clustergrößen und -zentren aus, um die Ergebnisse zu interpretieren. In einem realen Szenario könnte man den Cluster mit wenigen Punkten als potenzielle Anomalien kennzeichnen oder seine Mitglieder auf bösartige Aktivitäten untersuchen. -
### Hierarchisches Clustering -Hierarchisches Clustering erstellt eine Hierarchie von Clustern, entweder mit einem Bottom-Up (agglomerativen) Ansatz oder einem Top-Down (divisiven) Ansatz: +Hierarchisches Clustering baut eine Hierarchie von Clustern auf, entweder mit einem Bottom-Up (agglomerativen) Ansatz oder einem Top-Down (divisiven) Ansatz: -1. **Agglomerativ (Bottom-Up)**: Beginnen Sie mit jedem Datenpunkt als separatem Cluster und fügen Sie iterativ die nächstgelegenen Cluster zusammen, bis nur noch ein einzelner Cluster übrig bleibt oder ein Abbruchkriterium erfüllt ist. +1. **Agglomerativ (Bottom-Up)**: Beginnen Sie mit jedem Datenpunkt als separatem Cluster und fügen Sie iterativ die nächstgelegenen Cluster zusammen, bis ein einzelner Cluster übrig bleibt oder ein Abbruchkriterium erfüllt ist. 2. **Divisiv (Top-Down)**: Beginnen Sie mit allen Datenpunkten in einem einzigen Cluster und teilen Sie die Cluster iterativ, bis jeder Datenpunkt sein eigener Cluster ist oder ein Abbruchkriterium erfüllt ist. Agglomeratives Clustering erfordert eine Definition der Inter-Cluster-Distanz und ein Verknüpfungskriterium, um zu entscheiden, welche Cluster zusammengeführt werden sollen. Zu den gängigen Verknüpfungsmethoden gehören die Einzelverknüpfung (Abstand der nächstgelegenen Punkte zwischen zwei Clustern), die vollständige Verknüpfung (Abstand der entferntesten Punkte), die durchschnittliche Verknüpfung usw., und die Distanzmetrik ist oft euklidisch. Die Wahl der Verknüpfung beeinflusst die Form der produzierten Cluster. Es ist nicht notwendig, die Anzahl der Cluster K im Voraus festzulegen; Sie können das Dendrogramm auf einem gewählten Niveau "schneiden", um die gewünschte Anzahl von Clustern zu erhalten. -Hierarchisches Clustering erzeugt ein Dendrogramm, eine baumartige Struktur, die die Beziehungen zwischen Clustern auf verschiedenen Granularitätsebenen zeigt. Das Dendrogramm kann auf einem gewünschten Niveau geschnitten werden, um eine bestimmte Anzahl von Clustern zu erhalten. +Hierarchisches Clustering produziert ein Dendrogramm, eine baumartige Struktur, die die Beziehungen zwischen Clustern auf verschiedenen Granularitätsebenen zeigt. Das Dendrogramm kann auf einem gewünschten Niveau geschnitten werden, um eine spezifische Anzahl von Clustern zu erhalten. > [!TIP] > *Anwendungsfälle in der Cybersicherheit:* Hierarchisches Clustering kann Ereignisse oder Entitäten in einen Baum organisieren, um Beziehungen zu erkennen. Zum Beispiel könnte im Malware-Analyse agglomeratives Clustering Proben nach Verhaltensähnlichkeit gruppieren und eine Hierarchie von Malware-Familien und -Varianten offenbaren. In der Netzwerksicherheit könnte man IP-Verkehrsflüsse clustern und das Dendrogramm verwenden, um Untergruppen des Verkehrs zu sehen (z. B. nach Protokoll, dann nach Verhalten). Da Sie K nicht im Voraus wählen müssen, ist es nützlich, wenn Sie neue Daten erkunden, für die die Anzahl der Angriffskategorien unbekannt ist. #### Annahmen und Einschränkungen -Hierarchisches Clustering geht nicht von einer bestimmten Clusterform aus und kann geschachtelte Cluster erfassen. Es ist nützlich, um Taxonomien oder Beziehungen zwischen Gruppen zu entdecken (z. B. Gruppierung von Malware nach Familienuntergruppen). Es ist deterministisch (keine Probleme mit zufälliger Initialisierung). Ein wesentlicher Vorteil ist das Dendrogramm, das Einblicke in die Clusterstruktur der Daten auf allen Ebenen bietet – Sicherheitsanalysten können einen geeigneten Schnittpunkt wählen, um bedeutungsvolle Cluster zu identifizieren. Es ist jedoch rechenintensiv (typischerweise $O(n^2)$ Zeit oder schlechter für naive Implementierungen) und nicht praktikabel für sehr große Datensätze. Es ist auch ein gieriges Verfahren – einmal durchgeführte Zusammenführungen oder Teilungen können nicht rückgängig gemacht werden, was zu suboptimalen Clustern führen kann, wenn ein Fehler früh auftritt. Ausreißer können auch einige Verknüpfungsstrategien beeinflussen (Einzelverknüpfung kann den "Verkettungseffekt" verursachen, bei dem Cluster über Ausreißer verbunden werden). +Hierarchisches Clustering nimmt keine bestimmte Clusterform an und kann geschachtelte Cluster erfassen. Es ist nützlich, um Taxonomien oder Beziehungen zwischen Gruppen zu entdecken (z. B. Malware nach Familienuntergruppen zu gruppieren). Es ist deterministisch (keine Probleme mit zufälliger Initialisierung). Ein wesentlicher Vorteil ist das Dendrogramm, das Einblicke in die Clusterstruktur der Daten auf allen Skalen bietet – Sicherheitsanalysten können einen geeigneten Schnittpunkt entscheiden, um bedeutungsvolle Cluster zu identifizieren. Es ist jedoch rechenintensiv (typischerweise $O(n^2)$ Zeit oder schlechter für naive Implementierungen) und nicht praktikabel für sehr große Datensätze. Es ist auch ein gieriges Verfahren – einmal durchgeführte Zusammenführungen oder Teilungen können nicht rückgängig gemacht werden, was zu suboptimalen Clustern führen kann, wenn ein Fehler früh auftritt. Ausreißer können auch einige Verknüpfungsstrategien beeinflussen (Einzelverknüpfung kann den "Verkettungseffekt" verursachen, bei dem Cluster über Ausreißer verbunden werden).
Beispiel -- Agglomeratives Clustering von Ereignissen @@ -150,7 +149,7 @@ num_noise = np.sum(labels == -1) print(f"DBSCAN found {num_clusters} clusters and {num_noise} noise points") print("Cluster labels for first 10 points:", labels[:10]) ``` -In diesem Abschnitt haben wir `eps` und `min_samples` angepasst, um unserem Datenskalierung (15.0 in Merkmals-Einheiten und erfordert 5 Punkte, um einen Cluster zu bilden) gerecht zu werden. DBSCAN sollte 2 Cluster (die Cluster des normalen Verkehrs) finden und die 5 injizierten Ausreißer als Rauschen kennzeichnen. Wir geben die Anzahl der Cluster im Vergleich zu Rauschpunkten aus, um dies zu überprüfen. In einer realen Umgebung könnte man über ε iterieren (unter Verwendung einer k-Abstandsgraph-Heuristik zur Auswahl von ε) und MinPts (oft auf etwa die Daten-Dimensionalität + 1 als Faustregel gesetzt), um stabile Clusterergebnisse zu finden. Die Fähigkeit, Rauschen explizit zu kennzeichnen, hilft, potenzielle Angriffsdatensätze für eine weitere Analyse zu trennen. +In diesem Snippet haben wir `eps` und `min_samples` angepasst, um unserem Datenskalierung (15.0 in Merkmals-Einheiten und erfordert 5 Punkte, um einen Cluster zu bilden) gerecht zu werden. DBSCAN sollte 2 Cluster (die Cluster des normalen Verkehrs) finden und die 5 injizierten Ausreißer als Rauschen kennzeichnen. Wir geben die Anzahl der Cluster im Vergleich zu Rauschpunkten aus, um dies zu überprüfen. In einer realen Umgebung könnte man über ε iterieren (unter Verwendung einer k-Abstandsgraph-Heuristik zur Auswahl von ε) und MinPts (oft auf etwa die Daten-Dimensionalität + 1 als Faustregel gesetzt), um stabile Clusterergebnisse zu finden. Die Fähigkeit, Rauschen explizit zu kennzeichnen, hilft, potenzielle Angriffsdatensätze für eine weitere Analyse zu trennen.
@@ -170,7 +169,7 @@ PCA wird häufig für die Datenvisualisierung, Rauschreduzierung und als Vorvera #### Eigenwerte und Eigenvektoren -Ein Eigenwert ist ein Skalar, der die Menge der Varianz angibt, die durch seinen entsprechenden Eigenvektor erfasst wird. Ein Eigenvektor stellt eine Richtung im Merkmalsraum dar, entlang derer sich die Daten am meisten ändern. +Ein Eigenwert ist ein Skalar, der die Menge der von seinem entsprechenden Eigenvektor erfassten Varianz angibt. Ein Eigenvektor stellt eine Richtung im Merkmalsraum dar, entlang derer sich die Daten am stärksten ändern. Stellen Sie sich vor, A ist eine quadratische Matrix, und v ist ein nicht-null Vektor, sodass: `A * v = λ * v` wobei: @@ -224,7 +223,7 @@ print("Original shape:", data_4d.shape, "Reduced shape:", data_2d.shape) # We can examine a few transformed points print("First 5 data points in PCA space:\n", data_2d[:5]) ``` -Hier haben wir die früheren normalen Verkehrscluster genommen und jeden Datenpunkt um zwei zusätzliche Merkmale (Pakete und Fehler) erweitert, die mit Bytes und Dauer korrelieren. PCA wird dann verwendet, um die 4 Merkmale in 2 Hauptkomponenten zu komprimieren. Wir drucken das erklärte Varianzverhältnis aus, das zeigen könnte, dass beispielsweise >95% der Varianz von 2 Komponenten erfasst werden (was wenig Informationsverlust bedeutet). Die Ausgabe zeigt auch, dass die Datenform von (1500, 4) auf (1500, 2) reduziert wird. Die ersten paar Punkte im PCA-Raum werden als Beispiel angegeben. In der Praxis könnte man data_2d plotten, um visuell zu überprüfen, ob die Cluster unterscheidbar sind. Wenn eine Anomalie vorhanden war, könnte man sie als einen Punkt sehen, der sich im PCA-Raum vom Hauptcluster entfernt. PCA hilft somit, komplexe Daten in eine handhabbare Form für die menschliche Interpretation oder als Eingabe für andere Algorithmen zu destillieren. +Hier haben wir die früheren normalen Verkehrscluster genommen und jeden Datenpunkt um zwei zusätzliche Merkmale (Pakete und Fehler) erweitert, die mit Bytes und Dauer korrelieren. PCA wird dann verwendet, um die 4 Merkmale in 2 Hauptkomponenten zu komprimieren. Wir drucken das erklärte Varianzverhältnis aus, das zeigen könnte, dass beispielsweise >95% der Varianz von 2 Komponenten erfasst werden (was bedeutet, dass nur wenig Informationen verloren gehen). Die Ausgabe zeigt auch, dass die Datenform von (1500, 4) auf (1500, 2) reduziert wird. Die ersten paar Punkte im PCA-Raum werden als Beispiel angegeben. In der Praxis könnte man data_2d plotten, um visuell zu überprüfen, ob die Cluster unterscheidbar sind. Wenn eine Anomalie vorhanden war, könnte man sie als einen Punkt sehen, der sich im PCA-Raum vom Hauptcluster entfernt. PCA hilft somit, komplexe Daten in eine handhabbare Form für die menschliche Interpretation oder als Eingabe für andere Algorithmen zu destillieren. @@ -237,7 +236,7 @@ Das Anpassen von GMM erfolgt typischerweise über den Expectation-Maximization ( - **Initialisierung**: Beginnen Sie mit anfänglichen Schätzungen für die Mittelwerte, Kovarianzen und Mischkoeffizienten (oder verwenden Sie die Ergebnisse von K-Means als Ausgangspunkt). -- **E-Schritt (Erwartung)**: Berechnen Sie die Verantwortung jedes Clusters für jeden Punkt anhand der aktuellen Parameter: im Wesentlichen `r_nk = P(z_k | x_n)`, wobei z_k die latente Variable ist, die die Clusterzugehörigkeit für den Punkt x_n angibt. Dies geschieht unter Verwendung des Satzes von Bayes, wobei wir die posteriori Wahrscheinlichkeit jedes Punktes berechnen, zu jedem Cluster basierend auf den aktuellen Parametern zu gehören. Die Verantwortlichkeiten werden wie folgt berechnet: +- **E-Schritt (Erwartung)**: Berechnen Sie die Verantwortung jedes Clusters für jeden Punkt anhand der aktuellen Parameter: im Wesentlichen `r_nk = P(z_k | x_n)`, wobei z_k die latente Variable ist, die die Clusterzugehörigkeit für den Punkt x_n angibt. Dies geschieht unter Verwendung des Satzes von Bayes, wobei wir die posteriori Wahrscheinlichkeit jedes Punktes berechnen, zu jedem Cluster basierend auf den aktuellen Parametern zu gehören. Die Verantwortlichkeiten werden berechnet als: ```math r_{nk} = \frac{\pi_k \mathcal{N}(x_n | \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_n | \mu_j, \Sigma_j)} ``` @@ -247,21 +246,21 @@ wobei: - **M-Schritt (Maximierung)**: Aktualisieren Sie die Parameter unter Verwendung der im E-Schritt berechneten Verantwortlichkeiten: - Aktualisieren Sie jeden Mittelwert μ_k als den gewichteten Durchschnitt der Punkte, wobei die Gewichte die Verantwortlichkeiten sind. -- Aktualisieren Sie jede Kovarianz Σ_k als die gewichtete Kovarianz der Punkte, die dem Cluster k zugeordnet sind. -- Aktualisieren Sie die Mischkoeffizienten π_k als den durchschnittlichen Verantwortungswert für Cluster k. +- Aktualisieren Sie jede Kovarianz Σ_k als die gewichtete Kovarianz der den Cluster k zugewiesenen Punkte. +- Aktualisieren Sie die Mischkoeffizienten π_k als den durchschnittlichen Verantwortlichkeitswert für Cluster k. - **Iterieren** Sie E- und M-Schritte, bis die Konvergenz erreicht ist (Parameter stabilisieren sich oder die Verbesserung der Wahrscheinlichkeit liegt unter einem Schwellenwert). -Das Ergebnis ist eine Menge von Gaussian-Verteilungen, die gemeinsam die gesamte Datenverteilung modellieren. Wir können das angepasste GMM verwenden, um zu clustern, indem wir jeden Punkt dem Gaussian mit der höchsten Wahrscheinlichkeit zuordnen oder die Wahrscheinlichkeiten für Unsicherheit beibehalten. Man kann auch die Wahrscheinlichkeit neuer Punkte bewerten, um zu sehen, ob sie zum Modell passen (nützlich für die Anomalieerkennung). +Das Ergebnis ist eine Menge von Gaussian-Verteilungen, die gemeinsam die gesamte Datenverteilung modellieren. Wir können das angepasste GMM verwenden, um zu clustern, indem wir jeden Punkt dem Gaussian mit der höchsten Wahrscheinlichkeit zuweisen oder die Wahrscheinlichkeiten für Unsicherheit beibehalten. Man kann auch die Wahrscheinlichkeit neuer Punkte bewerten, um zu sehen, ob sie zum Modell passen (nützlich für die Anomalieerkennung). > [!TIP] -> *Anwendungsfälle in der Cybersicherheit:* GMM kann zur Anomalieerkennung verwendet werden, indem die Verteilung normaler Daten modelliert wird: Jeder Punkt mit sehr niedriger Wahrscheinlichkeit unter der gelernten Mischung wird als Anomalie markiert. Zum Beispiel könnten Sie ein GMM auf legitimen Netzwerkverkehrsmerkmalen trainieren; eine Angriffsverbindung, die keinem gelernten Cluster ähnelt, hätte eine niedrige Wahrscheinlichkeit. GMMs werden auch verwendet, um Aktivitäten zu clustern, bei denen Cluster unterschiedliche Formen haben könnten – z.B. Benutzer nach Verhaltensprofilen zu gruppieren, wobei die Merkmale jedes Profils Gaussian-ähnlich, aber mit eigener Varianzstruktur sein könnten. Ein weiteres Szenario: Bei der Phishing-Erkennung könnten legitime E-Mail-Merkmale einen Gaussian-Cluster bilden, bekanntes Phishing einen anderen, und neue Phishing-Kampagnen könnten entweder als separater Gaussian oder als Punkte mit niedriger Wahrscheinlichkeit im Verhältnis zur bestehenden Mischung erscheinen. +> *Anwendungsfälle in der Cybersicherheit:* GMM kann zur Anomalieerkennung verwendet werden, indem die Verteilung normaler Daten modelliert wird: Jeder Punkt mit sehr niedriger Wahrscheinlichkeit unter der gelernten Mischung wird als Anomalie markiert. Zum Beispiel könnten Sie ein GMM auf legitimen Netzwerkverkehrsmerkmalen trainieren; eine Angriffsverbindung, die keinem gelernten Cluster ähnelt, hätte eine niedrige Wahrscheinlichkeit. GMMs werden auch verwendet, um Aktivitäten zu clustern, bei denen Cluster unterschiedliche Formen haben könnten – z.B. Benutzer nach Verhaltensprofilen zu gruppieren, wobei die Merkmale jedes Profils Gaussian-ähnlich, aber mit einer eigenen Varianzstruktur sein könnten. Ein weiteres Szenario: Bei der Phishing-Erkennung könnten legitime E-Mail-Merkmale einen Gaussian-Cluster bilden, bekanntes Phishing einen anderen, und neue Phishing-Kampagnen könnten entweder als separater Gaussian oder als Punkte mit niedriger Wahrscheinlichkeit im Verhältnis zur bestehenden Mischung erscheinen. #### Annahmen und Einschränkungen GMM ist eine Verallgemeinerung von K-Means, die Kovarianz einbezieht, sodass Cluster ellipsoid sein können (nicht nur sphärisch). Es verarbeitet Cluster unterschiedlicher Größen und Formen, wenn die Kovarianz vollständig ist. Weiches Clustering ist ein Vorteil, wenn die Clustergrenzen unscharf sind – z.B. in der Cybersicherheit könnte ein Ereignis Merkmale mehrerer Angriffsarten aufweisen; GMM kann diese Unsicherheit mit Wahrscheinlichkeiten widerspiegeln. GMM bietet auch eine probabilistische Dichteschätzung der Daten, die nützlich ist, um Ausreißer (Punkte mit niedriger Wahrscheinlichkeit unter allen Mischkomponenten) zu erkennen. -Auf der negativen Seite erfordert GMM die Angabe der Anzahl der Komponenten K (obwohl man Kriterien wie BIC/AIC verwenden kann, um sie auszuwählen). EM kann manchmal langsam konvergieren oder zu einem lokalen Optimum führen, daher ist die Initialisierung wichtig (oft wird EM mehrfach ausgeführt). Wenn die Daten tatsächlich keiner Mischung von Gaussians folgen, kann das Modell schlecht passen. Es besteht auch das Risiko, dass ein Gaussian schrumpft, um nur einen Ausreißer abzudecken (obwohl Regularisierung oder Mindestkovarianzgrenzen dies mildern können). +Auf der negativen Seite erfordert GMM die Angabe der Anzahl der Komponenten K (obwohl man Kriterien wie BIC/AIC verwenden kann, um sie auszuwählen). EM kann manchmal langsam konvergieren oder zu einem lokalen Optimum führen, sodass die Initialisierung wichtig ist (oft wird EM mehrfach ausgeführt). Wenn die Daten tatsächlich keiner Mischung von Gaussians folgen, kann das Modell schlecht passen. Es besteht auch das Risiko, dass ein Gaussian schrumpft, um nur einen Ausreißer abzudecken (obwohl Regularisierung oder Mindestkovarianzgrenzen dies mildern können).
@@ -285,7 +284,7 @@ log_likelihood = gmm.score_samples(sample_attack) print("Cluster membership probabilities for sample attack:", probs) print("Log-likelihood of sample attack under GMM:", log_likelihood) ``` -In diesem Code trainieren wir ein GMM mit 3 Gaussischen auf dem normalen Verkehr (vorausgesetzt, wir kennen 3 Profile von legitimem Verkehr). Die ausgegebenen Mittelwerte und Kovarianzen beschreiben diese Cluster (zum Beispiel könnte ein Mittelwert etwa [50,500] entsprechen, was dem Zentrum eines Clusters entspricht, usw.). Wir testen dann eine verdächtige Verbindung [duration=200, bytes=800]. Die predict_proba gibt die Wahrscheinlichkeit an, dass dieser Punkt zu jedem der 3 Cluster gehört – wir würden erwarten, dass diese Wahrscheinlichkeiten sehr niedrig oder stark verzerrt sind, da [200,800] weit von den normalen Clustern entfernt liegt. Der gesamte score_samples (Log-Likelihood) wird ausgegeben; ein sehr niedriger Wert zeigt an, dass der Punkt nicht gut zum Modell passt, was ihn als Anomalie kennzeichnet. In der Praxis könnte man einen Schwellenwert für die Log-Likelihood (oder für die maximale Wahrscheinlichkeit) festlegen, um zu entscheiden, ob ein Punkt ausreichend unwahrscheinlich ist, um als bösartig betrachtet zu werden. GMM bietet somit eine fundierte Methode zur Anomalieerkennung und liefert auch weiche Cluster, die Unsicherheit anerkennen. +In diesem Code trainieren wir ein GMM mit 3 Gaussischen auf dem normalen Verkehr (vorausgesetzt, wir kennen 3 Profile von legitimen Verkehr). Die gedruckten Mittelwerte und Kovarianzen beschreiben diese Cluster (zum Beispiel könnte ein Mittelwert etwa [50,500] entsprechen, was dem Zentrum eines Clusters entspricht, usw.). Wir testen dann eine verdächtige Verbindung [duration=200, bytes=800]. Die predict_proba gibt die Wahrscheinlichkeit an, dass dieser Punkt zu jedem der 3 Cluster gehört – wir würden erwarten, dass diese Wahrscheinlichkeiten sehr niedrig oder stark verzerrt sind, da [200,800] weit von den normalen Clustern entfernt liegt. Der gesamte score_samples (Log-Likelihood) wird ausgegeben; ein sehr niedriger Wert zeigt an, dass der Punkt nicht gut zum Modell passt, was ihn als Anomalie kennzeichnet. In der Praxis könnte man einen Schwellenwert für die Log-Likelihood (oder für die maximale Wahrscheinlichkeit) festlegen, um zu entscheiden, ob ein Punkt ausreichend unwahrscheinlich ist, um als bösartig betrachtet zu werden. GMM bietet somit eine fundierte Möglichkeit zur Anomalieerkennung und liefert auch weiche Cluster, die Unsicherheit anerkennen. ### Isolation Forest @@ -294,7 +293,7 @@ In diesem Code trainieren wir ein GMM mit 3 Gaussischen auf dem normalen Verkehr Die Anomalieerkennung erfolgt durch Beobachtung der Pfadlänge jedes Punktes in diesen zufälligen Bäumen – die Anzahl der Splits, die erforderlich sind, um den Punkt zu isolieren. Intuitiv neigen Anomalien (Ausreißer) dazu, schneller isoliert zu werden, da ein zufälliger Split eher einen Ausreißer (der sich in einer spärlichen Region befindet) trennt als einen normalen Punkt in einem dichten Cluster. Der Isolation Forest berechnet einen Anomaliewert aus der durchschnittlichen Pfadlänge über alle Bäume: kürzere durchschnittliche Pfadlänge → anomalere Punkte. Die Werte werden normalerweise auf [0,1] normalisiert, wobei 1 sehr wahrscheinlich eine Anomalie bedeutet. > [!TIP] -> *Anwendungsfälle in der Cybersicherheit:* Isolation Forests wurden erfolgreich in der Eindringungserkennung und Betrugserkennung eingesetzt. Zum Beispiel trainieren Sie einen Isolation Forest auf Netzwerkverkehrsprotokollen, die hauptsächlich normales Verhalten enthalten; der Wald wird kurze Pfade für seltsamen Verkehr erzeugen (wie eine IP, die einen unbekannten Port verwendet oder ein ungewöhnliches Paketgrößenmuster aufweist), und ihn zur Inspektion kennzeichnen. Da er keine gekennzeichneten Angriffe erfordert, ist er geeignet, unbekannte Angriffstypen zu erkennen. Er kann auch auf Benutzerdaten zu Anmeldungen eingesetzt werden, um Kontoübernahmen zu erkennen (die anomalen Anmeldezeiten oder -orte werden schnell isoliert). In einem Anwendungsfall könnte ein Isolation Forest ein Unternehmen schützen, indem er Systemmetriken überwacht und eine Warnung generiert, wenn eine Kombination von Metriken (CPU, Netzwerk, Dateiänderungen) sehr unterschiedlich (kurze Isolationspfade) von historischen Mustern aussieht. +> *Anwendungsfälle in der Cybersicherheit:* Isolation Forests wurden erfolgreich in der Eindringungserkennung und Betrugserkennung eingesetzt. Zum Beispiel trainieren Sie einen Isolation Forest auf Netzwerkverkehrsprotokollen, die hauptsächlich normales Verhalten enthalten; der Wald wird kurze Pfade für seltsamen Verkehr erzeugen (wie eine IP, die einen unbekannten Port oder ein ungewöhnliches Paketgrößenmuster verwendet), was ihn zur Inspektion kennzeichnet. Da er keine gekennzeichneten Angriffe erfordert, ist er geeignet, unbekannte Angriffstypen zu erkennen. Er kann auch auf Benutzerdaten zu Anmeldungen eingesetzt werden, um Kontoübernahmen zu erkennen (die anomalen Anmeldezeiten oder -orte werden schnell isoliert). In einem Anwendungsfall könnte ein Isolation Forest ein Unternehmen schützen, indem er Systemmetriken überwacht und eine Warnung generiert, wenn eine Kombination von Metriken (CPU, Netzwerk, Dateiänderungen) sehr unterschiedlich (kurze Isolationspfade) von historischen Mustern aussieht. #### Annahmen und Einschränkungen @@ -322,9 +321,9 @@ print("Isolation Forest predicted labels (first 20):", preds[:20]) print("Number of anomalies detected:", np.sum(preds == -1)) print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]) ``` -In diesem Code instanziieren wir `IsolationForest` mit 100 Bäumen und setzen `contamination=0.15` (was bedeutet, dass wir etwa 15% Anomalien erwarten; das Modell wird seine Schwelle so setzen, dass ~15% der Punkte markiert werden). Wir passen es an `X_test_if` an, das eine Mischung aus normalen und Angriffs-Punkten enthält (Hinweis: Normalerweise würden Sie es auf Trainingsdaten anpassen und dann `predict` auf neuen Daten verwenden, aber hier zur Veranschaulichung passen wir es an und sagen auf demselben Satz Vorhersagen, um die Ergebnisse direkt zu beobachten). +In diesem Code instanziieren wir `IsolationForest` mit 100 Bäumen und setzen `contamination=0.15` (was bedeutet, dass wir etwa 15% Anomalien erwarten; das Modell wird seine Schwelle so setzen, dass ~15% der Punkte markiert werden). Wir passen es an `X_test_if` an, das eine Mischung aus normalen und Angriffs-Punkten enthält (Hinweis: Normalerweise würden Sie es auf Trainingsdaten anpassen und dann `predict` auf neuen Daten verwenden, aber hier zur Veranschaulichung passen wir es an und sagen auf demselben Satz vorher, um die Ergebnisse direkt zu beobachten). -Die Ausgabe zeigt die vorhergesagten Labels für die ersten 20 Punkte (wobei -1 Anomalie anzeigt). Wir drucken auch, wie viele Anomalien insgesamt erkannt wurden, und einige Beispiel-Anomaliewerte. Wir würden erwarten, dass ungefähr 18 von 120 Punkten mit -1 gekennzeichnet werden (da die Kontamination 15% betrug). Wenn unsere 20 Angriffsmuster tatsächlich die auffälligsten sind, sollten die meisten von ihnen in diesen -1-Vorhersagen erscheinen. Der Anomaliewert (die Entscheidungsfunktion des Isolation Forest) ist höher für normale Punkte und niedriger (negativer) für Anomalien – wir drucken einige Werte aus, um die Trennung zu sehen. In der Praxis könnte man die Daten nach Wert sortieren, um die auffälligsten Ausreißer zu sehen und sie zu untersuchen. Isolation Forest bietet somit eine effiziente Möglichkeit, große unbeschriftete Sicherheitsdaten zu durchsuchen und die unregelmäßigsten Instanzen für die menschliche Analyse oder weitere automatisierte Überprüfung herauszufiltern. +Die Ausgabe zeigt die vorhergesagten Labels für die ersten 20 Punkte (wobei -1 Anomalie anzeigt). Wir drucken auch, wie viele Anomalien insgesamt erkannt wurden und einige Beispiel-Anomaliewerte. Wir würden erwarten, dass ungefähr 18 von 120 Punkten mit -1 gekennzeichnet werden (da die Kontamination 15% betrug). Wenn unsere 20 Angriffsmuster tatsächlich die auffälligsten sind, sollten die meisten von ihnen in diesen -1-Vorhersagen erscheinen. Der Anomaliewert (die Entscheidungsfunktion des Isolation Forest) ist höher für normale Punkte und niedriger (negativer) für Anomalien – wir drucken einige Werte aus, um die Trennung zu sehen. In der Praxis könnte man die Daten nach Wert sortieren, um die besten Ausreißer zu sehen und sie zu untersuchen. Isolation Forest bietet somit eine effiziente Möglichkeit, große unbeschriftete Sicherheitsdaten zu durchsuchen und die unregelmäßigsten Instanzen für die menschliche Analyse oder weitere automatisierte Überprüfung herauszufiltern. ### t-SNE (t-Distributed Stochastic Neighbor Embedding) @@ -333,17 +332,17 @@ Die Ausgabe zeigt die vorhergesagten Labels für die ersten 20 Punkte (wobei -1 Der Algorithmus hat zwei Hauptphasen: 1. **Berechnung paarweiser Affinitäten im hochdimensionalen Raum:** Für jedes Punktpaar berechnet t-SNE eine Wahrscheinlichkeit, dass man dieses Paar als Nachbarn auswählen würde (dies geschieht, indem eine Gaußsche Verteilung auf jeden Punkt zentriert und Abstände gemessen werden – der Perplexitätsparameter beeinflusst die effektive Anzahl der berücksichtigten Nachbarn). -2. **Berechnung paarweiser Affinitäten im niederdimensionalen (z.B. 2D) Raum:** Zunächst werden die Punkte zufällig in 2D platziert. t-SNE definiert eine ähnliche Wahrscheinlichkeit für Abstände in dieser Karte (unter Verwendung eines Student-t-Verteilungskernels, der schwerere Schwänze als Gaußsche Verteilungen hat, um entfernten Punkten mehr Freiheit zu geben). +2. **Berechnung paarweiser Affinitäten im niederdimensionalen (z.B. 2D) Raum:** Zunächst werden Punkte zufällig in 2D platziert. t-SNE definiert eine ähnliche Wahrscheinlichkeit für Abstände in dieser Karte (unter Verwendung eines Student-t-Verteilungskernels, der schwerere Schwänze als Gauß hat, um entfernten Punkten mehr Freiheit zu geben). 3. **Gradientenabstieg:** t-SNE bewegt dann iterativ die Punkte in 2D, um die Kullback-Leibler (KL) Divergenz zwischen der hochdimensionalen Affinitätsverteilung und der niederdimensionalen zu minimieren. Dies bewirkt, dass die 2D-Anordnung die hochdimensionale Struktur so gut wie möglich widerspiegelt – Punkte, die im ursprünglichen Raum nahe beieinander lagen, ziehen sich an, und solche, die weit auseinander liegen, stoßen sich ab, bis ein Gleichgewicht gefunden ist. Das Ergebnis ist oft ein visuell bedeutungsvolles Streudiagramm, in dem Cluster in den Daten offensichtlich werden. > [!TIP] -> *Anwendungsfälle in der Cybersicherheit:* t-SNE wird häufig verwendet, um **hochdimensionale Sicherheitsdaten für die menschliche Analyse zu visualisieren**. Zum Beispiel könnten Analysten in einem Sicherheitsoperationszentrum einen Ereignisdatenbestand mit Dutzenden von Merkmalen (Portnummern, Frequenzen, Byte-Zahlen usw.) nehmen und t-SNE verwenden, um ein 2D-Diagramm zu erstellen. Angriffe könnten in diesem Diagramm ihre eigenen Cluster bilden oder sich von normalen Daten trennen, was sie leichter identifizierbar macht. Es wurde auf Malware-Datensätze angewendet, um Gruppierungen von Malware-Familien zu sehen, oder auf Daten zu Netzwerkangriffen, bei denen sich verschiedene Angriffsarten deutlich gruppieren, was weitere Untersuchungen leitet. Im Wesentlichen bietet t-SNE eine Möglichkeit, Strukturen in Cyberdaten zu sehen, die sonst unverständlich wären. +> *Anwendungsfälle in der Cybersicherheit:* t-SNE wird häufig verwendet, um **hochdimensionale Sicherheitsdaten für die menschliche Analyse zu visualisieren**. Zum Beispiel könnten Analysten in einem Sicherheitsoperationszentrum einen Ereignisdatenbestand mit Dutzenden von Merkmalen (Portnummern, Frequenzen, Byte-Zahlen usw.) nehmen und t-SNE verwenden, um ein 2D-Diagramm zu erstellen. Angriffe könnten in diesem Diagramm ihre eigenen Cluster bilden oder sich von normalen Daten trennen, was sie leichter identifizierbar macht. Es wurde auf Malware-Datensätze angewendet, um Gruppierungen von Malware-Familien zu sehen oder auf Netzwerk-Eindringdaten, wo verschiedene Angriffsarten deutlich gruppiert sind, was weitere Untersuchungen leitet. Im Wesentlichen bietet t-SNE eine Möglichkeit, Struktur in Cyberdaten zu sehen, die sonst unverständlich wäre. #### Annahmen und Einschränkungen -t-SNE ist großartig für die visuelle Entdeckung von Mustern. Es kann Cluster, Untercluster und Ausreißer aufdecken, die andere lineare Methoden (wie PCA) möglicherweise nicht erkennen. Es wurde in der Cybersicherheitsforschung verwendet, um komplexe Daten wie Malware-Verhaltensprofile oder Muster im Netzwerkverkehr zu visualisieren. Da es die lokale Struktur bewahrt, ist es gut darin, natürliche Gruppierungen zu zeigen. +t-SNE ist großartig für die visuelle Entdeckung von Mustern. Es kann Cluster, Subcluster und Ausreißer aufdecken, die andere lineare Methoden (wie PCA) möglicherweise nicht erkennen. Es wurde in der Cybersicherheitsforschung verwendet, um komplexe Daten wie Malware-Verhaltensprofile oder Netzwerkverkehrsmuster zu visualisieren. Da es die lokale Struktur bewahrt, ist es gut darin, natürliche Gruppierungen zu zeigen. Allerdings ist t-SNE rechnerisch aufwendiger (ungefähr $O(n^2)$), sodass es für sehr große Datensätze möglicherweise eine Stichprobe erfordert. Es hat auch Hyperparameter (Perplexität, Lernrate, Iterationen), die die Ausgabe beeinflussen können – z.B. könnten unterschiedliche Perplexitätswerte Cluster in unterschiedlichen Maßstäben offenbaren. t-SNE-Diagramme können manchmal falsch interpretiert werden – Abstände in der Karte sind global nicht direkt bedeutungsvoll (es konzentriert sich auf lokale Nachbarschaften, manchmal können Cluster künstlich gut getrennt erscheinen). Außerdem ist t-SNE hauptsächlich für die Visualisierung gedacht; es bietet keinen direkten Weg, neue Datenpunkte zu projizieren, ohne neu zu berechnen, und es ist nicht dafür gedacht, als Vorverarbeitung für prädiktive Modellierung verwendet zu werden (UMAP ist eine Alternative, die einige dieser Probleme mit schnellerer Geschwindigkeit angeht). diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 0bfdeb3af..ef5322f3e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -802,7 +802,7 @@ - [AI Prompts](AI/AI-Prompts.md) - [AI Risk Frameworks](AI/AI-Risk-Frameworks.md) - [AI Supervised Learning Algorithms](AI/AI-Supervised-Learning-Algorithms.md) - - [AI Unsupervised Learning Algorithms](AI/AI-Unsupervised-Learning-algorithms.md) + - [AI Unsupervised Learning Algorithms](AI/AI-Unsupervised-Learning-Algorithms.md) - [AI Reinforcement Learning Algorithms](AI/AI-Reinforcement-Learning-Algorithms.md) - [LLM Training](AI/AI-llm-architecture/README.md) - [0. Basic LLM Concepts](AI/AI-llm-architecture/0.-basic-llm-concepts.md)