mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/AI/AI-Unsupervised-Learning-Algorithms.md'] to el
This commit is contained in:
parent
040b6e16d5
commit
f8dfeacbfc
@ -9,14 +9,14 @@
|
||||
|
||||
### Ομαδοποίηση K-Means
|
||||
|
||||
Το K-Means είναι ένας αλγόριθμος ομαδοποίησης βασισμένος σε κεντροειδείς που διαχωρίζει τα δεδομένα σε K ομάδες αναθέτοντας κάθε σημείο στην πλησιέστερη μέση τιμή ομάδας. Ο αλγόριθμος λειτουργεί ως εξής:
|
||||
Ο K-Means είναι ένας αλγόριθμος ομαδοποίησης βασισμένος σε κεντροειδείς που διαχωρίζει τα δεδομένα σε K ομάδες αναθέτοντας κάθε σημείο στην πλησιέστερη μέση τιμή ομάδας. Ο αλγόριθμος λειτουργεί ως εξής:
|
||||
1. **Αρχικοποίηση**: Επιλέξτε K αρχικά κέντρα ομάδων (κεντροειδείς), συχνά τυχαία ή μέσω πιο έξυπνων μεθόδων όπως το k-means++.
|
||||
2. **Ανάθεση**: Αναθέστε κάθε σημείο δεδομένων στην πλησιέστερη κεντροειδή με βάση ένα μέτρο απόστασης (π.χ., Ευκλείδεια απόσταση).
|
||||
3. **Ενημέρωση**: Υπολογίστε ξανά τις κεντροειδείς παίρνοντας τη μέση τιμή όλων των σημείων δεδομένων που έχουν ανατεθεί σε κάθε ομάδα.
|
||||
4. **Επανάληψη**: Τα βήματα 2–3 επαναλαμβάνονται μέχρι οι αναθέσεις ομάδων να σταθεροποιηθούν (οι κεντροειδείς δεν κινούνται πλέον σημαντικά).
|
||||
|
||||
> [!TIP]
|
||||
> *Χρήσεις στην κυβερνοασφάλεια:* Το K-Means χρησιμοποιείται για την ανίχνευση εισβολών ομαδοποιώντας γεγονότα δικτύου. Για παράδειγμα, οι ερευνητές εφαρμόσαν το K-Means στο σύνολο δεδομένων εισβολών KDD Cup 99 και διαπίστωσαν ότι διαχωρίζει αποτελεσματικά την κίνηση σε κανονικές και επιθετικές ομάδες. Στην πράξη, οι αναλυτές ασφαλείας μπορεί να ομαδοποιήσουν καταχωρήσεις καταγραφής ή δεδομένα συμπεριφοράς χρηστών για να βρουν ομάδες παρόμοιας δραστηριότητας. Οποιαδήποτε σημεία που δεν ανήκουν σε μια καλά σχηματισμένη ομάδα μπορεί να υποδεικνύουν ανωμαλίες (π.χ. μια νέα παραλλαγή κακόβουλου λογισμικού που σχηματίζει τη δική της μικρή ομάδα). Το K-Means μπορεί επίσης να βοηθήσει στην κατηγοριοποίηση οικογενειών κακόβουλου λογισμικού ομαδοποιώντας δυαδικά αρχεία με βάση προφίλ συμπεριφοράς ή διανύσματα χαρακτηριστικών.
|
||||
> *Χρήσεις στην κυβερνοασφάλεια:* Ο K-Means χρησιμοποιείται για την ανίχνευση εισβολών ομαδοποιώντας γεγονότα δικτύου. Για παράδειγμα, οι ερευνητές εφαρμόζουν τον K-Means στο σύνολο δεδομένων εισβολών KDD Cup 99 και διαπίστωσαν ότι διαχωρίζει αποτελεσματικά την κίνηση σε κανονικές και επιθετικές ομάδες. Στην πράξη, οι αναλυτές ασφαλείας μπορεί να ομαδοποιούν καταχωρήσεις καταγραφής ή δεδομένα συμπεριφοράς χρηστών για να βρουν ομάδες παρόμοιας δραστηριότητας. Οποιαδήποτε σημεία που δεν ανήκουν σε μια καλά σχηματισμένη ομάδα μπορεί να υποδεικνύουν ανωμαλίες (π.χ. μια νέα παραλλαγή κακόβουλου λογισμικού που σχηματίζει τη δική της μικρή ομάδα). Ο K-Means μπορεί επίσης να βοηθήσει στην κατηγοριοποίηση οικογενειών κακόβουλου λογισμικού ομαδοποιώντας δυαδικά αρχεία με βάση προφίλ συμπεριφοράς ή διανύσματα χαρακτηριστικών.
|
||||
|
||||
#### Επιλογή του K
|
||||
Ο αριθμός των ομάδων (K) είναι μια υπερπαράμετρος που πρέπει να καθοριστεί πριν από την εκτέλεση του αλγορίθμου. Τεχνικές όπως η Μέθοδος του Αγκώνα ή η Βαθμολογία Σιλουέτας μπορούν να βοηθήσουν στον προσδιορισμό μιας κατάλληλης τιμής για το K αξιολογώντας την απόδοση της ομαδοποίησης:
|
||||
@ -26,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
|
||||
@ -67,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>Παράδειγμα -- Συγκεντρωτική Ομαδοποίηση Γεγονότων
|
||||
@ -118,13 +118,13 @@ DBSCAN αναγνωρίζει κύρια σημεία, σημεία ορίου
|
||||
Η ομαδοποίηση προχωρά επιλέγοντας ένα μη επισκεφθέν κύριο σημείο, το επισημαίνει ως νέα ομάδα και στη συνέχεια προσθέτει αναδρομικά όλα τα σημεία που είναι προσβάσιμα από αυτό (κύρια σημεία και οι γείτονές τους, κ.λπ.). Τα σημεία ορίου προστίθενται στην ομάδα ενός κοντινού κύριου. Αφού επεκταθούν όλα τα προσβάσιμα σημεία, το DBSCAN μεταβαίνει σε άλλο μη επισκεφθέν κύριο για να ξεκινήσει μια νέα ομάδα. Τα σημεία που δεν έχουν προσεγγιστεί από κανένα κύριο παραμένουν επισημασμένα ως θόρυβος.
|
||||
|
||||
> [!TIP]
|
||||
> *Χρήσεις στην κυβερνοασφάλεια:* Το DBSCAN είναι χρήσιμο για την ανίχνευση ανωμαλιών στην κίνηση δικτύου. Για παράδειγμα, η κανονική δραστηριότητα χρηστών μπορεί να σχηματίσει μία ή περισσότερες πυκνές ομάδες στον χώρο χαρακτηριστικών, ενώ οι νέες επιθέσεις εμφανίζονται ως διασκορπισμένα σημεία που το DBSCAN θα επισημάνει ως θόρυβο (εκτός ομάδας). Έχει χρησιμοποιηθεί για την ομαδοποίηση καταγραφών ροής δικτύου, όπου μπορεί να ανιχνεύσει σαρώσεις θυρών ή κίνηση άρνησης υπηρεσίας ως αραιές περιοχές σημείων. Μια άλλη εφαρμογή είναι η ομαδοποίηση παραλλαγών κακόβουλου λογισμικού: αν οι περισσότερες δείγματα ομαδοποιούνται κατά οικογένειες αλλά μερικά δεν ταιριάζουν πουθενά, αυτά τα λίγα θα μπορούσαν να είναι zero-day κακόβουλο λογισμικό. Η ικανότητα να επισημαίνει θόρυβο σημαίνει ότι οι ομάδες ασφαλείας μπορούν να επικεντρωθούν στην έρευνα αυτών των εκτός ομάδας.
|
||||
> *Χρήσεις στην κυβερνοασφάλεια:* Το DBSCAN είναι χρήσιμο για την ανίχνευση ανωμαλιών στην κίνηση δικτύου. Για παράδειγμα, η κανονική δραστηριότητα χρηστών μπορεί να σχηματίσει μία ή περισσότερες πυκνές ομάδες στον χώρο χαρακτηριστικών, ενώ οι νέες επιθετικές συμπεριφορές εμφανίζονται ως διασκορπισμένα σημεία που το DBSCAN θα επισημάνει ως θόρυβο (εκτός ομάδας). Έχει χρησιμοποιηθεί για την ομαδοποίηση καταγραφών ροής δικτύου, όπου μπορεί να ανιχνεύσει σαρώσεις θυρών ή κίνηση άρνησης υπηρεσίας ως αραιές περιοχές σημείων. Μια άλλη εφαρμογή είναι η ομαδοποίηση παραλλαγών κακόβουλου λογισμικού: αν οι περισσότερες δείγματα ομαδοποιούνται κατά οικογένειες αλλά μερικά δεν ταιριάζουν πουθενά, αυτά τα λίγα θα μπορούσαν να είναι κακόβουλο λογισμικό μηδενικής ημέρας. Η ικανότητα να επισημαίνει θόρυβο σημαίνει ότι οι ομάδες ασφαλείας μπορούν να επικεντρωθούν στην έρευνα αυτών των εκτός ομάδας.
|
||||
|
||||
#### Υποθέσεις και Περιορισμοί
|
||||
|
||||
**Υποθέσεις & Δυνάμεις:**: Το DBSCAN δεν υποθέτει σφαιρικές ομάδες – μπορεί να βρει ομάδες με αυθαίρετα σχήματα (ακόμα και αλυσίδες ή γειτονικές ομάδες). Προσδιορίζει αυτόματα τον αριθμό των ομάδων με βάση την πυκνότητα των δεδομένων και μπορεί αποτελεσματικά να αναγνωρίσει εκτός ομάδας ως θόρυβο. Αυτό το καθιστά ισχυρό για πραγματικά δεδομένα με ανώμαλα σχήματα και θόρυβο. Είναι ανθεκτικό σε εκτός ομάδας (σε αντίθεση με το K-Means, το οποίο τα αναγκάζει σε ομάδες). Λειτουργεί καλά όταν οι ομάδες έχουν περίπου ομοιόμορφη πυκνότητα.
|
||||
**Υποθέσεις & Δυνάμεις:**: Το DBSCAN δεν υποθέτει σφαιρικές ομάδες – μπορεί να βρει ομάδες με αυθαίρετα σχήματα (ακόμα και αλυσίδες ή γειτονικές ομάδες). Προσδιορίζει αυτόματα τον αριθμό των ομάδων με βάση την πυκνότητα των δεδομένων και μπορεί να αναγνωρίσει αποτελεσματικά τις εκτός ομάδας ως θόρυβο. Αυτό το καθιστά ισχυρό για πραγματικά δεδομένα με ανώμαλα σχήματα και θόρυβο. Είναι ανθεκτικό σε εκτός ομάδας (σε αντίθεση με το K-Means, το οποίο τα αναγκάζει σε ομάδες). Λειτουργεί καλά όταν οι ομάδες έχουν περίπου ομοιόμορφη πυκνότητα.
|
||||
|
||||
**Περιορισμοί**: Η απόδοση του DBSCAN εξαρτάται από την επιλογή κατάλληλων τιμών ε και MinPts. Μπορεί να δυσκολευτεί με δεδομένα που έχουν μεταβαλλόμενες πυκνότητες – μια ενιαία ε δεν μπορεί να φιλοξενήσει τόσο πυκνές όσο και αραιές ομάδες. Αν η ε είναι πολύ μικρή, επισημαίνει τα περισσότερα σημεία ως θόρυβο; αν είναι πολύ μεγάλη, οι ομάδες μπορεί να συγχωνευτούν λανθασμένα. Επίσης, το DBSCAN μπορεί να είναι αναποτελεσματικό σε πολύ μεγάλα σύνολα δεδομένων (αφελώς $O(n^2)$, αν και η χωρική ευρετηρίαση μπορεί να βοηθήσει). Σε χώρους χαρακτηριστικών υψηλής διάστασης, η έννοια της "απόστασης εντός ε" μπορεί να γίνει λιγότερο σημαντική (η κατάρα της διάστασης), και το DBSCAN μπορεί να χρειαστεί προσεκτική ρύθμιση παραμέτρων ή μπορεί να αποτύχει να βρει διαισθητικές ομάδες. Παρά αυτά, επεκτάσεις όπως το HDBSCAN αντιμετωπίζουν ορισμένα ζητήματα (όπως η μεταβαλλόμενη πυκνότητα).
|
||||
**Περιορισμοί**: Η απόδοση του DBSCAN εξαρτάται από την επιλογή κατάλληλων τιμών ε και MinPts. Μπορεί να δυσκολευτεί με δεδομένα που έχουν μεταβαλλόμενες πυκνότητες – μια ενιαία ε δεν μπορεί να φιλοξενήσει τόσο πυκνές όσο και αραιές ομάδες. Αν η ε είναι πολύ μικρή, επισημαίνει τα περισσότερα σημεία ως θόρυβο; αν είναι πολύ μεγάλη, οι ομάδες μπορεί να συγχωνευθούν λανθασμένα. Επίσης, το DBSCAN μπορεί να είναι αναποτελεσματικό σε πολύ μεγάλα σύνολα δεδομένων (αφελώς $O(n^2)$, αν και η χωρική ευρετηρίαση μπορεί να βοηθήσει). Σε χώρους χαρακτηριστικών υψηλής διάστασης, η έννοια της "απόστασης εντός ε" μπορεί να γίνει λιγότερο σημαντική (η κατάρα της διάστασης), και το DBSCAN μπορεί να χρειαστεί προσεκτική ρύθμιση παραμέτρων ή μπορεί να αποτύχει να βρει διαισθητικές ομάδες. Παρά αυτά, επεκτάσεις όπως το HDBSCAN αντιμετωπίζουν ορισμένα ζητήματα (όπως η μεταβαλλόμενη πυκνότητα).
|
||||
|
||||
<details>
|
||||
<summary>Παράδειγμα -- Ομαδοποίηση με Θόρυβο
|
||||
@ -150,7 +150,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])
|
||||
```
|
||||
Σε αυτό το απόσπασμα, ρυθμίσαμε το `eps` και το `min_samples` ώστε να ταιριάζουν με την κλίμακα των δεδομένων μας (15.0 σε μονάδες χαρακτηριστικών και απαιτώντας 5 σημεία για να σχηματίσουν ένα σύμπλεγμα). Το DBSCAN θα πρέπει να βρει 2 συμπλέγματα (τα κανονικά συμπλέγματα κυκλοφορίας) και να σηματοδοτήσει τα 5 εισαγόμενα εξωτικά σημεία ως θόρυβο. Εξάγουμε τον αριθμό των συμπλεγμάτων σε σχέση με τα σημεία θορύβου για να το επαληθεύσουμε. Σε μια πραγματική ρύθμιση, μπορεί κανείς να επαναλάβει τη διαδικασία για το ε (χρησιμοποιώντας μια ημι-γραφική προσέγγιση k-distance για να επιλέξει το ε) και το MinPts (συχνά ρυθμισμένο γύρω από τη διαστατικότητα των δεδομένων + 1 ως κανόνας) για να βρει σταθερά αποτελέσματα συμπλέγματος. Η ικανότητα να επισημαίνουμε ρητά τον θόρυβο βοηθά στη διαχωριστική ανάλυση πιθανών επιθέσεων για περαιτέρω ανάλυση.
|
||||
Σε αυτό το απόσπασμα, ρυθμίσαμε το `eps` και το `min_samples` ώστε να ταιριάζουν με την κλίμακα των δεδομένων μας (15.0 σε μονάδες χαρακτηριστικών και απαιτώντας 5 σημεία για να σχηματίσουν ένα σύμπλεγμα). Το DBSCAN θα πρέπει να βρει 2 συμπλέγματα (τα κανονικά συμπλέγματα κυκλοφορίας) και να σηματοδοτήσει τα 5 εισαγόμενα εξωτικά σημεία ως θόρυβο. Εξάγουμε τον αριθμό των συμπλεγμάτων σε σχέση με τα σημεία θορύβου για να το επαληθεύσουμε. Σε μια πραγματική ρύθμιση, μπορεί κανείς να επαναλάβει τη διαδικασία για το ε (χρησιμοποιώντας μια ημι-γραφική μέθοδο k-distance για να επιλέξει το ε) και το MinPts (συχνά ρυθμισμένο γύρω από τη διαστατικότητα των δεδομένων + 1 ως κανόνας) για να βρει σταθερά αποτελέσματα συμπλέγματος. Η ικανότητα να επισημαίνουμε ρητά το θόρυβο βοηθά στη διαχωριστική ανάλυση πιθανών επιθέσεων για περαιτέρω ανάλυση.
|
||||
|
||||
</details>
|
||||
|
||||
@ -165,7 +165,7 @@ print("Cluster labels for first 10 points:", labels[:10])
|
||||
2. **Πίνακας Συνδιακύμανσης**: Υπολογίστε τον πίνακα συνδιακύμανσης των τυποποιημένων δεδομένων για να κατανοήσετε τις σχέσεις μεταξύ των χαρακτηριστικών.
|
||||
3. **Αποσύνθεση Ιδιοτιμών**: Εκτελέστε αποσύνθεση ιδιοτιμών στον πίνακα συνδιακύμανσης για να αποκτήσετε τις ιδιοτιμές και τα ιδιοδιανύσματα.
|
||||
4. **Επιλογή Κύριων Συνιστωσών**: Ταξινομήστε τις ιδιοτιμές σε φθίνουσα σειρά και επιλέξτε τα κορυφαία K ιδιοδιανύσματα που αντιστοιχούν στις μεγαλύτερες ιδιοτιμές. Αυτά τα ιδιοδιανύσματα σχηματίζουν τον νέο χώρο χαρακτηριστικών.
|
||||
5. **Μετασχηματισμός Δεδομένων**: Προβάλλετε τα αρχικά δεδομένα στον νέο χώρο χαρακτηριστικών χρησιμοποιώντας τις επιλεγμένες κύριες συνιστώσες.
|
||||
5. **Μετασχηματισμός Δεδομένων**: Προβάλετε τα αρχικά δεδομένα στον νέο χώρο χαρακτηριστικών χρησιμοποιώντας τις επιλεγμένες κύριες συνιστώσες.
|
||||
Η PCA χρησιμοποιείται ευρέως για οπτικοποίηση δεδομένων, μείωση θορύβου και ως βήμα προεπεξεργασίας για άλλους αλγόριθμους μηχανικής μάθησης. Βοηθά στη μείωση της διαστατικότητας των δεδομένων διατηρώντας τη βασική τους δομή.
|
||||
|
||||
#### Ιδιοτιμές και Ιδιοδιανύσματα
|
||||
@ -194,7 +194,7 @@ print("Cluster labels for first 10 points:", labels[:10])
|
||||
4. **Επιλογή Κύριων Συνιστωσών**: Ταξινομήστε τις ιδιοτιμές σε φθίνουσα σειρά και επιλέξτε τα κορυφαία K ιδιοδιανύσματα που αντιστοιχούν στις μεγαλύτερες ιδιοτιμές. Αυτά τα ιδιοδιανύσματα αναπαριστούν τις κατευθύνσεις της μέγιστης διακύμανσης στα δεδομένα.
|
||||
|
||||
> [!TIP]
|
||||
> *Χρήσεις στην κυβερνοασφάλεια:* Μια κοινή χρήση της PCA στην ασφάλεια είναι η μείωση χαρακτηριστικών για ανίχνευση ανωμαλιών. Για παράδειγμα, ένα σύστημα ανίχνευσης εισβολών με 40+ μετρικές δικτύου (όπως χαρακτηριστικά NSL-KDD) μπορεί να χρησιμοποιήσει την PCA για να μειώσει σε λίγες συνιστώσες, συνοψίζοντας τα δεδομένα για οπτικοποίηση ή τροφοδοσία σε αλγόριθμους συμπλέγματος. Οι αναλυτές μπορεί να σχεδιάσουν την κυκλοφορία δικτύου στο χώρο των πρώτων δύο κύριων συνιστωσών για να δουν αν οι επιθέσεις διαχωρίζονται από την κανονική κυκλοφορία. Η PCA μπορεί επίσης να βοηθήσει στην εξάλειψη πλεοναζόντων χαρακτηριστικών (όπως τα bytes που αποστέλλονται σε σχέση με τα bytes που λαμβάνονται αν είναι συσχετισμένα) για να καταστήσει τους αλγόριθμους ανίχνευσης πιο ανθεκτικούς και ταχύτερους.
|
||||
> *Χρήσεις στην κυβερνοασφάλεια:* Μια κοινή χρήση της PCA στην ασφάλεια είναι η μείωση χαρακτηριστικών για ανίχνευση ανωμαλιών. Για παράδειγμα, ένα σύστημα ανίχνευσης εισβολών με 40+ μετρικές δικτύου (όπως χαρακτηριστικά NSL-KDD) μπορεί να χρησιμοποιήσει την PCA για να μειώσει σε λίγες συνιστώσες, συνοψίζοντας τα δεδομένα για οπτικοποίηση ή τροφοδοσία σε αλγόριθμους συμπλέγματος. Οι αναλυτές μπορεί να σχεδιάσουν την κυκλοφορία δικτύου στο χώρο των πρώτων δύο κύριων συνιστωσών για να δουν αν οι επιθέσεις διαχωρίζονται από την κανονική κυκλοφορία. Η PCA μπορεί επίσης να βοηθήσει στην εξάλειψη πλεοναστικών χαρακτηριστικών (όπως τα bytes που αποστέλλονται σε σχέση με τα bytes που λαμβάνονται αν είναι συσχετισμένα) για να καταστήσει τους αλγόριθμους ανίχνευσης πιο ανθεκτικούς και γρήγορους.
|
||||
|
||||
#### Υποθέσεις και Περιορισμοί
|
||||
|
||||
@ -231,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 μέχρι τη σύγκλιση (οι παράμετροι σταθεροποιούνται ή η βελτίωση της πιθανότητας είναι κάτω από ένα κατώφλι).
|
||||
|
||||
@ -259,7 +259,7 @@ 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 για να καλύψει μόνο μια εξαιρετική περίπτωση (αν και η κανονικοποίηση ή τα ελάχιστα όρια συνδιακύμανσης μπορούν να μετριάσουν αυτό).
|
||||
```python
|
||||
@ -280,16 +280,16 @@ 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 παρέχει έναν αρχή που βασίζεται στην ανίχνευση ανωμαλιών και επίσης αποδίδει μαλακούς συμπλέκτες που αναγνωρίζουν την αβεβαιότητα.
|
||||
Σε αυτόν τον κώδικα, εκπαιδεύουμε ένα 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 κατασκευάζει πολλά δυαδικά δέντρα απομόνωσης (τυχαία δέντρα απόφασης) που διαχωρίζουν τα δεδομένα τυχαία. Σε κάθε κόμβο ενός δέντρου, επιλέγεται ένα τυχαίο χαρακτηριστικό και επιλέγεται μια τυχαία τιμή διαχωρισμού μεταξύ του ελάχιστου και του μέγιστου αυτού του χαρακτηριστικού για τα δεδομένα σε αυτόν τον κόμβο. Αυτός ο διαχωρισμός διαιρεί τα δεδομένα σε δύο κλάδους. Το δέντρο αναπτύσσεται μέχρι κάθε σημείο να απομονωθεί στο δικό του φύλλο ή να επιτευχθεί το μέγιστο ύψος του δέντρου.
|
||||
|
||||
Η ανίχνευση ανωμαλιών πραγματοποιείται παρατηρώντας το μήκος της διαδρομής κάθε σημείου σε αυτά τα τυχαία δέντρα – ο αριθμός των διαχωρισμών που απαιτούνται για να απομονωθεί το σημείο. Διαισθητικά, οι ανωμαλίες (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 έχουν χρησιμοποιηθεί με επιτυχία στην ανίχνευση εισβολών και ανίχνευση απάτης. Για παράδειγμα, εκπαιδεύστε ένα Isolation Forest σε αρχεία καταγραφής κίνησης δικτύου που περιέχουν κυρίως κανονική συμπεριφορά; το δάσος θα παράγει σύντομες διαδρομές για περίεργη κίνηση (όπως μια IP που χρησιμοποιεί μια άγνωστη θύρα ή ένα ασυνήθιστο μοτίβο μεγέθους πακέτου), σηματοδοτώντας το για επιθεώρηση. Επειδή δεν απαιτεί επισημασμένες επιθέσεις, είναι κατάλληλο για την ανίχνευση άγνωστων τύπων επιθέσεων. Μπορεί επίσης να αναπτυχθεί σε δεδομένα σύνδεσης χρηστών για να ανιχνεύσει καταλήψεις λογαριασμών (οι ανώμαλες ώρες ή τοποθεσίες σύνδεσης απομονώνονται γρήγορα). Σε μία περίπτωση χρήσης, ένα Isolation Forest μπορεί να προστατεύσει μια επιχείρηση παρακολουθώντας μετρικές συστήματος και δημιουργώντας μια ειδοποίηση όταν ένας συνδυασμός μετρικών (CPU, δίκτυο, αλλαγές αρχείων) φαίνεται πολύ διαφορετικός (σύντομες διαδρομές απομόνωσης) από ιστορικά μοτίβα.
|
||||
|
||||
#### Υποθέσεις και Περιορισμοί
|
||||
|
||||
@ -324,7 +324,7 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
|
||||
|
||||
### t-SNE (t-Distributed Stochastic Neighbor Embedding)
|
||||
|
||||
**t-SNE** είναι μια μη γραμμική τεχνική μείωσης διαστάσεων που έχει σχεδιαστεί ειδικά για την απεικόνιση υψηλής διάστασης δεδομένων σε 2 ή 3 διαστάσεις. Μετατρέπει τις ομοιότητες μεταξύ των σημείων δεδομένων σε κοινές κατανομές πιθανοτήτων και προσπαθεί να διατηρήσει τη δομή των τοπικών γειτονιών στην προβολή χαμηλότερης διάστασης. Με απλούστερους όρους, το t-SNE τοποθετεί σημεία σε (ας πούμε) 2D έτσι ώστε παρόμοια σημεία (στον αρχικό χώρο) να βρίσκονται κοντά το ένα στο άλλο και μη παρόμοια σημεία να βρίσκονται μακριά το ένα από το άλλο με υψηλή πιθανότητα.
|
||||
**t-SNE** είναι μια μη γραμμική τεχνική μείωσης διαστάσεων που έχει σχεδιαστεί ειδικά για την απεικόνιση υψηλής διάστασης δεδομένων σε 2 ή 3 διαστάσεις. Μετατρέπει τις ομοιότητες μεταξύ των σημείων δεδομένων σε κοινές κατανομές πιθανοτήτων και προσπαθεί να διατηρήσει τη δομή των τοπικών γειτονιών στην προβολή χαμηλότερης διάστασης. Με απλούς όρους, το t-SNE τοποθετεί σημεία σε (ας πούμε) 2D έτσι ώστε παρόμοια σημεία (στον αρχικό χώρο) να βρίσκονται κοντά το ένα στο άλλο και μη παρόμοια σημεία να βρίσκονται μακριά το ένα από το άλλο με υψηλή πιθανότητα.
|
||||
|
||||
Ο αλγόριθμος έχει δύο κύριες φάσεις:
|
||||
|
||||
@ -347,7 +347,7 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
|
||||
<summary>Παράδειγμα -- Απεικόνιση Συνδέσεων Δικτύου
|
||||
</summary>
|
||||
|
||||
Θα χρησιμοποιήσουμε το t-SNE για να μειώσουμε ένα σύνολο δεδομένων πολλαπλών χαρακτηριστικών σε 2D. Για λόγους απεικόνισης, ας πάρουμε τα προηγούμενα 4D δεδομένα (τα οποία είχαν 3 φυσικές συστάδες κανονικής κυκλοφορίας) και να προσθέσουμε μερικά σημεία ανωμαλίας. Στη συνέχεια, τρέχουμε το t-SNE και (εννοιολογικά) απεικονίζουμε τα αποτελέσματα.
|
||||
Θα χρησιμοποιήσουμε το t-SNE για να μειώσουμε ένα σύνολο δεδομένων πολλαπλών χαρακτηριστικών σε 2D. Για λόγους απεικόνισης, ας πάρουμε τα προηγούμενα δεδομένα 4D (τα οποία είχαν 3 φυσικές συστάδες κανονικής κυκλοφορίας) και να προσθέσουμε μερικά σημεία ανωμαλίας. Στη συνέχεια, τρέχουμε το t-SNE και (εννοιολογικά) απεικονίζουμε τα αποτελέσματα.
|
||||
```
|
||||
```python
|
||||
# 1 ─────────────────────────────────────────────────────────────────────
|
||||
@ -431,7 +431,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>
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user