Translated ['src/AI/AI-Unsupervised-Learning-algorithms.md'] to el

This commit is contained in:
Translator 2025-06-07 23:59:14 +00:00
parent 5f64ea06f1
commit ea83fde117

View File

@ -2,23 +2,21 @@
{{#include ../banners/hacktricks-training.md}}
## Μη Εποπτευόμενη Μάθηση
Η μη εποπτευόμενη μάθηση είναι ένας τύπος μηχανικής μάθησης όπου το μοντέλο εκπαιδεύεται σε δεδομένα χωρίς επισημασμένες απαντήσεις. Ο στόχος είναι να βρει πρότυπα, δομές ή σχέσεις μέσα στα δεδομένα. Σε αντίθεση με τη εποπτευόμενη μάθηση, όπου το μοντέλο μαθαίνει από επισημασμένα παραδείγματα, οι αλγόριθμοι μη εποπτευόμενης μάθησης εργάζονται με μη επισημασμένα δεδομένα.
Η μη εποπτευόμενη μάθηση χρησιμοποιείται συχνά για εργασίες όπως η ομαδοποίηση, η μείωση διαστάσεων και η ανίχνευση ανωμαλιών. Μπορεί να βοηθήσει στην ανακάλυψη κρυφών προτύπων στα δεδομένα, στην ομαδοποίηση παρόμοιων στοιχείων ή στη μείωση της πολυπλοκότητας των δεδομένων διατηρώντας τα βασικά τους χαρακτηριστικά.
### Ομαδοποίηση K-Means
Το K-Means είναι ένας αλγόριθμος ομαδοποίησης βασισμένος σε κεντροειδείς που διαχωρίζει τα δεδομένα σε K ομάδες αναθέτοντας κάθε σημείο στην πλησιέστερη μέση τιμή ομάδας. Ο αλγόριθμος λειτουργεί ως εξής:
Ο K-Means είναι ένας αλγόριθμος ομαδοποίησης βασισμένος σε κεντροειδείς που διαχωρίζει τα δεδομένα σε K ομάδες αναθέτοντας κάθε σημείο στην πλησιέστερη μέση τιμή ομάδας. Ο αλγόριθμος λειτουργεί ως εξής:
1. **Αρχικοποίηση**: Επιλέξτε K αρχικά κέντρα ομάδων (κεντροειδείς), συχνά τυχαία ή μέσω πιο έξυπνων μεθόδων όπως το k-means++
2. **Ανάθεση**: Αναθέστε κάθε σημείο δεδομένων στην πλησιέστερη κεντροειδή με βάση ένα μέτρο απόστασης (π.χ., Ευκλείδεια απόσταση).
3. **Ενημέρωση**: Υπολογίστε ξανά τις κεντροειδείς παίρνοντας τη μέση τιμή όλων των σημείων δεδομένων που έχουν ανατεθεί σε κάθε ομάδα.
4. **Επανάληψη**: Τα βήματα 23 επαναλαμβάνονται μέχρι οι αναθέσεις ομάδων να σταθεροποιηθούν (οι κεντροειδείς δεν κινούνται πλέον σημαντικά).
> [!TIP]
> *Χρήσεις στην κυβερνοασφάλεια:* Το K-Means χρησιμοποιείται για την ανίχνευση εισβολών μέσω της ομαδοποίησης δικτυακών γεγονότων. Για παράδειγμα, οι ερευνητές εφαρμόζουν το K-Means στο σύνολο δεδομένων εισβολών KDD Cup 99 και διαπίστωσαν ότι διαχωρίζει αποτελεσματικά την κίνηση σε κανονικές και επιθετικές ομάδες. Στην πράξη, οι αναλυτές ασφαλείας μπορεί να ομαδοποιούν καταχωρήσεις καταγραφής ή δεδομένα συμπεριφοράς χρηστών για να βρουν ομάδες παρόμοιας δραστηριότητας. Οποιαδήποτε σημεία δεν ανήκουν σε μια καλά σχηματισμένη ομάδα μπορεί να υποδεικνύουν ανωμαλίες (π.χ. μια νέα παραλλαγή κακόβουλου λογισμικού που σχηματίζει τη δική της μικρή ομάδα). Το K-Means μπορεί επίσης να βοηθήσει στην κατηγοριοποίηση οικογενειών κακόβουλου λογισμικού ομαδοποιώντας δυαδικά αρχεία με βάση προφίλ συμπεριφοράς ή διανύσματα χαρακτηριστικών.
> *Χρήσεις στην κυβερνοασφάλεια:* Ο K-Means χρησιμοποιείται για την ανίχνευση εισβολών μέσω της ομαδοποίησης δικτυακών γεγονότων. Για παράδειγμα, οι ερευνητές εφαρμόζουν τον K-Means στο σύνολο δεδομένων εισβολών KDD Cup 99 και διαπιστώνουν ότι διαχωρίζει αποτελεσματικά την κίνηση σε κανονικές και επιθετικές ομάδες. Στην πράξη, οι αναλυτές ασφαλείας μπορεί να ομαδοποιούν καταχωρήσεις καταγραφής ή δεδομένα συμπεριφοράς χρηστών για να βρουν ομάδες παρόμοιας δραστηριότητας. Οποιαδήποτε σημεία που δεν ανήκουν σε μια καλά σχηματισμένη ομάδα μπορεί να υποδεικνύουν ανωμαλίες (π.χ. μια νέα παραλλαγή κακόβουλου λογισμικού που σχηματίζει τη δική της μικρή ομάδα). Ο K-Means μπορεί επίσης να βοηθήσει στην κατηγοριοποίηση οικογενειών κακόβουλου λογισμικού ομαδοποιώντας δυαδικά αρχεία με βάση προφίλ συμπεριφοράς ή διανύσματα χαρακτηριστικών.
#### Επιλογή του K
Ο αριθμός των ομάδων (K) είναι μια υπερπαράμετρος που πρέπει να καθοριστεί πριν από την εκτέλεση του αλγορίθμου. Τεχνικές όπως η Μέθοδος του Αγκώνα ή η Βαθμολογία Σιλουέτας μπορούν να βοηθήσουν στον προσδιορισμό μιας κατάλληλης τιμής για το K αξιολογώντας την απόδοση της ομαδοποίησης:
@ -28,12 +26,12 @@
#### Υποθέσεις και Περιορισμοί
Το K-Means υποθέτει ότι **οι ομάδες είναι σφαιρικές και ίσου μεγέθους**, κάτι που μπορεί να μην ισχύει για όλα τα σύνολα δεδομένων. Είναι ευαίσθητο στην αρχική τοποθέτηση των κεντροειδών και μπορεί να συγκλίνει σε τοπικά ελάχιστα. Επιπλέον, το K-Means δεν είναι κατάλληλο για σύνολα δεδομένων με μεταβαλλόμενες πυκνότητες ή μη σφαιρικά σχήματα και χαρακτηριστικά με διαφορετικές κλίμακες. Βήματα προεπεξεργασίας όπως η κανονικοποίηση ή η τυποποίηση μπορεί να είναι απαραίτητα για να διασφαλιστεί ότι όλα τα χαρακτηριστικά συμβάλλουν εξίσου στους υπολογισμούς αποστάσεων.
Ο K-Means υποθέτει ότι **οι ομάδες είναι σφαιρικές και ίσου μεγέθους**, κάτι που μπορεί να μην ισχύει για όλα τα σύνολα δεδομένων. Είναι ευαίσθητος στην αρχική τοποθέτηση των κεντροειδών και μπορεί να συγκλίνει σε τοπικά ελάχιστα. Επιπλέον, ο K-Means δεν είναι κατάλληλος για σύνολα δεδομένων με μεταβαλλόμενες πυκνότητες ή μη σφαιρικά σχήματα και χαρακτηριστικά με διαφορετικές κλίμακες. Βήματα προεπεξεργασίας όπως η κανονικοποίηση ή η τυποποίηση μπορεί να είναι απαραίτητα για να διασφαλιστεί ότι όλα τα χαρακτηριστικά συμβάλλουν εξίσου στους υπολογισμούς αποστάσεων.
<details>
<summary>Παράδειγμα -- Ομαδοποίηση Δικτυακών Γεγονότων
</summary>
Παρακάτω προσομοιώνουμε δεδομένα δικτυακής κίνησης και χρησιμοποιούμε το K-Means για να τα ομαδοποιήσουμε. Υποθέστε ότι έχουμε γεγονότα με χαρακτηριστικά όπως η διάρκεια σύνδεσης και ο αριθμός byte. Δημιουργούμε 3 ομάδες "κανονικής" κίνησης και 1 μικρή ομάδα που αντιπροσωπεύει ένα μοτίβο επίθεσης. Στη συνέχεια, εκτελούμε το K-Means για να δούμε αν τα διαχωρίζει.
Παρακάτω προσομοιώνουμε δεδομένα δικτυακής κίνησης και χρησιμοποιούμε τον K-Means για να τα ομαδοποιήσουμε. Υποθέστε ότι έχουμε γεγονότα με χαρακτηριστικά όπως η διάρκεια σύνδεσης και ο αριθμός byte. Δημιουργούμε 3 ομάδες "κανονικής" κίνησης και 1 μικρή ομάδα που αντιπροσωπεύει ένα μοτίβο επίθεσης. Στη συνέχεια, εκτελούμε τον K-Means για να δούμε αν τις διαχωρίζει.
```python
import numpy as np
from sklearn.cluster import KMeans
@ -69,16 +67,16 @@ print(f" Cluster {idx}: {center}")
1. **Συγκεντρωτική (Από Κάτω προς Τα Πάνω)**: Ξεκινάμε με κάθε σημείο δεδομένων ως ξεχωριστή ομάδα και συγχωνεύουμε επαναληπτικά τις πιο κοντινές ομάδες μέχρι να παραμείνει μια μόνο ομάδα ή να πληρωθεί ένα κριτήριο διακοπής.
2. **Διαχωριστική (Από Πάνω προς Τα Κάτω)**: Ξεκινάμε με όλα τα σημεία δεδομένων σε μια μόνο ομάδα και διαχωρίζουμε επαναληπτικά τις ομάδες μέχρι κάθε σημείο δεδομένων να είναι η δική του ομάδα ή να πληρωθεί ένα κριτήριο διακοπής.
Η συγκεντρωτική ομαδοποίηση απαιτεί έναν ορισμό της απόστασης μεταξύ των ομάδων και ένα κριτήριο σύνδεσης για να αποφασιστεί ποιες ομάδες θα συγχωνευτούν. Κοινές μέθοδοι σύνδεσης περιλαμβάνουν τη μοναδική σύνδεση (απόσταση των πιο κοντινών σημείων μεταξύ δύο ομάδων), τη πλήρη σύνδεση (απόσταση των πιο απομακρυσμένων σημείων), τη μέση σύνδεση κ.λπ., και η μετρική απόστασης είναι συχνά Ευκλείδεια. Η επιλογή της σύνδεσης επηρεάζει το σχήμα των ομάδων που παράγονται. Δεν υπάρχει ανάγκη να προ-καθοριστεί ο αριθμός των ομάδων K; μπορείτε να "κόψετε" το δενδρόγραμμα σε ένα επιλεγμένο επίπεδο για να αποκτήσετε τον επιθυμητό αριθμό ομάδων.
Η συγκεντρωτική ομαδοποίηση απαιτεί έναν ορισμό της απόστασης μεταξύ ομάδων και ένα κριτήριο σύνδεσης για να αποφασιστεί ποιες ομάδες θα συγχωνευτούν. Κοινές μέθοδοι σύνδεσης περιλαμβάνουν τη σύνδεση μεμονωμένων σημείων (απόσταση των πιο κοντινών σημείων μεταξύ δύο ομάδων), πλήρη σύνδεση (απόσταση των πιο απομακρυσμένων σημείων), μέση σύνδεση κ.λπ., και η μετρική απόστασης είναι συχνά Ευκλείδεια. Η επιλογή της σύνδεσης επηρεάζει το σχήμα των ομάδων που παράγονται. Δεν υπάρχει ανάγκη να προ-καθοριστεί ο αριθμός των ομάδων K; μπορείτε να "κόψετε" το δενδρόγραμμα σε ένα επιλεγμένο επίπεδο για να αποκτήσετε τον επιθυμητό αριθμό ομάδων.
Η ιεραρχική ομαδοποίηση παράγει ένα δενδρόγραμμα, μια δομή που μοιάζει με δέντρο που δείχνει τις σχέσεις μεταξύ των ομάδων σε διαφορετικά επίπεδα λεπτομέρειας. Το δενδρόγραμμα μπορεί να κοπεί σε ένα επιθυμητό επίπεδο για να αποκτηθεί ένας συγκεκριμένος αριθμός ομάδων.
Η ιεραρχική ομαδοποίηση παράγει ένα δενδρόγραμμα, μια δομή που μοιάζει με δέντρο και δείχνει τις σχέσεις μεταξύ των ομάδων σε διαφορετικά επίπεδα λεπτομέρειας. Το δενδρόγραμμα μπορεί να κοπεί σε ένα επιθυμητό επίπεδο για να αποκτηθεί ένας συγκεκριμένος αριθμός ομάδων.
> [!TIP]
> *Χρήσεις στην κυβερνοασφάλεια:* Η ιεραρχική ομαδοποίηση μπορεί να οργανώσει γεγονότα ή οντότητες σε ένα δέντρο για να εντοπίσει σχέσεις. Για παράδειγμα, στην ανάλυση κακόβουλου λογισμικού, η συγκεντρωτική ομαδοποίηση θα μπορούσε να ομαδοποιήσει δείγματα με βάση τη συμπεριφορική ομοιότητα, αποκαλύπτοντας μια ιεραρχία οικογενειών και παραλλαγών κακόβουλου λογισμικού. Στην ασφάλεια δικτύου, θα μπορούσε κανείς να ομαδοποιήσει ροές IP και να χρησιμοποιήσει το δενδρόγραμμα για να δει υποομαδοποιήσεις της κίνησης (π.χ., κατά πρωτόκολλο, στη συνέχεια κατά συμπεριφορά). Δεδομένου ότι δεν χρειάζεται να επιλέξετε το K εκ των προτέρων, είναι χρήσιμο όταν εξερευνάτε νέα δεδομένα για τα οποία ο αριθμός των κατηγοριών επιθέσεων είναι άγνωστος.
#### Υποθέσεις και Περιορισμοί
Η ιεραρχική ομαδοποίηση δεν υποθέτει ένα συγκεκριμένο σχήμα ομάδας και μπορεί να συλλάβει φωλιασμένες ομάδες. Είναι χρήσιμη για την ανακάλυψη ταξινομίας ή σχέσεων μεταξύ ομάδων (π.χ., ομαδοποίηση κακόβουλου λογισμικού κατά οικογένεια υποομάδων). Είναι καθοριστική (χωρίς προβλήματα τυχαίας αρχικοποίησης). Ένα βασικό πλεονέκτημα είναι το δενδρόγραμμα, το οποίο παρέχει πληροφορίες σχετικά με τη δομή ομαδοποίησης των δεδομένων σε όλες τις κλίμακες οι αναλυτές ασφαλείας μπορούν να αποφασίσουν μια κατάλληλη κοπή για να εντοπίσουν σημαντικές ομάδες. Ωστόσο, είναι υπολογιστικά δαπανηρή (συνήθως $O(n^2)$ χρόνος ή χειρότερα για απλές υλοποιήσεις) και δεν είναι εφικτή για πολύ μεγάλες βάσεις δεδομένων. Είναι επίσης μια Greedy διαδικασία μόλις γίνει μια συγχώνευση ή διαχωρισμός, δεν μπορεί να αναιρεθεί, γεγονός που μπορεί να οδηγήσει σε υποβέλτιστες ομάδες αν συμβεί ένα λάθος νωρίς. Οι εξωγενείς τιμές μπορούν επίσης να επηρεάσουν ορισμένες στρατηγικές σύνδεσης (η μοναδική σύνδεση μπορεί να προκαλέσει το φαινόμενο "αλυσίδας" όπου οι ομάδες συνδέονται μέσω εξωγενών τιμών).
Η ιεραρχική ομαδοποίηση δεν υποθέτει ένα συγκεκριμένο σχήμα ομάδας και μπορεί να συλλάβει φωλιασμένες ομάδες. Είναι χρήσιμη για την ανακάλυψη ταξινομίας ή σχέσεων μεταξύ ομάδων (π.χ., ομαδοποίηση κακόβουλου λογισμικού κατά οικογένεια υποομάδων). Είναι καθοριστική (χωρίς προβλήματα τυχαίας αρχικοποίησης). Ένα βασικό πλεονέκτημα είναι το δενδρόγραμμα, το οποίο παρέχει πληροφορίες σχετικά με τη δομή ομαδοποίησης των δεδομένων σε όλες τις κλίμακες οι αναλυτές ασφαλείας μπορούν να αποφασίσουν μια κατάλληλη κοπή για να εντοπίσουν σημαντικές ομάδες. Ωστόσο, είναι υπολογιστικά δαπανηρή (συνήθως $O(n^2)$ χρόνος ή χειρότερος για απλές υλοποιήσεις) και δεν είναι εφικτή για πολύ μεγάλες βάσεις δεδομένων. Είναι επίσης μια Greedy διαδικασία μόλις γίνει μια συγχώνευση ή διαχωρισμός, δεν μπορεί να αναιρεθεί, γεγονός που μπορεί να οδηγήσει σε υποβέλτιστες ομάδες αν συμβεί ένα λάθος νωρίς. Οι εξωγενείς τιμές μπορούν επίσης να επηρεάσουν ορισμένες στρατηγικές σύνδεσης (η σύνδεση μεμονωμένων σημείων μπορεί να προκαλέσει το φαινόμενο "αλυσίδας" όπου οι ομάδες συνδέονται μέσω εξωγενών τιμών).
<details>
<summary>Παράδειγμα -- Συγκεντρωτική Ομαδοποίηση Γεγονότων
@ -106,25 +104,25 @@ print(f"Cluster sizes for 3 clusters: {np.bincount(clusters_3)}")
### DBSCAN (Συστάδα Βασισμένη σε Πυκνότητα Χώρου Εφαρμογών με Θόρυβο)
Το DBSCAN είναι ένας αλγόριθμος συστάδων βασισμένος σε πυκνότητα που ομαδοποιεί σημεία που είναι στενά συσκευασμένα μεταξύ τους, ενώ επισημαίνει σημεία σε περιοχές χαμηλής πυκνότητας ως εκτός ομάδας. Είναι ιδιαίτερα χρήσιμος για σύνολα δεδομένων με μεταβαλλόμενες πυκνότητες και μη σφαιρικά σχήματα.
DBSCAN είναι ένας αλγόριθμος συστάδων βασισμένος σε πυκνότητα που ομαδοποιεί σημεία που είναι στενά συσκευασμένα μεταξύ τους, ενώ επισημαίνει σημεία σε περιοχές χαμηλής πυκνότητας ως εκτός ομάδας. Είναι ιδιαίτερα χρήσιμος για σύνολα δεδομένων με μεταβαλλόμενες πυκνότητες και μη σφαιρικά σχήματα.
Το DBSCAN λειτουργεί καθορίζοντας δύο παραμέτρους:
DBSCAN λειτουργεί καθορίζοντας δύο παραμέτρους:
- **Epsilon (ε)**: Η μέγιστη απόσταση μεταξύ δύο σημείων για να θεωρούνται μέρος της ίδιας ομάδας.
- **MinPts**: Ο ελάχιστος αριθμός σημείων που απαιτείται για να σχηματιστεί μια πυκνή περιοχή (κύριο σημείο).
Το DBSCAN αναγνωρίζει κύρια σημεία, σημεία ορίου και σημεία θορύβου:
DBSCAN αναγνωρίζει κύρια σημεία, σημεία ορίου και σημεία θορύβου:
- **Κύριο Σημείο**: Ένα σημείο με τουλάχιστον MinPts γείτονες εντός απόστασης ε.
- **Σημείο Ορίου**: Ένα σημείο που βρίσκεται εντός απόστασης ε από ένα κύριο σημείο αλλά έχει λιγότερους από MinPts γείτονες.
- **Σημείο Ορίου**: Ένα σημείο που είναι εντός απόστασης ε από ένα κύριο σημείο αλλά έχει λιγότερους από MinPts γείτονες.
- **Σημείο Θορύβου**: Ένα σημείο που δεν είναι ούτε κύριο σημείο ούτε σημείο ορίου.
Η ομαδοποίηση προχωρά επιλέγοντας ένα μη επισκεφθέν κύριο σημείο, το επισημαίνει ως νέα ομάδα και στη συνέχεια προσθέτει αναδρομικά όλα τα σημεία που είναι προσβάσιμα από αυτό (κύρια σημεία και οι γείτονές τους, κ.λπ.). Τα σημεία ορίου προστίθενται στην ομάδα ενός κοντινού κύριου. Αφού επεκταθούν όλα τα προσβάσιμα σημεία, το DBSCAN μεταβαίνει σε άλλο μη επισκεφθέν κύριο για να ξεκινήσει μια νέα ομάδα. Τα σημεία που δεν έχουν προσεγγιστεί από κανένα κύριο παραμένουν επισημασμένα ως θόρυβος.
Η ομαδοποίηση προχωρά επιλέγοντας ένα μη επισκεφθέν κύριο σημείο, το επισημαίνει ως νέα ομάδα και στη συνέχεια προσθέτει αναδρομικά όλα τα σημεία που είναι προσβάσιμα από πυκνότητα από αυτό (κύρια σημεία και οι γείτονές τους, κ.λπ.). Τα σημεία ορίου προστίθενται στην ομάδα ενός κοντινού κύριου. Αφού επεκταθούν όλα τα προσβάσιμα σημεία, το DBSCAN μεταβαίνει σε άλλο μη επισκεφθέν κύριο για να ξεκινήσει μια νέα ομάδα. Τα σημεία που δεν έχουν προσεγγιστεί από κανένα κύριο παραμένουν επισημασμένα ως θόρυβος.
> [!TIP]
> *Χρήσεις στην κυβερνοασφάλεια:* Το DBSCAN είναι χρήσιμο για την ανίχνευση ανωμαλιών στην κίνηση δικτύου. Για παράδειγμα, η κανονική δραστηριότητα χρηστών μπορεί να σχηματίσει μία ή περισσότερες πυκνές ομάδες στον χώρο χαρακτηριστικών, ενώ οι νέες επιθετικές συμπεριφορές εμφανίζονται ως διασκορπισμένα σημεία που το DBSCAN θα επισημάνει ως θόρυβο (εκτός ομάδας). Έχει χρησιμοποιηθεί για την ομαδοποίηση καταγραφών ροής δικτύου, όπου μπορεί να ανιχνεύσει σαρώσεις θυρών ή κίνηση άρνησης υπηρεσίας ως αραιές περιοχές σημείων. Μια άλλη εφαρμογή είναι η ομαδοποίηση παραλλαγών κακόβουλου λογισμικού: αν οι περισσότερες δείγματα ομαδοποιούνται κατά οικογένειες αλλά μερικά δεν ταιριάζουν πουθενά, αυτά τα λίγα θα μπορούσαν να είναι κακόβουλο λογισμικό μηδενικής ημέρας. Η ικανότητα να επισημαίνει θόρυβο σημαίνει ότι οι ομάδες ασφαλείας μπορούν να επικεντρωθούν στην έρευνα αυτών των εκτός ομάδας.
#### Υποθέσεις και Περιορισμοί
**Υποθέσεις & Δυνάμεις:**: Το DBSCAN δεν υποθέτει σφαιρικές ομάδες μπορεί να βρει ομάδες με αυθαίρετα σχήματα (ακόμα και αλυσίδες ή γειτονικές ομάδες). Προσδιορίζει αυτόματα τον αριθμό των ομάδων με βάση την πυκνότητα των δεδομένων και μπορεί αποτελεσματικά να αναγνωρίσει εκτός ομάδας ως θόρυβο. Αυτό το καθιστά ισχυρό για πραγματικά δεδομένα με ανώμαλα σχήματα και θόρυβο. Είναι ανθεκτικό σε εκτός ομάδας (σε αντίθεση με το K-Means, το οποίο τα αναγκάζει σε ομάδες). Λειτουργεί καλά όταν οι ομάδες έχουν περίπου ομοιόμορφη πυκνότητα.
**Υποθέσεις & Δυνάμεις:**: Το DBSCAN δεν υποθέτει σφαιρικές ομάδες μπορεί να βρει ομάδες με αυθαίρετα σχήματα (ακόμα και αλυσίδες ή γειτονικές ομάδες). Προσδιορίζει αυτόματα τον αριθμό των ομάδων με βάση την πυκνότητα των δεδομένων και μπορεί να αναγνωρίσει αποτελεσματικά τις εκτός ομάδας ως θόρυβο. Αυτό το καθιστά ισχυρό για πραγματικά δεδομένα με ανώμαλα σχήματα και θόρυβο. Είναι ανθεκτικό σε εκτός ομάδας (σε αντίθεση με το K-Means, το οποίο τα αναγκάζει σε ομάδες). Λειτουργεί καλά όταν οι ομάδες έχουν περίπου ομοιόμορφη πυκνότητα.
**Περιορισμοί**: Η απόδοση του DBSCAN εξαρτάται από την επιλογή κατάλληλων τιμών ε και MinPts. Μπορεί να δυσκολευτεί με δεδομένα που έχουν μεταβαλλόμενες πυκνότητες μια ενιαία ε δεν μπορεί να φιλοξενήσει τόσο πυκνές όσο και αραιές ομάδες. Αν η ε είναι πολύ μικρή, επισημαίνει τα περισσότερα σημεία ως θόρυβο; αν είναι πολύ μεγάλη, οι ομάδες μπορεί να συγχωνευτούν λανθασμένα. Επίσης, το DBSCAN μπορεί να είναι αναποτελεσματικό σε πολύ μεγάλα σύνολα δεδομένων (αφελώς $O(n^2)$, αν και η χωρική ευρετηρίαση μπορεί να βοηθήσει). Σε χώρους χαρακτηριστικών υψηλής διάστασης, η έννοια της "απόστασης εντός ε" μπορεί να γίνει λιγότερο σημαντική (η κατάρα της διάστασης), και το DBSCAN μπορεί να χρειαστεί προσεκτική ρύθμιση παραμέτρων ή μπορεί να αποτύχει να βρει διαισθητικές ομάδες. Παρά αυτά, επεκτάσεις όπως το HDBSCAN αντιμετωπίζουν ορισμένα ζητήματα (όπως η μεταβαλλόμενη πυκνότητα).
@ -152,13 +150,13 @@ 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])
```
Σε αυτό το απόσπασμα, ρυθμίσαμε το `eps` και το `min_samples` ώστε να ταιριάζουν με την κλίμακα των δεδομένων μας (15.0 σε μονάδες χαρακτηριστικών και απαιτώντας 5 σημεία για να σχηματίσουν ένα σύμπλεγμα). Το DBSCAN θα πρέπει να βρει 2 συμπλέγματα (τα κανονικά συμπλέγματα κυκλοφορίας) και να επισημάνει τα 5 εισαγόμενα εξωτικά σημεία ως θόρυβο. Εξάγουμε τον αριθμό των συμπλεγμάτων σε σχέση με τα σημεία θορύβου για να το επαληθεύσουμε. Σε μια πραγματική ρύθμιση, μπορεί κανείς να επαναλάβει τη διαδικασία για το ε (χρησιμοποιώντας μια ημι-γραφική προσέγγιση k-distance για να επιλέξει το ε) και το MinPts (συχνά ρυθμισμένο γύρω από τη διαστατικότητα των δεδομένων + 1 ως κανόνας) για να βρει σταθερά αποτελέσματα συμπλέγματος. Η ικανότητα να επισημαίνουμε ρητά το θόρυβο βοηθά στη διαχωριστική ανάλυση πιθανών επιθέσεων για περαιτέρω ανάλυση.
Σε αυτό το απόσπασμα, ρυθμίσαμε το `eps` και το `min_samples` ώστε να ταιριάζουν με την κλίμακα των δεδομένων μας (15.0 σε μονάδες χαρακτηριστικών και απαιτώντας 5 σημεία για να σχηματίσουν ένα σύμπλεγμα). Το DBSCAN θα πρέπει να βρει 2 συμπλέγματα (τα κανονικά συμπλέγματα κυκλοφορίας) και να επισημάνει τα 5 εισαγόμενα εξωτικά σημεία ως θόρυβο. Εξάγουμε τον αριθμό των συμπλεγμάτων σε σχέση με τα σημεία θορύβου για να το επαληθεύσουμε. Σε μια πραγματική ρύθμιση, μπορεί κανείς να επαναλάβει τη διαδικασία για το ε (χρησιμοποιώντας μια ημιτελή γραφική προσέγγιση για να επιλέξει το ε) και το MinPts (συχνά ρυθμισμένο γύρω από τη διαστατικότητα των δεδομένων + 1 ως κανόνας) για να βρει σταθερά αποτελέσματα συμπλέγματος. Η ικανότητα να επισημαίνουμε ρητά το θόρυβο βοηθά στη διαχωριστική ανάλυση πιθανών επιθέσεων για περαιτέρω ανάλυση.
</details>
### Ανάλυση Κύριων Συνιστωσών (PCA)
Η PCA είναι μια τεχνική για **μείωση διαστατικότητας** που βρίσκει ένα νέο σύνολο ορθογωνίων αξόνων (κύριες συνιστώσες) που καταγράφουν τη μέγιστη διακύμανση στα δεδομένα. Με απλά λόγια, η PCA περιστρέφει και προβάλλει τα δεδομένα σε ένα νέο σύστημα συντεταγμένων έτσι ώστε η πρώτη κύρια συνιστώσα (PC1) να εξηγεί τη μεγαλύτερη δυνατή διακύμανση, η δεύτερη PC (PC2) να εξηγεί τη μεγαλύτερη διακύμανση ορθογώνια στην PC1, και ούτω καθεξής. Μαθηματικά, η PCA υπολογίζει τους ιδιοδιανύσματα του πίνακα συνδιακύμανσης των δεδομένων αυτά τα ιδιοδιανύσματα είναι οι κατευθύνσεις των κύριων συνιστωσών, και οι αντίστοιχες ιδιοτιμές υποδεικνύουν την ποσότητα της διακύμανσης που εξηγείται από κάθε μία. Χρησιμοποιείται συχνά για εξαγωγή χαρακτηριστικών, οπτικοποίηση και μείωση θορύβου.
Η PCA είναι μια τεχνική για **μείωση διαστάσεων** που βρίσκει ένα νέο σύνολο ορθογωνίων αξόνων (κύριες συνιστώσες) που καταγράφουν τη μέγιστη διακύμανση στα δεδομένα. Με απλά λόγια, η PCA περιστρέφει και προβάλλει τα δεδομένα σε ένα νέο σύστημα συντεταγμένων έτσι ώστε η πρώτη κύρια συνιστώσα (PC1) να εξηγεί τη μεγαλύτερη δυνατή διακύμανση, η δεύτερη PC (PC2) να εξηγεί τη μεγαλύτερη διακύμανση ορθογώνια στην PC1, και ούτω καθεξής. Μαθηματικά, η PCA υπολογίζει τους ιδιοδιανύσματα του πίνακα συνδιακύμανσης των δεδομένων αυτά τα ιδιοδιανύσματα είναι οι κατευθύνσεις των κύριων συνιστωσών, και οι αντίστοιχες ιδιοτιμές υποδεικνύουν την ποσότητα της διακύμανσης που εξηγείται από κάθε μία. Χρησιμοποιείται συχνά για εξαγωγή χαρακτηριστικών, οπτικοποίηση και μείωση θορύβου.
Σημειώστε ότι αυτό είναι χρήσιμο αν οι διαστάσεις του συνόλου δεδομένων περιέχουν **σημαντικές γραμμικές εξαρτήσεις ή συσχετίσεις**.
@ -167,7 +165,7 @@ print("Cluster labels for first 10 points:", labels[:10])
2. **Πίνακας Συνδιακύμανσης**: Υπολογίστε τον πίνακα συνδιακύμανσης των τυποποιημένων δεδομένων για να κατανοήσετε τις σχέσεις μεταξύ των χαρακτηριστικών.
3. **Αποσύνθεση Ιδιοτιμών**: Εκτελέστε αποσύνθεση ιδιοτιμών στον πίνακα συνδιακύμανσης για να αποκτήσετε τις ιδιοτιμές και τα ιδιοδιανύσματα.
4. **Επιλογή Κύριων Συνιστωσών**: Ταξινομήστε τις ιδιοτιμές σε φθίνουσα σειρά και επιλέξτε τα κορυφαία K ιδιοδιανύσματα που αντιστοιχούν στις μεγαλύτερες ιδιοτιμές. Αυτά τα ιδιοδιανύσματα σχηματίζουν τον νέο χώρο χαρακτηριστικών.
5. **Μετασχηματισμός Δεδομένων**: Προβάλλετε τα αρχικά δεδομένα στον νέο χώρο χαρακτηριστικών χρησιμοποιώντας τις επιλεγμένες κύριες συνιστώσες.
5. **Μετασχηματισμός Δεδομένων**: Προβάλετε τα αρχικά δεδομένα στον νέο χώρο χαρακτηριστικών χρησιμοποιώντας τις επιλεγμένες κύριες συνιστώσες.
Η PCA χρησιμοποιείται ευρέως για οπτικοποίηση δεδομένων, μείωση θορύβου και ως βήμα προεπεξεργασίας για άλλους αλγόριθμους μηχανικής μάθησης. Βοηθά στη μείωση της διαστατικότητας των δεδομένων διατηρώντας τη βασική τους δομή.
#### Ιδιοτιμές και Ιδιοδιανύσματα
@ -183,20 +181,20 @@ print("Cluster labels for first 10 points:", labels[:10])
#### Ιδιοτιμές και Ιδιοδιανύσματα στην PCA
Ας εξηγήσουμε αυτό με ένα παράδειγμα. Φανταστείτε ότι έχετε ένα σύνολο δεδομένων με πολλές γκρίζες κλίμακες εικόνες προσώπων 100x100 pixels. Κάθε pixel μπορεί να θεωρηθεί ως χαρακτηριστικό, οπότε έχετε 10,000 χαρακτηριστικά ανά εικόνα (ή ένα διάνυσμα 10000 στοιχείων ανά εικόνα). Αν θέλετε να μειώσετε τη διαστατικότητα αυτού του συνόλου δεδομένων χρησιμοποιώντας PCA, θα ακολουθήσετε τα εξής βήματα:
Ας εξηγήσουμε αυτό με ένα παράδειγμα. Φανταστείτε ότι έχετε ένα σύνολο δεδομένων με πολλές γκρίζες εικόνες προσώπων 100x100 pixel. Κάθε pixel μπορεί να θεωρηθεί ως χαρακτηριστικό, οπότε έχετε 10,000 χαρακτηριστικά ανά εικόνα (ή ένα διάνυσμα 10000 στοιχείων ανά εικόνα). Αν θέλετε να μειώσετε τη διαστατικότητα αυτού του συνόλου δεδομένων χρησιμοποιώντας PCA, θα ακολουθήσετε τα εξής βήματα:
1. **Τυποποίηση**: Κεντράρετε τα δεδομένα αφαιρώντας τον μέσο όρο κάθε χαρακτηριστικού (pixel) από το σύνολο δεδομένων.
2. **Πίνακας Συνδιακύμανσης**: Υπολογίστε τον πίνακα συνδιακύμανσης των τυποποιημένων δεδομένων, ο οποίος καταγράφει πώς τα χαρακτηριστικά (pixels) ποικίλλουν μαζί.
- Σημειώστε ότι η συνδιακύμανση μεταξύ δύο μεταβλητών (pixels σε αυτή την περίπτωση) υποδεικνύει πόσο αλλάζουν μαζί, οπότε η ιδέα εδώ είναι να ανακαλύψετε ποια pixels τείνουν να αυξάνονται ή να μειώνονται μαζί με μια γραμμική σχέση.
- Για παράδειγμα, αν το pixel 1 και το pixel 2 τείνουν να αυξάνονται μαζί, η συνδιακύμανση μεταξύ τους θα είναι θετική.
- Ο πίνακας συνδιακύμανσης θα είναι ένας πίνακας 10,000x10,000 όπου κάθε είσοδος αντιπροσωπεύει τη συνδιακύμανση μεταξύ δύο pixels.
- Ο πίνακας συνδιακύμανσης θα είναι ένας πίνακας 10,000x10,000 όπου κάθε είσοδος αναπαριστά τη συνδιακύμανση μεταξύ δύο pixels.
3. **Λύση της εξίσωσης ιδιοτιμών**: Η εξίσωση ιδιοτιμών που πρέπει να λυθεί είναι `C * v = λ * v` όπου C είναι ο πίνακας συνδιακύμανσης, v είναι το ιδιοδιανύσμα και λ είναι η ιδιοτιμή. Μπορεί να λυθεί χρησιμοποιώντας μεθόδους όπως:
- **Αποσύνθεση Ιδιοτιμών**: Εκτελέστε αποσύνθεση ιδιοτιμών στον πίνακα συνδιακύμανσης για να αποκτήσετε τις ιδιοτιμές και τα ιδιοδιανύσματα.
- **Αποσύνθεση Σημαντικών Τιμών (SVD)**: Εναλλακτικά, μπορείτε να χρησιμοποιήσετε SVD για να αποσυνθέσετε τον πίνακα δεδομένων σε σημαντικές τιμές και διανύσματα, τα οποία μπορούν επίσης να αποδώσουν τις κύριες συνιστώσες.
4. **Επιλογή Κύριων Συνιστωσών**: Ταξινομήστε τις ιδιοτιμές σε φθίνουσα σειρά και επιλέξτε τα κορυφαία K ιδιοδιανύσματα που αντιστοιχούν στις μεγαλύτερες ιδιοτιμές. Αυτά τα ιδιοδιανύσματα αναπαριστούν τις κατευθύνσεις της μέγιστης διακύμανσης στα δεδομένα.
> [!TIP]
> *Χρήσεις στην κυβερνοασφάλεια:* Μια κοινή χρήση της PCA στην ασφάλεια είναι η μείωση χαρακτηριστικών για ανίχνευση ανωμαλιών. Για παράδειγμα, ένα σύστημα ανίχνευσης εισβολών με 40+ μετρικές δικτύου (όπως χαρακτηριστικά NSL-KDD) μπορεί να χρησιμοποιήσει την PCA για να μειώσει σε λίγες συνιστώσες, συνοψίζοντας τα δεδομένα για οπτικοποίηση ή τροφοδοσία σε αλγόριθμους συμπλέγματος. Οι αναλυτές μπορεί να σχεδιάσουν την κυκλοφορία δικτύου στο χώρο των πρώτων δύο κύριων συνιστωσών για να δουν αν οι επιθέσεις διαχωρίζονται από την κανονική κυκλοφορία. Η PCA μπορεί επίσης να βοηθήσει στην εξάλειψη πλεοναζόντων χαρακτηριστικών (όπως τα bytes που αποστέλλονται σε σχέση με τα bytes που λαμβάνονται αν είναι συσχετισμένα) για να καταστήσει τους αλγόριθμους ανίχνευσης πιο ανθεκτικούς και ταχύτερους.
> *Χρήσεις στην κυβερνοασφάλεια:* Μια κοινή χρήση της PCA στην ασφάλεια είναι η μείωση χαρακτηριστικών για ανίχνευση ανωμαλιών. Για παράδειγμα, ένα σύστημα ανίχνευσης εισβολών με 40+ μετρικές δικτύου (όπως χαρακτηριστικά NSL-KDD) μπορεί να χρησιμοποιήσει την PCA για να μειώσει σε λίγες συνιστώσες, συνοψίζοντας τα δεδομένα για οπτικοποίηση ή τροφοδοσία σε αλγόριθμους συμπλέγματος. Οι αναλυτές μπορεί να σχεδιάσουν την κυκλοφορία δικτύου στον χώρο των πρώτων δύο κύριων συνιστωσών για να δουν αν οι επιθέσεις διαχωρίζονται από την κανονική κυκλοφορία. Η PCA μπορεί επίσης να βοηθήσει στην εξάλειψη πλεοναστικών χαρακτηριστικών (όπως τα bytes που αποστέλλονται σε σχέση με τα bytes που λαμβάνονται αν είναι συσχετισμένα) για να καταστήσει τους αλγόριθμους ανίχνευσης πιο ανθεκτικούς και ταχύτερους.
#### Υποθέσεις και Περιορισμοί
@ -233,24 +231,24 @@ print("First 5 data points in PCA space:\n", data_2d[:5])
### Gaussian Mixture Models (GMM)
Ένα Gaussian Mixture Model υποθέτει ότι τα δεδομένα παράγονται από ένα μείγμα **πολλών Gaussian (κανονικών) κατανομών με άγνωστες παραμέτρους**. Στην ουσία, είναι ένα πιθανολογικό μοντέλο ομαδοποίησης: προσπαθεί να αναθέσει ήπια κάθε σημείο σε μία από τις K Gaussian συνιστώσες. Κάθε Gaussian συνιστώσα k έχει έναν μέσο διάνυσμα (μ_k), πίνακα συνδιακύμανσης (Σ_k) και ένα βάρος μίξης (π_k) που αντιπροσωπεύει πόσο διαδεδομένος είναι αυτός ο συμπλέκτης. Σε αντίθεση με το K-Means που κάνει "σκληρές" αναθέσεις, το GMM δίνει σε κάθε σημείο μια πιθανότητα να ανήκει σε κάθε συμπλέκτη.
Ένα Gaussian Mixture Model υποθέτει ότι τα δεδομένα παράγονται από ένα μείγμα **πολλών Gaussian (κανονικών) κατανομών με άγνωστες παραμέτρους**. Στην ουσία, είναι ένα πιθανολογικό μοντέλο ομαδοποίησης: προσπαθεί να αναθέσει ήπια κάθε σημείο σε μία από τις K Gaussian συνιστώσες. Κάθε Gaussian συνιστώσα k έχει έναν μέσο διάνυσμα (μ_k), πίνακα συνδιακύμανσης (Σ_k) και ένα βάρος ανάμειξης (π_k) που αντιπροσωπεύει πόσο διαδεδομένος είναι αυτός ο συμπλέκτης. Σε αντίθεση με το K-Means που κάνει "σκληρές" αναθέσεις, το GMM δίνει σε κάθε σημείο μια πιθανότητα να ανήκει σε κάθε συμπλέκτη.
Η προσαρμογή GMM γίνεται συνήθως μέσω του αλγορίθμου Expectation-Maximization (EM):
- **Αρχικοποίηση**: Ξεκινήστε με αρχικές εκτιμήσεις για τους μέσους, τις συνδιακυμάνσεις και τους συντελεστές μίξης (ή χρησιμοποιήστε τα αποτελέσματα του K-Means ως σημείο εκκίνησης).
- **Αρχικοποίηση**: Ξεκινήστε με αρχικές εκτιμήσεις για τους μέσους, τις συνδιακυμάνσεις και τους συντελεστές ανάμειξης (ή χρησιμοποιήστε τα αποτελέσματα του K-Means ως σημείο εκκίνησης).
- **E-step (Προσδοκία)**: Δεδομένων των τρεχουσών παραμέτρων, υπολογίστε την ευθύνη κάθε συμπλέκτη για κάθε σημείο: ουσιαστικά `r_nk = P(z_k | x_n)` όπου z_k είναι η λανθάνουσα μεταβλητή που υποδεικνύει την ιδιότητα του συμπλέκτη για το σημείο x_n. Αυτό γίνεται χρησιμοποιώντας το θεώρημα του Bayes, όπου υπολογίζουμε την οπίσθια πιθανότητα κάθε σημείου να ανήκει σε κάθε συμπλέκτη με βάση τις τρέχουσες παραμέτρους. Οι ευθύνες υπολογίζονται ως:
```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)}
```
όπου:
- \( \pi_k \) είναι ο συντελεστής μίξης για τον συμπλέκτη k (προγενέστερη πιθανότητα του συμπλέκτη k),
- \( \pi_k \) είναι ο συντελεστής ανάμειξης για τον συμπλέκτη k (προγενέστερη πιθανότητα του συμπλέκτη k),
- \( \mathcal{N}(x_n | \mu_k, \Sigma_k) \) είναι η συνάρτηση πυκνότητας πιθανότητας Gaussian για το σημείο \( x_n \) δεδομένου του μέσου \( \mu_k \) και της συνδιακύμανσης \( \Sigma_k \).
- **M-step (Μέγιστη)**: Ενημερώστε τις παραμέτρους χρησιμοποιώντας τις ευθύνες που υπολογίστηκαν στο E-step:
- Ενημερώστε κάθε μέσο μ_k ως τον σταθμισμένο μέσο όρο των σημείων, όπου τα βάρη είναι οι ευθύνες.
- Ενημερώστε κάθε συνδιακύμανση Σ_k ως τη σταθμισμένη συνδιακύμανση των σημείων που ανατίθενται στον συμπλέκτη k.
- Ενημερώστε τους συντελεστές μίξης π_k ως τον μέσο όρο ευθύνης για τον συμπλέκτη k.
- Ενημερώστε τους συντελεστές ανάμειξης π_k ως τον μέσο όρο ευθύνης για τον συμπλέκτη k.
- **Επαναλάβετε** τα βήματα E και M μέχρι τη σύγκλιση (οι παράμετροι σταθεροποιούνται ή η βελτίωση της πιθανότητας είναι κάτω από ένα κατώφλι).
@ -261,9 +259,9 @@ r_{nk} = \frac{\pi_k \mathcal{N}(x_n | \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \m
#### Υποθέσεις και Περιορισμοί
Το GMM είναι μια γενίκευση του K-Means που ενσωματώνει τη συνδιακύμανση, έτσι ώστε οι συμπλέκτες να μπορούν να είναι ελλειπτικοί (όχι μόνο σφαιρικοί). Διαχειρίζεται συμπλέκτες διαφορετικών μεγεθών και σχημάτων εάν η συνδιακύμανση είναι πλήρης. Η ήπια ομαδοποίηση είναι πλεονέκτημα όταν τα όρια των συμπλεκτών είναι ασαφή π.χ., στην κυβερνοασφάλεια, ένα γεγονός μπορεί να έχει χαρακτηριστικά πολλών τύπων επιθέσεων; το GMM μπορεί να αντικατοπτρίζει αυτή την αβεβαιότητα με πιθανότητες. Το GMM παρέχει επίσης μια πιθανολογική εκτίμηση πυκνότητας των δεδομένων, χρήσιμη για την ανίχνευση εξωλέμβιων (σημείων με χαμηλή πιθανότητα κάτω από όλα τα στοιχεία του μείγματος).
Το GMM είναι μια γενίκευση του K-Means που ενσωματώνει τη συνδιακύμανση, έτσι οι συμπλέκτες μπορούν να είναι ελλειψοειδείς (όχι μόνο σφαιρικοί). Διαχειρίζεται συμπλέκτες διαφορετικών μεγεθών και σχημάτων αν η συνδιακύμανση είναι πλήρης. Η ήπια ομαδοποίηση είναι πλεονέκτημα όταν τα όρια των συμπλεκτών είναι ασαφή π.χ., στην κυβερνοασφάλεια, ένα γεγονός μπορεί να έχει χαρακτηριστικά πολλών τύπων επιθέσεων; το GMM μπορεί να αντικατοπτρίζει αυτή την αβεβαιότητα με πιθανότητες. Το GMM παρέχει επίσης μια πιθανολογική εκτίμηση πυκνότητας των δεδομένων, χρήσιμη για την ανίχνευση εξαιρετικών περιπτώσεων (σημεία με χαμηλή πιθανότητα κάτω από όλα τα στοιχεία του μείγματος).
Από την άλλη πλευρά, το GMM απαιτεί να καθορίσετε τον αριθμό των συνιστωσών K (αν και μπορείτε να χρησιμοποιήσετε κριτήρια όπως BIC/AIC για να το επιλέξετε). Το EM μπορεί μερικές φορές να συγκλίνει αργά ή σε τοπικό βέλτιστο, οπότε η αρχικοποίηση είναι σημαντική (συχνά εκτελείται το EM πολλές φορές). Εάν τα δεδομένα δεν ακολουθούν πραγματικά ένα μείγμα Gaussian, το μοντέλο μπορεί να είναι κακή προσαρμογή. Υπάρχει επίσης κίνδυνος να συρρικνωθεί μια Gaussian για να καλύψει μόνο μια εξωλέμβιο (αν και η κανονικοποίηση ή τα ελάχιστα όρια συνδιακύμανσης μπορούν να μετριάσουν αυτό).
Από την άλλη πλευρά, το GMM απαιτεί τον καθορισμό του αριθμού των συνιστωσών K (αν και μπορεί κανείς να χρησιμοποιήσει κριτήρια όπως BIC/AIC για να το επιλέξει). Το EM μπορεί μερικές φορές να συγκλίνει αργά ή σε τοπικό βέλτιστο, οπότε η αρχικοποίηση είναι σημαντική (συχνά εκτελείται το EM πολλές φορές). Εάν τα δεδομένα δεν ακολουθούν πραγματικά ένα μείγμα Gaussian, το μοντέλο μπορεί να είναι κακή προσαρμογή. Υπάρχει επίσης κίνδυνος να συρρικνωθεί μια Gaussian για να καλύψει μόνο μια εξαιρετική περίπτωση (αν και η κανονικοποίηση ή τα ελάχιστα όρια συνδιακύμανσης μπορούν να μετριάσουν αυτό).
```python
from sklearn.mixture import GaussianMixture
@ -282,23 +280,22 @@ 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)
```
Σε αυτόν τον κώδικα, εκπαιδεύουμε ένα GMM με 3 Γκαουσιανές πάνω στην κανονική κίνηση (υποθέτοντας ότι γνωρίζουμε 3 προφίλ νόμιμης κίνησης). Οι μέσοι και οι συνδιακυμάνσεις που εκτυπώνονται περιγράφουν αυτούς τους συμπλέκτες (για παράδειγμα, ένας μέσος μπορεί να είναι γύρω από [50,500] που αντιστοιχεί στο κέντρο ενός συμπλέκτη, κ.λπ.). Στη συνέχεια, δοκιμάζουμε μια ύποπτη σύνδεση [duration=200, bytes=800]. Η predict_proba δίνει την πιθανότητα αυτού του σημείου να ανήκει σε κάθε έναν από τους 3 συμπλέκτες θα περιμέναμε αυτές τις πιθανότητες να είναι πολύ χαμηλές ή πολύ skewed καθώς το [200,800] βρίσκεται μακριά από τους κανονικούς συμπλέκτες. Η συνολική score_samples (log-likelihood) εκτυπώνεται; μια πολύ χαμηλή τιμή υποδεικνύει ότι το σημείο δεν ταιριάζει καλά στο μοντέλο, σηματοδοτώντας το ως ανωμαλία. Στην πράξη, θα μπορούσε κανείς να θέσει ένα κατώφλι στην log-likelihood (ή στην μέγιστη πιθανότητα) για να αποφασίσει αν ένα σημείο είναι αρκετά απίθανο ώστε να θεωρηθεί κακόβουλο. Έτσι, το GMM παρέχει έναν αρχή που βασίζεται στην ανίχνευση ανωμαλιών και επίσης αποδίδει μαλακούς συμπλέκτες που αναγνωρίζουν την αβεβαιότητα.
</details>
Σε αυτόν τον κώδικα, εκπαιδεύουμε ένα GMM με 3 Γκαουσιανές σε κανονική κίνηση (υποθέτοντας ότι γνωρίζουμε 3 προφίλ νόμιμης κίνησης). Οι μέσοι όροι και οι συνδιακυμάνσεις που εκτυπώνονται περιγράφουν αυτά τα κλάστερ (για παράδειγμα, ένας μέσος όρος μπορεί να είναι γύρω από [50,500] που αντιστοιχεί στο κέντρο ενός κλάστερ, κ.λπ.). Στη συνέχεια, δοκιμάζουμε μια ύποπτη σύνδεση [duration=200, bytes=800]. Η predict_proba δίνει την πιθανότητα αυτού του σημείου να ανήκει σε καθένα από τα 3 κλάστερ θα περιμέναμε αυτές τις πιθανότητες να είναι πολύ χαμηλές ή πολύ skewed καθώς το [200,800] βρίσκεται μακριά από τα κανονικά κλάστερ. Η συνολική score_samples (log-likelihood) εκτυπώνεται; μια πολύ χαμηλή τιμή υποδεικνύει ότι το σημείο δεν ταιριάζει καλά στο μοντέλο, σηματοδοτώντας το ως ανωμαλία. Στην πράξη, θα μπορούσε κανείς να ορίσει ένα κατώφλι στη log-likelihood (ή στη μέγιστη πιθανότητα) για να αποφασίσει αν ένα σημείο είναι αρκετά απίθανο ώστε να θεωρηθεί κακόβουλο. Έτσι, το GMM παρέχει έναν αρχή που βασίζεται σε αρχές για την ανίχνευση ανωμαλιών και επίσης αποδίδει μαλακά κλάστερ που αναγνωρίζουν την αβεβαιότητα.
### Isolation Forest
**Isolation Forest** είναι ένας αλγόριθμος ανίχνευσης ανωμαλιών που βασίζεται στην ιδέα της τυχαίας απομόνωσης σημείων. Η αρχή είναι ότι οι ανωμαλίες είναι λίγες και διαφορετικές, επομένως είναι πιο εύκολο να απομονωθούν από τα κανονικά σημεία. Ένα Isolation Forest κατασκευάζει πολλά δυαδικά δέντρα απομόνωσης (τυχαία δέντρα απόφασης) που διαχωρίζουν τα δεδομένα τυχαία. Σε κάθε κόμβο ενός δέντρου, επιλέγεται ένα τυχαίο χαρακτηριστικό και επιλέγεται μια τυχαία τιμή διαχωρισμού μεταξύ του ελάχιστου και του μέγιστου αυτού του χαρακτηριστικού για τα δεδομένα σε αυτόν τον κόμβο. Αυτός ο διαχωρισμός διαιρεί τα δεδομένα σε δύο κλάδους. Το δέντρο αναπτύσσεται μέχρι κάθε σημείο να απομονωθεί στο δικό του φύλλο ή να φτάσει σε μέγιστο ύψος δέντρου.
**Isolation Forest** είναι ένας αλγόριθμος ανίχνευσης ανωμαλιών συνόλου που βασίζεται στην ιδέα της τυχαίας απομόνωσης σημείων. Η αρχή είναι ότι οι ανωμαλίες είναι λίγες και διαφορετικές, επομένως είναι πιο εύκολο να απομονωθούν από τα κανονικά σημεία. Ένα Isolation Forest κατασκευάζει πολλά δυαδικά δέντρα απομόνωσης (τυχαία δέντρα απόφασης) που διαχωρίζουν τα δεδομένα τυχαία. Σε κάθε κόμβο ενός δέντρου, επιλέγεται ένα τυχαίο χαρακτηριστικό και επιλέγεται μια τυχαία τιμή διαχωρισμού μεταξύ του ελάχιστου και του μέγιστου αυτού του χαρακτηριστικού για τα δεδομένα σε αυτόν τον κόμβο. Αυτός ο διαχωρισμός διαιρεί τα δεδομένα σε δύο κλάδους. Το δέντρο αναπτύσσεται μέχρι κάθε σημείο να απομονωθεί στο δικό του φύλλο ή να επιτευχθεί το μέγιστο ύψος δέντρου.
Η ανίχνευση ανωμαλιών πραγματοποιείται παρατηρώντας το μήκος της διαδρομής κάθε σημείου σε αυτά τα τυχαία δέντρα ο αριθμός των διαχωρισμών που απαιτούνται για να απομονωθεί το σημείο. Διαισθητικά, οι ανωμαλίες (outliers) τείνουν να απομονώνονται πιο γρήγορα επειδή ένας τυχαίος διαχωρισμός είναι πιο πιθανό να χωρίσει έναν outlier (ο οποίος βρίσκεται σε μια αραιή περιοχή) από ότι θα έκανε με ένα κανονικό σημείο σε έναν πυκνό συμπλέκτη. Το Isolation Forest υπολογίζει μια βαθμολογία ανωμαλίας από τον μέσο όρο του μήκους της διαδρομής σε όλα τα δέντρα: μικρότερος μέσος όρος διαδρομής → πιο ανώμαλο. Οι βαθμολογίες συνήθως κανονικοποιούνται σε [0,1] όπου το 1 σημαίνει πολύ πιθανή ανωμαλία.
Η ανίχνευση ανωμαλιών πραγματοποιείται παρατηρώντας το μήκος της διαδρομής κάθε σημείου σε αυτά τα τυχαία δέντρα ο αριθμός των διαχωρισμών που απαιτούνται για να απομονωθεί το σημείο. Διαισθητικά, οι ανωμαλίες (outliers) τείνουν να απομονώνονται πιο γρήγορα επειδή ένας τυχαίος διαχωρισμός είναι πιο πιθανό να χωρίσει έναν outlier (ο οποίος βρίσκεται σε μια αραιή περιοχή) από ότι θα έκανε με ένα κανονικό σημείο σε ένα πυκνό κλάστερ. Το Isolation Forest υπολογίζει μια βαθμολογία ανωμαλίας από το μέσο μήκος διαδρομής σε όλα τα δέντρα: μικρότερο μέσο μήκος διαδρομής → πιο ανώμαλο. Οι βαθμολογίες συνήθως κανονικοποιούνται σε [0,1] όπου το 1 σημαίνει πολύ πιθανή ανωμαλία.
> [!TIP]
> *Χρήσεις στην κυβερνοασφάλεια:* Τα Isolation Forest έχουν χρησιμοποιηθεί με επιτυχία στην ανίχνευση εισβολών και ανίχνευση απάτης. Για παράδειγμα, εκπαιδεύστε ένα Isolation Forest σε αρχεία καταγραφής κίνησης δικτύου που περιέχουν κυρίως κανονική συμπεριφορά; το δάσος θα παράγει σύντομες διαδρομές για περίεργη κίνηση (όπως μια IP που χρησιμοποιεί μια άγνωστη θύρα ή ένα ασυνήθιστο μοτίβο μεγέθους πακέτου), σηματοδοτώντας το για επιθεώρηση. Επειδή δεν απαιτεί επισημασμένες επιθέσεις, είναι κατάλληλο για την ανίχνευση άγνωστων τύπων επιθέσεων. Μπορεί επίσης να αναπτυχθεί σε δεδομένα σύνδεσης χρηστών για να ανιχνεύσει καταλήψεις λογαριασμών (οι ανώμαλες ώρες ή τοποθεσίες σύνδεσης απομονώνονται γρήγορα). Σε μία περίπτωση χρήσης, ένα Isolation Forest μπορεί να προστατεύσει μια επιχείρηση παρακολουθώντας μετρικές συστήματος και δημιουργώντας μια ειδοποίηση όταν ένας συνδυασμός μετρικών (CPU, δίκτυο, αλλαγές αρχείων) φαίνεται πολύ διαφορετικός (σύντομες διαδρομές απομόνωσης) από ιστορικά μοτίβα.
#### Υποθέσεις και Περιορισμοί
**Πλεονεκτήματα**: Το Isolation Forest δεν απαιτεί μια υπόθεση κατανομής; στοχεύει άμεσα στην απομόνωση. Είναι αποδοτικό σε δεδομένα υψηλής διάστασης και μεγάλες βάσεις δεδομένων (γραμμική πολυπλοκότητα $O(n\log n)$ για την κατασκευή του δάσους) καθώς κάθε δέντρο απομονώνει σημεία με μόνο ένα υποσύνολο χαρακτηριστικών και διαχωρισμών. Τείνει να χειρίζεται καλά τα αριθμητικά χαρακτηριστικά και μπορεί να είναι ταχύτερο από μεθόδους που βασίζονται σε απόσταση που μπορεί να είναι $O(n^2)$. Παρέχει επίσης αυτόματα μια βαθμολογία ανωμαλίας, ώστε να μπορείτε να ορίσετε ένα κατώφλι για ειδοποιήσεις (ή να χρησιμοποιήσετε μια παράμετρο μόλυνσης για να αποφασίσετε αυτόματα ένα όριο με βάση ένα αναμενόμενο ποσοστό ανωμαλιών).
**Πλεονεκτήματα**: Το Isolation Forest δεν απαιτεί μια υπόθεση κατανομής; στοχεύει άμεσα στην απομόνωση. Είναι αποδοτικό σε δεδομένα υψηλής διάστασης και μεγάλες βάσεις δεδομένων (γραμμική πολυπλοκότητα $O(n\log n)$ για την κατασκευή του δάσους) καθώς κάθε δέντρο απομονώνει σημεία με μόνο ένα υποσύνολο χαρακτηριστικών και διαχωρισμών. Τείνει να χειρίζεται καλά τα αριθμητικά χαρακτηριστικά και μπορεί να είναι ταχύτερο από μεθόδους που βασίζονται σε απόσταση που μπορεί να είναι $O(n^2)$. Παρέχει επίσης αυτόματα μια βαθμολογία ανωμαλίας, ώστε να μπορείτε να ορίσετε ένα κατώφλι για ειδοποιήσεις (ή να χρησιμοποιήσετε μια παράμετρο μόλυνσης για να αποφασίσετε αυτόματα ένα όριο με βάση ένα αναμενόμενο κλάσμα ανωμαλίας).
**Περιορισμοί**: Λόγω της τυχαίας φύσης του, τα αποτελέσματα μπορεί να διαφέρουν ελαφρώς μεταξύ των εκτελέσεων (αν και με αρκετά πολλά δέντρα αυτό είναι μικρό). Εάν τα δεδομένα έχουν πολλά άσχετα χαρακτηριστικά ή εάν οι ανωμαλίες δεν διαφοροποιούνται έντονα σε κανένα χαρακτηριστικό, η απομόνωση μπορεί να μην είναι αποτελεσματική (τυχαίοι διαχωρισμοί θα μπορούσαν να απομονώσουν κανονικά σημεία κατά τύχη ωστόσο, η μέση τιμή πολλών δέντρων μετριάζει αυτό). Επίσης, το Isolation Forest γενικά υποθέτει ότι οι ανωμαλίες είναι μια μικρή μειοψηφία (που συνήθως είναι αληθές σε σενάρια κυβερνοασφάλειας).
**Περιορισμοί**: Λόγω της τυχαίας φύσης του, τα αποτελέσματα μπορεί να διαφέρουν ελαφρώς μεταξύ των εκτελέσεων (αν και με αρκετά πολλά δέντρα αυτό είναι μικρό). Εάν τα δεδομένα έχουν πολλά άσχετα χαρακτηριστικά ή εάν οι ανωμαλίες δεν διαχωρίζονται έντονα σε κανένα χαρακτηριστικό, η απομόνωση μπορεί να μην είναι αποτελεσματική (τυχαίοι διαχωρισμοί θα μπορούσαν να απομονώσουν κανονικά σημεία κατά τύχη ωστόσο, η μέση τιμή πολλών δέντρων μετριάζει αυτό). Επίσης, το Isolation Forest γενικά υποθέτει ότι οι ανωμαλίες είναι μια μικρή μειοψηφία (που συνήθως είναι αληθές σε σενάρια κυβερνοασφάλειας).
<details>
<summary>Παράδειγμα -- Ανίχνευση Ανωμαλιών σε Αρχεία Καταγραφής Δικτύου
@ -323,11 +320,12 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
```markdown
Σε αυτόν τον κώδικα, δημιουργούμε το `IsolationForest` με 100 δέντρα και ορίζουμε `contamination=0.15` (σημαίνει ότι αναμένουμε περίπου 15% ανωμαλίες; το μοντέλο θα ορίσει το κατώφλι βαθμολογίας του έτσι ώστε ~15% των σημείων να επισημαίνονται). Το προσαρμόζουμε στο `X_test_if` που περιέχει ένα μείγμα κανονικών και επιθετικών σημείων (σημείωση: κανονικά θα προσαρμόζατε σε δεδομένα εκπαίδευσης και στη συνέχεια θα χρησιμοποιούσατε την πρόβλεψη σε νέα δεδομένα, αλλά εδώ για λόγους απεικόνισης προσαρμόζουμε και προβλέπουμε στο ίδιο σύνολο για να παρατηρήσουμε άμεσα τα αποτελέσματα).
Η έξοδος δείχνει τις προβλεπόμενες ετικέτες για τα πρώτα 20 σημεία (όπου το -1 υποδηλώνει ανωμαλία). Εκτυπώνουμε επίσης πόσες ανωμαλίες ανιχνεύθηκαν συνολικά και μερικές παραδείγματα βαθμολογιών ανωμαλίας. Αναμένουμε περίπου 18 από τα 120 σημεία να είναι επισημασμένα με -1 (καθώς η μόλυνση ήταν 15%). Αν τα 20 δείγματα επίθεσης είναι πραγματικά τα πιο απομακρυσμένα, τα περισσότερα από αυτά θα πρέπει να εμφανίζονται σε αυτές τις προβλέψεις -1. Η βαθμολογία ανωμαλίας (η συνάρτηση απόφασης του Isolation Forest) είναι υψηλότερη για κανονικά σημεία και χαμηλότερη (πιο αρνητική) για ανωμαλίες εκτυπώνουμε μερικές τιμές για να δούμε τη διαχωριστικότητα. Στην πράξη, κάποιος μπορεί να ταξινομήσει τα δεδομένα κατά βαθμολογία για να δει τους κορυφαίους απομακρυσμένους και να τους ερευνήσει. Το Isolation Forest παρέχει έτσι έναν αποδοτικό τρόπο να διηθήσει κανείς μεγάλα μη επισημασμένα δεδομένα ασφαλείας και να επιλέξει τις πιο ανώμαλες περιπτώσεις για ανθρώπινη ανάλυση ή περαιτέρω αυτοματοποιημένο έλεγχο.
Η έξοδος δείχνει τις προβλεπόμενες ετικέτες για τα πρώτα 20 σημεία (όπου το -1 υποδηλώνει ανωμαλία). Εκτυπώνουμε επίσης πόσες ανωμαλίες ανιχνεύθηκαν συνολικά και μερικές παραδείγματα βαθμολογιών ανωμαλίας. Αναμένουμε περίπου 18 από τα 120 σημεία να είναι επισημασμένα με -1 (καθώς η μόλυνση ήταν 15%). Αν τα 20 δείγματα επίθεσης είναι πραγματικά τα πιο απομακρυσμένα, τα περισσότερα από αυτά θα πρέπει να εμφανίζονται σε αυτές τις προβλέψεις -1. Η βαθμολογία ανωμαλίας (η συνάρτηση απόφασης του Isolation Forest) είναι υψηλότερη για κανονικά σημεία και χαμηλότερη (πιο αρνητική) για ανωμαλίες εκτυπώνουμε μερικές τιμές για να δούμε τη διαχωριστικότητα. Στην πράξη, κάποιος μπορεί να ταξινομήσει τα δεδομένα κατά βαθμολογία για να δει τους κορυφαίους απομακρυσμένους και να τους ερευνήσει. Το Isolation Forest παρέχει έτσι έναν αποδοτικό τρόπο να φιλτράρει μεγάλα μη επισημασμένα δεδομένα ασφαλείας και να επιλέγει τις πιο ανώμαλες περιπτώσεις για ανθρώπινη ανάλυση ή περαιτέρω αυτοματοποιημένη εξέταση.
</details>
### t-SNE (t-Distributed Stochastic Neighbor Embedding)
**t-SNE** είναι μια μη γραμμική τεχνική μείωσης διαστάσεων που έχει σχεδιαστεί ειδικά για την απεικόνιση υψηλής διάστασης δεδομένων σε 2 ή 3 διαστάσεις. Μετατρέπει τις ομοιότητες μεταξύ των σημείων δεδομένων σε κοινές κατανομές πιθανοτήτων και προσπαθεί να διατηρήσει τη δομή των τοπικών γειτονιών στην προβολή χαμηλότερης διάστασης. Με απλούστερους όρους, το t-SNE τοποθετεί σημεία σε (ας πούμε) 2D έτσι ώστε παρόμοια σημεία (στον αρχικό χώρο) να καταλήγουν κοντά το ένα στο άλλο και μη παρόμοια σημεία να καταλήγουν μακριά το ένα από το άλλο με υψηλή πιθανότητα.
**t-SNE** είναι μια μη γραμμική τεχνική μείωσης διαστάσεων που έχει σχεδιαστεί ειδικά για την απεικόνιση υψηλής διάστασης δεδομένων σε 2 ή 3 διαστάσεις. Μετατρέπει τις ομοιότητες μεταξύ των σημείων δεδομένων σε κοινές κατανομές πιθανοτήτων και προσπαθεί να διατηρήσει τη δομή των τοπικών γειτονιών στην προβολή χαμηλότερης διάστασης. Με απλούς όρους, το t-SNE τοποθετεί σημεία σε (ας πούμε) 2D έτσι ώστε παρόμοια σημεία (στον αρχικό χώρο) να βρίσκονται κοντά το ένα στο άλλο και μη παρόμοια σημεία να βρίσκονται μακριά το ένα από το άλλο με υψηλή πιθανότητα.
Ο αλγόριθμος έχει δύο κύριες φάσεις:
@ -342,9 +340,9 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
#### Υποθέσεις και Περιορισμοί
Το t-SNE είναι εξαιρετικό για οπτική ανακάλυψη προτύπων. Μπορεί να αποκαλύψει συστάδες, υποσυστάδες και απομακρυσμένα σημεία που άλλες γραμμικές μέθοδοι (όπως το PCA) μπορεί να μην εντοπίσουν. Έχει χρησιμοποιηθεί στην έρευνα κυβερνοασφάλειας για να απεικονίσει πολύπλοκα δεδομένα όπως προφίλ συμπεριφοράς κακόβουλου λογισμικού ή πρότυπα δικτυακής κυκλοφορίας. Δεδομένου ότι διατηρεί τη τοπική δομή, είναι καλό στο να δείχνει φυσικές ομαδοποιήσεις.
Το t-SNE είναι εξαιρετικό για οπτική ανακάλυψη προτύπων. Μπορεί να αποκαλύψει συστάδες, υποσυστάδες και ανωμαλίες που άλλες γραμμικές μέθοδοι (όπως το PCA) μπορεί να μην εντοπίσουν. Έχει χρησιμοποιηθεί στην έρευνα κυβερνοασφάλειας για να απεικονίσει πολύπλοκα δεδομένα όπως προφίλ συμπεριφοράς κακόβουλου λογισμικού ή πρότυπα δικτυακής κυκλοφορίας. Δεδομένου ότι διατηρεί τη τοπική δομή, είναι καλό στο να δείχνει φυσικές ομαδοποιήσεις.
Ωστόσο, το t-SNE είναι υπολογιστικά βαρύτερο (περίπου $O(n^2)$) οπότε μπορεί να απαιτεί δειγματοληψία για πολύ μεγάλα σύνολα δεδομένων. Έχει επίσης υπερπαραμέτρους (perplexity, ρυθμός μάθησης, επαναλήψεις) που μπορούν να επηρεάσουν την έξοδο π.χ., διαφορετικές τιμές perplexity μπορεί να αποκαλύψουν συστάδες σε διαφορετικές κλίμακες. Οι απεικονίσεις t-SNE μπορεί μερικές φορές να παρερμηνευτούν οι αποστάσεις στον χάρτη δεν είναι άμεσα σημασιολογικά παγκοσμίως (επικεντρώνεται στη τοπική γειτονιά, μερικές φορές οι συστάδες μπορεί να φαίνονται τεχνητά καλά διαχωρισμένες). Επίσης, το t-SNE προορίζεται κυρίως για απεικόνιση; δεν παρέχει έναν απλό τρόπο να προβάλλει νέα σημεία δεδομένων χωρίς επαναϋπολογισμό, και δεν προορίζεται να χρησιμοποιηθεί ως προεπεξεργασία για προγνωστική μοντελοποίηση (το UMAP είναι μια εναλλακτική που αντιμετωπίζει ορισμένα από αυτά τα ζητήματα με ταχύτερη ταχύτητα).
Ωστόσο, το t-SNE είναι υπολογιστικά βαρύτερο (περίπου $O(n^2)$) οπότε μπορεί να απαιτεί δειγματοληψία για πολύ μεγάλα σύνολα δεδομένων. Έχει επίσης υπερπαραμέτρους (perplexity, ρυθμός μάθησης, επαναλήψεις) που μπορούν να επηρεάσουν την έξοδο π.χ., διαφορετικές τιμές perplexity μπορεί να αποκαλύψουν συστάδες σε διαφορετικές κλίμακες. Τα διαγράμματα t-SNE μπορεί μερικές φορές να παρερμηνευθούν οι αποστάσεις στον χάρτη δεν είναι άμεσα σημασιολογικά παγκοσμίως (επικεντρώνεται στη τοπική γειτονιά, μερικές φορές οι συστάδες μπορεί να φαίνονται τεχνητά καλά διαχωρισμένες). Επίσης, το t-SNE προορίζεται κυρίως για απεικόνιση; δεν παρέχει έναν απλό τρόπο να προβάλλει νέα σημεία δεδομένων χωρίς επαναϋπολογισμό, και δεν προορίζεται να χρησιμοποιηθεί ως προεπεξεργασία για προγνωστική μοντελοποίηση (το UMAP είναι μια εναλλακτική που αντιμετωπίζει ορισμένα από αυτά τα ζητήματα με ταχύτερη ταχύτητα).
<details>
<summary>Παράδειγμα -- Απεικόνιση Δικτυακών Συνδέσεων
@ -434,7 +432,7 @@ plt.legend()
plt.tight_layout()
plt.show()
```
Εδώ συνδυάσαμε το προηγούμενο 4D κανονικό σύνολο δεδομένων μας με μια χούφτα ακραίων εξαιρέσεων (οι εξαιρέσεις έχουν ένα χαρακτηριστικό (“διάρκεια”) ρυθμισμένο πολύ υψηλά, κ.λπ., για να προσομοιώσουμε ένα παράξενο μοτίβο). Εκτελούμε t-SNE με μια τυπική περιπλοκότητα 30. Τα δεδομένα εξόδου data_2d έχουν σχήμα (1505, 2). Δεν θα σχεδιάσουμε πραγματικά σε αυτό το κείμενο, αλλά αν το κάναμε, θα περιμέναμε να δούμε ίσως τρεις σφιχτούς συμπλέκτες που αντιστοιχούν στους 3 κανονικούς συμπλέκτες, και τις 5 εξαιρέσεις να εμφανίζονται ως απομονωμένα σημεία μακριά από αυτούς τους συμπλέκτες. Σε μια διαδραστική ροή εργασίας, θα μπορούσαμε να χρωματίσουμε τα σημεία ανάλογα με την ετικέτα τους (κανονικό ή ποιος συμπλέκτης, έναντι ανωμαλίας) για να επαληθεύσουμε αυτή τη δομή. Ακόμα και χωρίς ετικέτες, ένας αναλυτής μπορεί να παρατηρήσει αυτά τα 5 σημεία να κάθονται σε κενό χώρο στο 2D διάγραμμα και να τα επισημάνει. Αυτό δείχνει πώς το t-SNE μπορεί να είναι ένα ισχυρό εργαλείο για την οπτική ανίχνευση ανωμαλιών και την επιθεώρηση συμπλεγμάτων σε δεδομένα κυβερνοασφάλειας, συμπληρώνοντας τους αυτοματοποιημένους αλγόριθμους παραπάνω.
Εδώ συνδυάσαμε το προηγούμενο 4D κανονικό σύνολο δεδομένων μας με μια χούφτα ακραίων εξαιρέσεων (οι εξαιρέσεις έχουν ένα χαρακτηριστικό (“διάρκεια”) ρυθμισμένο πολύ υψηλά, κ.λπ., για να προσομοιώσουμε ένα παράξενο μοτίβο). Εκτελούμε t-SNE με μια τυπική περιπλοκότητα 30. Τα δεδομένα εξόδου data_2d έχουν σχήμα (1505, 2). Δεν θα σχεδιάσουμε πραγματικά σε αυτό το κείμενο, αλλά αν το κάναμε, θα περιμέναμε να δούμε ίσως τρία σφιχτά σύνολα που αντιστοιχούν στα 3 κανονικά σύνολα, και τις 5 εξαιρέσεις να εμφανίζονται ως απομονωμένα σημεία μακριά από αυτά τα σύνολα. Σε μια διαδραστική ροή εργασίας, θα μπορούσαμε να χρωματίσουμε τα σημεία ανάλογα με την ετικέτα τους (κανονικό ή ποιο σύνολο, έναντι ανωμαλίας) για να επαληθεύσουμε αυτή τη δομή. Ακόμα και χωρίς ετικέτες, ένας αναλυτής μπορεί να παρατηρήσει αυτά τα 5 σημεία να βρίσκονται σε κενό χώρο στο 2D διάγραμμα και να τα επισημάνει. Αυτό δείχνει πώς το t-SNE μπορεί να είναι ένα ισχυρό εργαλείο για την οπτική ανίχνευση ανωμαλιών και την επιθεώρηση συστάδων σε δεδομένα κυβερνοασφάλειας, συμπληρώνοντας τους αυτοματοποιημένους αλγόριθμους παραπάνω.
</details>