Translated ['src/AI/AI-Unsupervised-Learning-Algorithms.md'] to fr

This commit is contained in:
Translator 2025-06-08 00:48:32 +00:00
parent 4655d9828b
commit 8fac24f542

View File

@ -13,10 +13,10 @@ K-Means est un algorithme de regroupement basé sur les centroïdes qui partitio
1. **Initialisation** : Choisir K centres de cluster initiaux (centroïdes), souvent aléatoirement ou via des méthodes plus intelligentes comme k-means++
2. **Affectation** : Assigner chaque point de données au centroïde le plus proche en fonction d'une métrique de distance (par exemple, distance euclidienne).
3. **Mise à jour** : Recalculer les centroïdes en prenant la moyenne de tous les points de données assignés à chaque cluster.
4. **Répéter** : Les étapes 23 sont répétées jusqu'à ce que les affectations de cluster se stabilisent (les centroïdes ne se déplacent plus significativement).
4. **Répéter** : Les étapes 23 sont répétées jusqu'à ce que les affectations de cluster se stabilisent (les centroïdes ne se déplacent plus de manière significative).
> [!TIP]
> *Cas d'utilisation en cybersécurité :* K-Means est utilisé pour la détection d'intrusions en regroupant des événements réseau. Par exemple, des chercheurs ont appliqué K-Means au jeu de données d'intrusion KDD Cup 99 et ont constaté qu'il partitionnait efficacement le trafic en clusters normaux et d'attaque. En pratique, les analystes de sécurité peuvent regrouper des entrées de journaux ou des données de comportement des utilisateurs pour trouver des groupes d'activités similaires ; tout point qui n'appartient pas à un cluster bien formé pourrait indiquer des anomalies (par exemple, une nouvelle variante de malware formant son propre petit cluster). K-Means peut également aider à la classification des familles de malware en regroupant des binaires en fonction de profils de comportement ou de vecteurs de caractéristiques.
> *Cas d'utilisation en cybersécurité :* K-Means est utilisé pour la détection d'intrusions en regroupant des événements réseau. Par exemple, des chercheurs ont appliqué K-Means au jeu de données d'intrusion KDD Cup 99 et ont constaté qu'il partitionnait efficacement le trafic en clusters normaux et d'attaque. En pratique, les analystes de sécurité peuvent regrouper des entrées de journal ou des données de comportement des utilisateurs pour trouver des groupes d'activités similaires ; tout point qui n'appartient pas à un cluster bien formé pourrait indiquer des anomalies (par exemple, une nouvelle variante de malware formant son propre petit cluster). K-Means peut également aider à la classification des familles de malware en regroupant des binaires en fonction de profils de comportement ou de vecteurs de caractéristiques.
#### Sélection de K
Le nombre de clusters (K) est un hyperparamètre qui doit être défini avant d'exécuter l'algorithme. Des techniques comme la méthode du coude ou le score de silhouette peuvent aider à déterminer une valeur appropriée pour K en évaluant la performance du regroupement :
@ -26,7 +26,7 @@ Le nombre de clusters (K) est un hyperparamètre qui doit être défini avant d'
#### Hypothèses et limitations
K-Means suppose que **les clusters sont sphériques et de taille égale**, ce qui peut ne pas être vrai pour tous les ensembles de données. Il est sensible au placement initial des centroïdes et peut converger vers des minima locaux. De plus, K-Means n'est pas adapté aux ensembles de données avec des densités variables ou des formes non globulaires et des caractéristiques avec des échelles différentes. Des étapes de prétraitement comme la normalisation ou la standardisation peuvent être nécessaires pour garantir que toutes les caractéristiques contribuent également aux calculs de distance.
K-Means suppose que **les clusters sont sphériques et de taille égale**, ce qui peut ne pas être vrai pour tous les ensembles de données. Il est sensible à l'emplacement initial des centroïdes et peut converger vers des minima locaux. De plus, K-Means n'est pas adapté aux ensembles de données avec des densités variables ou des formes non globulaires et des caractéristiques avec des échelles différentes. Des étapes de prétraitement comme la normalisation ou la standardisation peuvent être nécessaires pour garantir que toutes les caractéristiques contribuent également aux calculs de distance.
<details>
<summary>Exemple -- Regroupement d'événements réseau
@ -71,7 +71,7 @@ Le clustering agglomératif nécessite une définition de la distance inter-clus
Le clustering hiérarchique produit un dendrogramme, une structure en arbre qui montre les relations entre les clusters à différents niveaux de granularité. Le dendrogramme peut être coupé à un niveau souhaité pour obtenir un nombre spécifique de clusters.
> [!TIP]
> *Cas d'utilisation en cybersécurité :* Le clustering hiérarchique peut organiser des événements ou des entités en un arbre pour repérer des relations. Par exemple, dans l'analyse des logiciels malveillants, le clustering agglomératif pourrait regrouper des échantillons par similarité comportementale, révélant une hiérarchie de familles et de variantes de logiciels malveillants. En sécurité réseau, on pourrait regrouper les flux de trafic IP et utiliser le dendrogramme pour voir les sous-groupes de trafic (par exemple, par protocole, puis par comportement). Comme vous n'avez pas besoin de choisir K à l'avance, c'est utile lors de l'exploration de nouvelles données pour lesquelles le nombre de catégories d'attaques est inconnu.
> *Cas d'utilisation en cybersécurité :* Le clustering hiérarchique peut organiser des événements ou des entités en un arbre pour repérer des relations. Par exemple, dans l'analyse de logiciels malveillants, le clustering agglomératif pourrait regrouper des échantillons par similarité comportementale, révélant une hiérarchie de familles et de variantes de logiciels malveillants. En sécurité réseau, on pourrait regrouper les flux de trafic IP et utiliser le dendrogramme pour voir les sous-groupes de trafic (par exemple, par protocole, puis par comportement). Comme vous n'avez pas besoin de choisir K à l'avance, c'est utile lors de l'exploration de nouvelles données pour lesquelles le nombre de catégories d'attaques est inconnu.
#### Hypothèses et Limitations
@ -81,7 +81,7 @@ Le clustering hiérarchique ne suppose pas une forme de cluster particulière et
<summary>Exemple -- Clustering Agglomératif d'Événements
</summary>
Nous allons réutiliser les données synthétiques de l'exemple K-Means (3 clusters normaux + 1 cluster d'attaque) et appliquer le clustering agglomératif. Nous illustrons ensuite comment obtenir un dendrogramme et des étiquettes de clusters.
Nous allons réutiliser les données synthétiques de l'exemple K-Means (3 clusters normaux + 1 cluster d'attaque) et appliquer le clustering agglomératif. Nous illustrons ensuite comment obtenir un dendrogramme et des étiquettes de cluster.
```python
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import linkage, dendrogram
@ -149,9 +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])
```
Dans cet extrait, nous avons ajusté `eps` et `min_samples` pour convenir à notre échelle de données (15.0 en unités de caractéristiques, et nécessitant 5 points pour former un cluster). DBSCAN devrait trouver 2 clusters (les clusters de trafic normal) et signaler les 5 valeurs aberrantes injectées comme bruit. Nous affichons le nombre de clusters par rapport aux points de bruit pour vérifier cela. Dans un cadre réel, on pourrait itérer sur ε (en utilisant une heuristique de graphique de distance k pour choisir ε) et MinPts (souvent fixé autour de la dimensionnalité des données + 1 comme règle générale) pour trouver des résultats de clustering stables. La capacité à étiqueter explicitement le bruit aide à séparer les données d'attaque potentielles pour une analyse plus approfondie.
</details>
Dans cet extrait, nous avons ajusté `eps` et `min_samples` pour convenir à notre échelle de données (15,0 en unités de caractéristiques, et nécessitant 5 points pour former un cluster). DBSCAN devrait trouver 2 clusters (les clusters de trafic normal) et signaler les 5 valeurs aberrantes injectées comme bruit. Nous affichons le nombre de clusters par rapport aux points de bruit pour vérifier cela. Dans un cadre réel, on pourrait itérer sur ε (en utilisant une heuristique de graphique de distance k pour choisir ε) et MinPts (souvent fixé autour de la dimensionnalité des données + 1 comme règle générale) pour trouver des résultats de clustering stables. La capacité à étiqueter explicitement le bruit aide à séparer les données d'attaque potentielles pour une analyse plus approfondie.
### Analyse en Composantes Principales (ACP)
@ -160,7 +158,7 @@ L'ACP est une technique de **réduction de dimensionnalité** qui trouve un nouv
Notez que cela est utile si les dimensions du jeu de données contiennent **des dépendances ou des corrélations linéaires significatives**.
L'ACP fonctionne en identifiant les composantes principales des données, qui sont les directions de variance maximale. Les étapes impliquées dans l'ACP sont :
1. **Standardisation** : Centrer les données en soustrayant la moyenne et en les mettant à l'échelle pour une variance unitaire.
1. **Standardisation** : Centrer les données en soustrayant la moyenne et en les mettant à l'échelle à une variance unitaire.
2. **Matrice de Covariance** : Calculer la matrice de covariance des données standardisées pour comprendre les relations entre les caractéristiques.
3. **Décomposition en Valeurs Propres** : Effectuer une décomposition en valeurs propres sur la matrice de covariance pour obtenir les valeurs propres et les vecteurs propres.
4. **Sélection des Composantes Principales** : Trier les valeurs propres par ordre décroissant et sélectionner les K vecteurs propres correspondants aux plus grandes valeurs propres. Ces vecteurs propres forment le nouvel espace de caractéristiques.
@ -186,7 +184,7 @@ Expliquons cela avec un exemple. Imaginez que vous avez un ensemble de données
2. **Matrice de Covariance** : Calculer la matrice de covariance des données standardisées, qui capture comment les caractéristiques (pixels) varient ensemble.
- Notez que la covariance entre deux variables (pixels dans ce cas) indique combien elles changent ensemble, donc l'idée ici est de découvrir quels pixels ont tendance à augmenter ou diminuer ensemble avec une relation linéaire.
- Par exemple, si le pixel 1 et le pixel 2 ont tendance à augmenter ensemble, la covariance entre eux sera positive.
- La matrice de covariance sera une matrice 10 000x10 000 où chaque entrée représente la covariance entre deux pixels.
- La matrice de covariance sera une matrice de 10 000x10 000 où chaque entrée représente la covariance entre deux pixels.
3. **Résoudre l'équation des valeurs propres** : L'équation des valeurs propres à résoudre est `C * v = λ * v` où C est la matrice de covariance, v est le vecteur propre, et λ est la valeur propre. Elle peut être résolue en utilisant des méthodes comme :
- **Décomposition en Valeurs Propres** : Effectuer une décomposition en valeurs propres sur la matrice de covariance pour obtenir les valeurs propres et les vecteurs propres.
- **Décomposition en Valeurs Singulières (SVD)** : Alternativement, vous pouvez utiliser la SVD pour décomposer la matrice de données en valeurs et vecteurs singuliers, ce qui peut également donner les composantes principales.
@ -197,7 +195,7 @@ Expliquons cela avec un exemple. Imaginez que vous avez un ensemble de données
#### Hypothèses et Limitations
L'ACP suppose que **les axes principaux de variance sont significatifs** c'est une méthode linéaire, donc elle capture les corrélations linéaires dans les données. Elle est non supervisée car elle utilise uniquement la covariance des caractéristiques. Les avantages de l'ACP incluent la réduction du bruit (les composants de petite variance correspondent souvent au bruit) et la décorrélation des caractéristiques. Elle est efficace sur le plan computationnel pour des dimensions modérément élevées et souvent une étape de prétraitement utile pour d'autres algorithmes (pour atténuer le fléau de la dimensionnalité). Une limitation est que l'ACP est limitée aux relations linéaires elle ne capturera pas de structures non linéaires complexes (tandis que les autoencodeurs ou t-SNE pourraient le faire). De plus, les composants de l'ACP peuvent être difficiles à interpréter en termes de caractéristiques originales (ce sont des combinaisons de caractéristiques originales). En cybersécurité, il faut être prudent : une attaque qui ne cause qu'un changement subtil dans une caractéristique à faible variance pourrait ne pas apparaître dans les principales PC (puisque l'ACP priorise la variance, pas nécessairement l'« intérêt »).
L'ACP suppose que **les axes principaux de variance sont significatifs** c'est une méthode linéaire, donc elle capture les corrélations linéaires dans les données. Elle est non supervisée car elle utilise uniquement la covariance des caractéristiques. Les avantages de l'ACP incluent la réduction du bruit (les composants de petite variance correspondent souvent au bruit) et la décorrélation des caractéristiques. Elle est efficace sur le plan computationnel pour des dimensions modérément élevées et souvent une étape de prétraitement utile pour d'autres algorithmes (pour atténuer le fléau de la dimensionnalité). Une limitation est que l'ACP est limitée aux relations linéaires elle ne capturera pas de structures non linéaires complexes (tandis que les autoencodeurs ou t-SNE pourraient le faire). De plus, les composants de l'ACP peuvent être difficiles à interpréter en termes de caractéristiques originales (ce sont des combinaisons de caractéristiques originales). En cybersécurité, il faut être prudent : une attaque qui ne cause qu'un changement subtil dans une caractéristique à faible variance pourrait ne pas apparaître dans les principales composantes (puisque l'ACP priorise la variance, pas nécessairement l'« intérêt »).
<details>
<summary>Exemple -- Réduction des Dimensions des Données Réseau
@ -223,7 +221,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])
```
Ici, nous avons pris les clusters de trafic normal précédents et avons étendu chaque point de données avec deux caractéristiques supplémentaires (paquets et erreurs) qui sont corrélées avec les octets et la durée. PCA est ensuite utilisé pour compresser les 4 caractéristiques en 2 composants principaux. Nous imprimons le ratio de variance expliquée, qui pourrait montrer que, disons, >95% de la variance est capturée par 2 composants (ce qui signifie peu de perte d'information). La sortie montre également que la forme des données passe de (1500, 4) à (1500, 2). Les premiers points dans l'espace PCA sont donnés comme exemple. En pratique, on pourrait tracer data_2d pour vérifier visuellement si les clusters sont distinguables. Si une anomalie était présente, on pourrait la voir comme un point éloigné du cluster principal dans l'espace PCA. PCA aide donc à distiller des données complexes en une forme gérable pour l'interprétation humaine ou comme entrée pour d'autres algorithmes.
Ici, nous avons pris les clusters de trafic normal précédents et avons étendu chaque point de données avec deux caractéristiques supplémentaires (paquets et erreurs) qui sont corrélées avec les octets et la durée. PCA est ensuite utilisé pour compresser les 4 caractéristiques en 2 composants principaux. Nous imprimons le ratio de variance expliquée, qui pourrait montrer que, par exemple, >95 % de la variance est capturée par 2 composants (ce qui signifie peu de perte d'information). La sortie montre également que la forme des données passe de (1500, 4) à (1500, 2). Les premiers points dans l'espace PCA sont donnés comme exemple. En pratique, on pourrait tracer data_2d pour vérifier visuellement si les clusters sont distinguables. Si une anomalie était présente, on pourrait la voir comme un point éloigné du cluster principal dans l'espace PCA. PCA aide donc à distiller des données complexes en une forme gérable pour l'interprétation humaine ou comme entrée pour d'autres algorithmes.
</details>
@ -254,13 +252,13 @@ où :
Le résultat est un ensemble de distributions gaussiennes qui modélisent collectivement la distribution globale des données. Nous pouvons utiliser le GMM ajusté pour le clustering en assignant chaque point au gaussien avec la plus haute probabilité, ou conserver les probabilités pour l'incertitude. On peut également évaluer la vraisemblance de nouveaux points pour voir s'ils s'intègrent dans le modèle (utile pour la détection d'anomalies).
> [!TIP]
> *Cas d'utilisation en cybersécurité :* GMM peut être utilisé pour la détection d'anomalies en modélisant la distribution des données normales : tout point avec une probabilité très faible sous le mélange appris est signalé comme une anomalie. Par exemple, vous pourriez entraîner un GMM sur des caractéristiques de trafic réseau légitime ; une connexion d'attaque qui ne ressemble à aucun cluster appris aurait une faible vraisemblance. Les GMM sont également utilisés pour regrouper des activités où les clusters pourraient avoir des formes différentes par exemple, regrouper les utilisateurs par profils de comportement, où les caractéristiques de chaque profil pourraient être de type gaussien mais avec leur propre structure de variance. Un autre scénario : dans la détection de phishing, les caractéristiques des e-mails légitimes pourraient former un cluster gaussien, le phishing connu un autre, et de nouvelles campagnes de phishing pourraient apparaître soit comme un gaussien séparé soit comme des points de faible vraisemblance par rapport au mélange existant.
> *Cas d'utilisation en cybersécurité :* GMM peut être utilisé pour la détection d'anomalies en modélisant la distribution des données normales : tout point avec une probabilité très faible sous le mélange appris est signalé comme une anomalie. Par exemple, vous pourriez entraîner un GMM sur des caractéristiques de trafic réseau légitime ; une connexion d'attaque qui ne ressemble à aucun cluster appris aurait une faible vraisemblance. Les GMM sont également utilisés pour regrouper des activités où les clusters peuvent avoir des formes différentes par exemple, regrouper des utilisateurs par profils de comportement, où les caractéristiques de chaque profil peuvent être de type gaussien mais avec leur propre structure de variance. Un autre scénario : dans la détection de phishing, les caractéristiques des e-mails légitimes pourraient former un cluster gaussien, le phishing connu un autre, et de nouvelles campagnes de phishing pourraient apparaître soit comme un gaussien séparé, soit comme des points de faible vraisemblance par rapport au mélange existant.
#### Hypothèses et Limitations
GMM est une généralisation de K-Means qui incorpore la covariance, de sorte que les clusters peuvent être ellipsoïdaux (pas seulement sphériques). Il gère des clusters de tailles et de formes différentes si la covariance est complète. Le clustering doux est un avantage lorsque les frontières des clusters sont floues par exemple, en cybersécurité, un événement pourrait avoir des traits de plusieurs types d'attaques ; GMM peut refléter cette incertitude avec des probabilités. GMM fournit également une estimation de densité probabiliste des données, utile pour détecter des valeurs aberrantes (points avec une faible vraisemblance sous tous les composants du mélange).
GMM est une généralisation de K-Means qui incorpore la covariance, de sorte que les clusters peuvent être ellipsoïdaux (pas seulement sphériques). Il gère des clusters de tailles et de formes différentes si la covariance est complète. Le clustering doux est un avantage lorsque les frontières des clusters sont floues par exemple, en cybersécurité, un événement peut avoir des traits de plusieurs types d'attaques ; GMM peut refléter cette incertitude avec des probabilités. GMM fournit également une estimation de densité probabiliste des données, utile pour détecter des valeurs aberrantes (points avec une faible vraisemblance sous tous les composants du mélange).
En revanche, GMM nécessite de spécifier le nombre de composants K (bien qu'on puisse utiliser des critères comme BIC/AIC pour le sélectionner). EM peut parfois converger lentement ou vers un optimum local, donc l'initialisation est importante (souvent, on exécute EM plusieurs fois). Si les données ne suivent pas réellement un mélange de gaussiennes, le modèle peut être un mauvais ajustement. Il y a aussi un risque qu'un gaussien se rétrécisse pour ne couvrir qu'une valeur aberrante (bien que la régularisation ou les limites de covariance minimales puissent atténuer cela).
En revanche, GMM nécessite de spécifier le nombre de composants K (bien qu'on puisse utiliser des critères comme BIC/AIC pour le sélectionner). EM peut parfois converger lentement ou vers un optimum local, donc l'initialisation est importante (souvent, on exécute EM plusieurs fois). Si les données ne suivent pas réellement un mélange de gaussiennes, le modèle peut être un mauvais ajustement. Il y a aussi un risque qu'une gaussienne se rétrécisse pour ne couvrir qu'une valeur aberrante (bien que la régularisation ou les limites de covariance minimales puissent atténuer cela).
<details>
@ -284,11 +282,11 @@ 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)
```
Dans ce code, nous entraînons un GMM avec 3 Gaussiennes sur le trafic normal (en supposant que nous connaissons 3 profils de trafic légitime). Les moyennes et covariances imprimées décrivent ces clusters (par exemple, une moyenne pourrait être autour de [50,500] correspondant au centre d'un cluster, etc.). Nous testons ensuite une connexion suspecte [duration=200, bytes=800]. Le predict_proba donne la probabilité que ce point appartienne à chacun des 3 clusters nous nous attendrions à ce que ces probabilités soient très faibles ou fortement biaisées puisque [200,800] se situe loin des clusters normaux. Le score global score_samples (log-vraisemblance) est imprimé ; une valeur très basse indique que le point ne s'adapte pas bien au modèle, le signalant comme une anomalie. En pratique, on pourrait définir un seuil sur la log-vraisemblance (ou sur la probabilité maximale) pour décider si un point est suffisamment peu probable pour être considéré comme malveillant. GMM fournit donc une méthode fondée pour faire de la détection d'anomalies et produit également des clusters souples qui reconnaissent l'incertitude.
Dans ce code, nous entraînons un GMM avec 3 Gaussiennes sur le trafic normal (en supposant que nous connaissons 3 profils de trafic légitime). Les moyennes et covariances imprimées décrivent ces clusters (par exemple, une moyenne pourrait être autour de [50,500] correspondant au centre d'un cluster, etc.). Nous testons ensuite une connexion suspecte [duration=200, bytes=800]. Le predict_proba donne la probabilité que ce point appartienne à chacun des 3 clusters nous nous attendrions à ce que ces probabilités soient très faibles ou fortement biaisées puisque [200,800] se situe loin des clusters normaux. Le score global score_samples (log-vraisemblance) est imprimé ; une valeur très basse indique que le point ne correspond pas bien au modèle, le signalant comme une anomalie. En pratique, on pourrait définir un seuil sur la log-vraisemblance (ou sur la probabilité maximale) pour décider si un point est suffisamment peu probable pour être considéré comme malveillant. GMM fournit donc une méthode fondée pour faire de la détection d'anomalies et produit également des clusters souples qui reconnaissent l'incertitude.
### Isolation Forest
**Isolation Forest** est un algorithme d'anomalie basé sur l'ensemble, fondé sur l'idée d'isoler aléatoirement des points. Le principe est que les anomalies sont rares et différentes, donc elles sont plus faciles à isoler que les points normaux. Un Isolation Forest construit de nombreux arbres d'isolation binaires (arbres de décision aléatoires) qui partitionnent les données de manière aléatoire. À chaque nœud d'un arbre, une caractéristique aléatoire est sélectionnée et une valeur de séparation aléatoire est choisie entre le min et le max de cette caractéristique pour les données dans ce nœud. Cette séparation divise les données en deux branches. L'arbre est développé jusqu'à ce que chaque point soit isolé dans sa propre feuille ou qu'une hauteur d'arbre maximale soit atteinte.
**Isolation Forest** est un algorithme d'anomalie basé sur l'idée d'isoler aléatoirement des points. Le principe est que les anomalies sont rares et différentes, donc elles sont plus faciles à isoler que les points normaux. Un Isolation Forest construit de nombreux arbres d'isolation binaires (arbres de décision aléatoires) qui partitionnent les données de manière aléatoire. À chaque nœud d'un arbre, une caractéristique aléatoire est sélectionnée et une valeur de séparation aléatoire est choisie entre le min et le max de cette caractéristique pour les données dans ce nœud. Cette séparation divise les données en deux branches. L'arbre est développé jusqu'à ce que chaque point soit isolé dans sa propre feuille ou qu'une hauteur d'arbre maximale soit atteinte.
La détection d'anomalies est effectuée en observant la longueur du chemin de chaque point dans ces arbres aléatoires le nombre de séparations nécessaires pour isoler le point. Intuitivement, les anomalies (valeurs aberrantes) tendent à être isolées plus rapidement car une séparation aléatoire est plus susceptible de séparer une valeur aberrante (qui se trouve dans une région sparse) qu'un point normal dans un cluster dense. L'Isolation Forest calcule un score d'anomalie à partir de la longueur moyenne du chemin sur tous les arbres : chemin moyen plus court → plus anormal. Les scores sont généralement normalisés entre [0,1] où 1 signifie très probablement une anomalie.
@ -297,7 +295,7 @@ La détection d'anomalies est effectuée en observant la longueur du chemin de c
#### Hypothèses et Limitations
**Avantages** : L'Isolation Forest ne nécessite pas d'hypothèse de distribution ; il cible directement l'isolement. Il est efficace sur des données de haute dimension et de grands ensembles de données (complexité linéaire $O(n\log n)$ pour construire la forêt) puisque chaque arbre isole des points avec seulement un sous-ensemble de caractéristiques et de séparations. Il tend à bien gérer les caractéristiques numériques et peut être plus rapide que les méthodes basées sur la distance qui pourraient être $O(n^2)$. Il donne également automatiquement un score d'anomalie, vous pouvez donc définir un seuil pour les alertes (ou utiliser un paramètre de contamination pour décider automatiquement d'un seuil basé sur une fraction d'anomalie attendue).
**Avantages** : L'Isolation Forest ne nécessite pas d'hypothèse de distribution ; il cible directement l'isolement. Il est efficace sur des données de haute dimension et de grands ensembles de données (complexité linéaire $O(n\log n)$ pour construire la forêt) puisque chaque arbre isole des points avec seulement un sous-ensemble de caractéristiques et de séparations. Il tend à bien gérer les caractéristiques numériques et peut être plus rapide que les méthodes basées sur la distance qui pourraient être $O(n^2)$. Il donne également automatiquement un score d'anomalie, vous pouvez donc définir un seuil pour les alertes (ou utiliser un paramètre de contamination pour décider automatiquement d'un seuil basé sur une fraction d'anomalies attendue).
**Limitations** : En raison de sa nature aléatoire, les résultats peuvent varier légèrement entre les exécutions (bien qu'avec suffisamment d'arbres, cela soit mineur). Si les données contiennent beaucoup de caractéristiques non pertinentes ou si les anomalies ne se différencient pas fortement dans une caractéristique, l'isolement pourrait ne pas être efficace (des séparations aléatoires pourraient isoler des points normaux par chance cependant, la moyenne de nombreux arbres atténue cela). De plus, l'Isolation Forest suppose généralement que les anomalies sont une petite minorité (ce qui est généralement vrai dans les scénarios de cybersécurité).
@ -305,7 +303,7 @@ La détection d'anomalies est effectuée en observant la longueur du chemin de c
<summary>Exemple -- Détection des valeurs aberrantes dans les journaux réseau
</summary>
Nous utiliserons l'ensemble de données de test précédent (qui contient des points normaux et quelques points d'attaque) et exécuterons un Isolation Forest pour voir s'il peut séparer les attaques. Nous supposerons que nous nous attendons à ce que ~15 % des données soient anormales (à des fins de démonstration).
Nous utiliserons l'ensemble de données de test précédent (qui contient des points normaux et quelques points d'attaque) et exécuterons un Isolation Forest pour voir s'il peut séparer les attaques. Nous supposerons que nous nous attendons à ce que ~15% des données soient anormales (pour la démonstration).
```python
from sklearn.ensemble import IsolationForest
@ -321,13 +319,13 @@ 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])
```
Dans ce code, nous instancions `IsolationForest` avec 100 arbres et définissons `contamination=0.15` (ce qui signifie que nous nous attendons à environ 15 % d'anomalies ; le modèle fixera son seuil de score de manière à ce que ~15 % des points soient signalés). Nous l'ajustons sur `X_test_if` qui contient un mélange de points normaux et d'attaques (note : normalement, vous ajusteriez sur des données d'entraînement et utiliseriez ensuite predict sur de nouvelles données, mais ici, à des fins d'illustration, nous ajustons et prédisons sur le même ensemble pour observer directement les résultats).
Dans ce code, nous instancions `IsolationForest` avec 100 arbres et définissons `contamination=0.15` (ce qui signifie que nous nous attendons à environ 15 % d'anomalies ; le modèle fixera son seuil de score de sorte qu'environ 15 % des points soient signalés). Nous l'ajustons sur `X_test_if` qui contient un mélange de points normaux et d'attaques (note : normalement, vous ajusteriez sur des données d'entraînement et utiliseriez ensuite predict sur de nouvelles données, mais ici, à des fins d'illustration, nous ajustons et prédisons sur le même ensemble pour observer directement les résultats).
La sortie montre les étiquettes prédites pour les 20 premiers points (où -1 indique une anomalie). Nous imprimons également combien d'anomalies ont été détectées au total et quelques exemples de scores d'anomalie. Nous nous attendrions à ce qu'environ 18 des 120 points soient étiquetés -1 (puisque la contamination était de 15 %). Si nos 20 échantillons d'attaque sont vraiment les plus éloignés, la plupart d'entre eux devraient apparaître dans ces prédictions -1. Le score d'anomalie (la fonction de décision de l'Isolation Forest) est plus élevé pour les points normaux et plus bas (plus négatif) pour les anomalies nous imprimons quelques valeurs pour voir la séparation. En pratique, on pourrait trier les données par score pour voir les principaux points aberrants et les examiner. L'Isolation Forest fournit donc un moyen efficace de filtrer de grandes données de sécurité non étiquetées et de sélectionner les instances les plus irrégulières pour une analyse humaine ou un examen automatisé supplémentaire.
### t-SNE (t-Distributed Stochastic Neighbor Embedding)
**t-SNE** est une technique de réduction de dimensionnalité non linéaire spécifiquement conçue pour visualiser des données de haute dimension dans 2 ou 3 dimensions. Elle convertit les similarités entre les points de données en distributions de probabilité conjointe et essaie de préserver la structure des voisinages locaux dans la projection de dimension inférieure. En termes plus simples, t-SNE place des points dans (disons) 2D de sorte que des points similaires (dans l'espace original) se retrouvent proches les uns des autres et des points dissemblables se retrouvent éloignés avec une forte probabilité.
**t-SNE** est une technique de réduction de dimensionnalité non linéaire spécifiquement conçue pour visualiser des données de haute dimension dans 2 ou 3 dimensions. Elle convertit les similarités entre les points de données en distributions de probabilité conjointe et essaie de préserver la structure des voisinages locaux dans la projection de dimension inférieure. En termes plus simples, t-SNE place des points dans (par exemple) 2D de sorte que des points similaires (dans l'espace original) se retrouvent proches les uns des autres et des points dissemblables se retrouvent éloignés avec une forte probabilité.
L'algorithme a deux étapes principales :
@ -338,7 +336,7 @@ L'algorithme a deux étapes principales :
Le résultat est souvent un nuage de points visuellement significatif où les clusters dans les données deviennent apparents.
> [!TIP]
> *Cas d'utilisation en cybersécurité :* t-SNE est souvent utilisé pour **visualiser des données de sécurité de haute dimension pour une analyse humaine**. Par exemple, dans un centre d'opérations de sécurité, les analystes pourraient prendre un ensemble de données d'événements avec des dizaines de caractéristiques (numéros de port, fréquences, comptes d'octets, etc.) et utiliser t-SNE pour produire un graphique 2D. Les attaques pourraient former leurs propres clusters ou se séparer des données normales dans ce graphique, les rendant plus faciles à identifier. Il a été appliqué à des ensembles de données de logiciels malveillants pour voir les regroupements de familles de logiciels malveillants ou à des données d'intrusion réseau où différents types d'attaques se regroupent distinctement, guidant une enquête plus approfondie. Essentiellement, t-SNE fournit un moyen de voir la structure dans les données cybernétiques qui serait autrement incompréhensible.
> *Cas d'utilisation en cybersécurité :* t-SNE est souvent utilisé pour **visualiser des données de sécurité de haute dimension pour une analyse humaine**. Par exemple, dans un centre d'opérations de sécurité, les analystes pourraient prendre un ensemble de données d'événements avec des dizaines de caractéristiques (numéros de port, fréquences, comptes d'octets, etc.) et utiliser t-SNE pour produire un graphique en 2D. Les attaques pourraient former leurs propres clusters ou se séparer des données normales dans ce graphique, les rendant plus faciles à identifier. Il a été appliqué à des ensembles de données de logiciels malveillants pour voir les regroupements de familles de logiciels malveillants ou à des données d'intrusion réseau où différents types d'attaques se regroupent distinctement, guidant une enquête plus approfondie. Essentiellement, t-SNE fournit un moyen de voir la structure dans les données cybernétiques qui serait autrement incompréhensible.
#### Hypothèses et limitations
@ -350,7 +348,7 @@ Cependant, t-SNE est computationnellement plus lourd (environ $O(n^2)$) donc il
<summary>Exemple -- Visualisation des connexions réseau
</summary>
Nous allons utiliser t-SNE pour réduire un ensemble de données multi-caractéristiques à 2D. À titre d'illustration, prenons les données 4D précédentes (qui avaient 3 clusters naturels de trafic normal) et ajoutons quelques points d'anomalie. Nous exécutons ensuite t-SNE et (conceptuellement) visualisons les résultats.
Nous allons utiliser t-SNE pour réduire un ensemble de données multi-caractéristiques en 2D. À titre d'illustration, prenons les données 4D précédentes (qui avaient 3 clusters naturels de trafic normal) et ajoutons quelques points d'anomalie. Nous exécutons ensuite t-SNE et (conceptuellement) visualisons les résultats.
```python
# 1 ─────────────────────────────────────────────────────────────────────
# Create synthetic 4-D dataset
@ -433,7 +431,7 @@ plt.legend()
plt.tight_layout()
plt.show()
```
Ici, nous avons combiné notre précédent ensemble de données normal en 4D avec une poignée de valeurs aberrantes extrêmes (les valeurs aberrantes ont une caractéristique (“durée”) définie très haut, etc., pour simuler un modèle étrange). Nous exécutons t-SNE avec une perplexité typique de 30. Les données de sortie data_2d ont une forme (1505, 2). Nous ne tracerons en fait pas dans ce texte, mais si nous le faisions, nous nous attendrions à voir peut-être trois clusters serrés correspondant aux 3 clusters normaux, et les 5 valeurs aberrantes apparaissant comme des points isolés loin de ces clusters. Dans un flux de travail interactif, nous pourrions colorer les points par leur étiquette (normal ou quel cluster, contre anomalie) pour vérifier cette structure. Même sans étiquettes, un analyste pourrait remarquer ces 5 points se trouvant dans un espace vide sur le graphique 2D et les signaler. Cela montre comment t-SNE peut être un puissant outil d'aide à la détection visuelle d'anomalies et à l'inspection des clusters dans les données de cybersécurité, complétant les algorithmes automatisés ci-dessus.
Ici, nous avons combiné notre précédent ensemble de données normal en 4D avec une poignée de valeurs aberrantes extrêmes (les valeurs aberrantes ont une caractéristique (“durée”) réglée très haut, etc., pour simuler un modèle étrange). Nous exécutons t-SNE avec une perplexité typique de 30. Les données de sortie data_2d ont une forme (1505, 2). Nous ne tracerons en fait pas dans ce texte, mais si nous le faisions, nous nous attendrions à voir peut-être trois clusters serrés correspondant aux 3 clusters normaux, et les 5 valeurs aberrantes apparaissant comme des points isolés loin de ces clusters. Dans un flux de travail interactif, nous pourrions colorer les points par leur étiquette (normal ou quel cluster, contre anomalie) pour vérifier cette structure. Même sans étiquettes, un analyste pourrait remarquer ces 5 points se trouvant dans un espace vide sur le graphique 2D et les signaler. Cela montre comment t-SNE peut être un puissant outil d'aide à la détection visuelle d'anomalies et à l'inspection des clusters dans les données de cybersécurité, complétant les algorithmes automatisés ci-dessus.
</details>