Vous êtes sur la page 1sur 39

Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Chapitre II –
Conception de Modèles de Clustering
et classification pour la détection
d’intrusions
II.1. Introduction

Ce chapitre est consacré à une description détaillée de la présentation de nos


modèles obtenus par la technique de Clustering et classification appliquée à la détection
d’intrusions et à l’étude de chaque partie afin d’élaborer des outils de détection efficaces, en
identifiant les faux positifs et les faux négatifs.

Dans ce qui suit, nous présentons tout d’abord le DataSet que nous avons considéré,
l’architecture générale de notre modèle. Ensuite, nous présentons notre premier modèle basé
sur la technique de Clustering k-means classique. Puis, nous proposons un deuxième modèle k-
means amélioré, nommé Modèle A, et enfin notre un troisième modèle qui est k-means
amélioré avec seuils de tolérance, nommé Modèle B.

II.2. Description du DataSet


KDD (Knowledge Discovery in Database) est un processus d’extraction des
connaissances à partir des données, il permet le stockage, la préparation et l’analyse des
données en utilisant de nombreuses techniques afin d’extraire les connaissances et les évaluer.

Nous avons considéré le DataSet NSL KDD 2009, qui est une base contenant les
connaissances extraites à partir de processus de KDD. Ces caractéristiques sont dévoilées sur la
Figure II.1 suivante :
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Figure II.1. – Les caractéristiques du DataSet KDD9

La source est de « https://www.unb.ca/cic/datasets/nsl.html »


Le nombre d'enregistrements (que nous appelons instances) du DataSet est de 22545, dont
la première ligne représente les champs.
Le nombre d'enregistrement dont la classe est étiquetée « Normal » du DataSet est de 9711
correspondant à 43,07% sur un total de 22544 ; et le nombre d'enregistrement dont la
classe étiquetée « Anomaly » du DataSet est de 12833 correspondant à 56,92 sur un total
de 22544, comme décrites sur le graphe II.1 suivant :

Graphe II.1 – Les pourcentages des classes du DataSet KDD9

Dans notre conception nous utilisons deux bases :


* Test : Dataser_test=20% c.-à-d. 4509 instances sur un total de 22544
* Train : Dataser_train=80% c.-à-d. avec 18035 instances sur un total de 22544
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Ce DataSet contient 42 attributs, présentés dans la Figure II.2 suivante :

Figure II.2 - Les attributs du DataSet KDD9

Le DataSet est un ensemble d’instances (individus), où chaque instance est une collection
d’attributs. Nous présentons quelques exemples d’instances comme suit :

Exemple1 :
0,tcp,private,REJ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,10,0.00,0.00,1.00,1.00,0.04,0.06,
0.00,255,10,0.04,0.06,0.00,0.00,0.00,0.00,1.00,1.00,anomaly

Exemple2 :
2,tcp,ftp_data,SF,12983,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00
,0.00,134,86,0.61,0.04,0.61,0.02,0.00,0.00,0.00,0.00,normal.

II.3 Principe de base de notre contribution


Dans ce projet, nous proposons trois approches différentes utilisant l’algorithme de
Clustering K-means pour la détection d’intrusions. L’objectif est de comptabiliser et
d’identifier les paquets du réseau anodins, qui ne consistent aucune menace réelle mais
détectés comme tentative d'intrusion et les paquets du réseau représentant des tentatives
d'intrusion non détectées, c’est-à-dire minimiser les "faux positif " et "faux négatif ".

Comme le montre la Figure II.3 (ci-dessous), nous proposons tout d’abord le


«modèle K-means» puis, le «modèle A» basé sur le concept de Clustering k-means avec
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

amélioration, ensuite le «modèle B» qui est un algorithme k-means amélioré et avec seuils de
tolérance.

Figure II.3 -Technique de Clustering et classification appliquée à la détection


d’intrusions par le modèle K-means, K-means amélioré et
K-means amélioré avec seuils de tolérance

II.4 Modèles proposés


Dans cette section, nous présentons les trois modèles proposés pour la détection
d’intrusions.

II.4.1 Modèle K-means pour la détection d’intrusion


Il y a lieu de rappeler que K-means ou l'algorithme des k-moyennes est un
algorithme itératif de partitionnement de données. Le but principal est de diviser des instances
en K partitions (dites clusters) dans lesquelles chaque instance appartient à la partition avec la
moyenne la plus proche. Aussi, les détails de cette méthode est dans le chapitre précèdent sur le
point II.3.3 (l’Algorithme de Partitionnement K-Means)

II.4.1.2 Principe du Modèle K-means pour la détection d’intrusion

Le principe de ce modèle est d’adapté l’algorithme K-means au problème de


Clustering pour la détection d’intrusions. Pour ce faire, nous avons créé un algorithme qui
permet de faire une classification (Clustering) en K groupes, utilisant le critère de la distance
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

minimale (l’objet le plus proche). Pour cela nous utilisons la distance euclidienne. Aussi, nous
devons choisir pour une première fois K instances du DataSet aléatoirement, représentant ainsi,
les centres de gravitées de nos K clusters. Ensuite, pour chaque instance (objet), calculer la
distance de chacune avec les K centroides et affecter chacune au cluster (groupe) le plus
proches, puis recalculer leurs centroides.

Ce dernier est un vecteur qui représente le centre de gravité d’une classe, ces
cordonnées sont égales à la somme des cordonnées de même classe divisée par le nombre
d’élément de cette classe (dans notre cas nous avons toujours deux centroides). La
classification se fait sur plusieurs itérations jusqu’à ce que nous trouvions l’état stable où, le
résultat de classement doit être égal à celle-ci de l’itération qui précède.

En conséquence, nous devons spécifier le label de chaque cluster, dans notre cas
ANOMALY ou NORMAL. L’affectation de ces derniers revient à voir la classe majoritaire de
chaque cluster. Et enfin, évaluer notre modèle par le calcule et l’analyse des performances.

A noté que, suite à plusieurs exécutions et essais qui ont été réalisés sur le Modèle
A ( qui sera présenté en détail dans la session suivante), le nombre de cluster retenu est égale à
9.
Autrement dit, le principe de notre premier modèle suit les étapes suivantes :

- Introduire K égale à 9
- Choisir aléatoirement K instances qui représentent les centres de gravité des clusters
(nommé centroïd).
- Exécuter l’algorithme M-means sur le DataSet, ce qui revient à faire pour chaque
instance du DataSet
Calculer la distance (euclidienne) entre chaque instance et les K centres de
gravité.
Affecter l’instance au cluster dans lequel la distance par apport a son centre
de gravité est la minimale (le centre de gravité le plus proche).
Recalculer le centre de gravité de chaque cluster jusqu’à stabilisation des
centres de gravité
- Préciser lequel de ces clusters et Anomaly ou Normal (par classe majoritaire), c’est-à-
dire chaque cluster sera étiqueté par les instances de la classe majoritaire)
- Evaluer le résultat : calculer la Matrice de Confusion et l’Accuracy
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Le schéma présenté sur la figure II.4 suivante, décrit en détail l’approche adoptée :

Figure II.4 – Description de l’approche du modèle K-means pour la détection d’intrusion

II.4.1.2 Présentation du Pseudocode du Modèle K-means pour la détection d’intrusion

Afin d’adapter l’algorithme K-means au problème de Clustering pour la détection


d’intrusions, nous avons généré le pseudocode suivant :
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Algorithme II.1 : Pseudocode Modèle K-means pour la détection d’intrusion


Entrée
- K=9 (le nombre de cluster à former)
- Le DataSet
DEBUT
- Déclarer et initialiser la matrice de donné
- sauvegarde du label original de chacun des instances (anomaly ou normal) dans un
vecteur original_Class (sera utiliser lors de l’évaluation des résultats)
- Choisir aléatoirement K instances qui représentent les centres de gravité des clusters
(nommé centroïd).
- Initialiser le vecteur cluster par les K instances (ou individus) choisis
- Calculer le centre de gravité global, par la formule suivante :

N : le nombre d’individu, m : la taille de l’individu (nombre d’attribut)


var : un élément d’un individu (attribut)
- REPETER
- Calculer la distance entre chaque individu de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯
- Affecter l’instance au cluster dans lequel la distance par apport a son centre
de gravité est la minimale (le centre de gravité le plus proche).
- Recalculer le centre de gravité de chaque cluster et modifier le centroid, ce
qui revient à mettre à jour (réaffecter les nouvelles valeurs) les vecteurs
clusters.
Nous utilisons la formule suivante :

N : le nombre d’instance du cluster i, m : la taille de l’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
JUSQU‘A stabilisation des centres de gravité
- spécifier le cluster d’Anomaly et le cluster Normal (par classe majoritaire)
- Evaluer le résultat : calculer la Matrice de Confusion et l’Accuracy :
POUR chaque instance de la Base TEST FAIRE
- SI le label de l’instance = son label initial ALORS
Nb_Bien_Classée_A = Nb_Bien_Classée_A +1
SINON
- Nb_Mal_Classée_A = Nb_Mal_Classée_A +1
- SI label initial = ’’Normal’’ ALORS Nb_faux_négatif_A=
Nb_faux_négatif_A+1
SINON Nb_faux_positif_A= Nb_faux_positif_A+1
FINSI
FINSI
FAIT
FIN.

Algorithme II.1 – Pseudocode Modèle K-means pour la détection


d’intrusion
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

NB : il faut sauvegarder les variables : Nb_Bien_Classée, Nb_Mal_Classée, Nb_faux_positif


correspondant aux attaques non réelles et Nb_faux_négatif correspond aux attaques réelles
non détectée (pour comparer les modèles).

II.4.2 Modèle A : K-means amélioré pour la détection d’intrusion

II.4.2.1 Principe du Modèle A

Le principe de ce modèle est d’adapter l’algorithme de Clustering K-means au


problème de la détection d’intrusions vu précédemment mais avec des améliorations et par
fixation du paramètre K (recherche du meilleur K), et allons plus sur les détails des instances
(leurs classe initiale), en identifiant les faux positifs et les faux négatifs. Pour ce faire, nous
proposons les étapes suivantes :

- Il faut séparer les instances de Test environ 10 à 20% de la base Training dans un
fichier à part. Cette base de Test doit contenir les paquets du réseau c’est-à-dire les
instances avec des labels « Normal » et les « Anomaly »
- Puis éclater la Base Training en deux fichiers différents, de telles sortes que le fichier1
ne doit contenir que les instances « Normal » et le fichier2 que les instances
« Anomaly ». Nous avons procédé de cette manière dans le but de donner une
signification correcte à nos clusters. Ceci veut dire le fichier1 va nous former le cluster
des instances normal alors que le fichier2 va nous construire le deuxième cluster des
instances jugées anormal.
- Exécuter l’algorithme M-means séparément, sur le fichier1 et sur le fichier2. Noter que
le nombre de cluster choisi pour fichier1 doit être identique pour fichier2 (le même K)

- Après, pour chaque instance de la Base TEST il faut :

Calculer la distance entre chaque instance et les K*2 centres de gravité


trouvés, c’est-à-dire les K centres de gravité de fichier1 et les K centres de
gravité de fichier2.
Prendre la distance minimale parmi les K*2 distances calculées. Puis,
comparer le label de l’instance de test par rapport au labelle de la classe du
centre de gravité Ki dans la distance minimale
Si c’est le même label alors l’instance (le paquet) est bien classée donc
Nb_Bien_Classée = Nb_bien_Classée +1 sinon Nb_Mal_Classée =
Nb_Mal_Classée +1
Identifier parmi le Nb_Mal_Classée, selon le label du cluster dont il est
affecté, le nombre des faux positif et des faux négatifs.
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Il faut garder les variables : Nb_Bien_Classée, Nb_Mal_Classée,


Nb_faux_positif correspondant aux attaques non réelles et Nb_faux_négatif
correspond aux attaques réelles non détectée. Ceci nous permettra de faire
une étude comparative entre nos Modèles.

Le schéma présenté sur la figure II.5 suivante décrit en détail l’approche adoptée
dans ce modèle.
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Figure II.5 – Description de l’approche du modèle A


II.4.2.2 Présentation du Pseudocode du Modèle A

Nous avons opté pour le pseudocode suivant :

Algorithme II.2 : Pseudocode Modèle A

Entrée
- K (nombre de cluster à former)
- Le DataSet

DEBUT
- Déclarer et initialiser la matrice de donné
- Séparer les instances de Test 20% de la base Training dans des matrices de données,
respectivement, Test et train.
- Diviser la matrices de données Train en deux sous matrice différentes M1 et M2, de
telles sortes que le M1 contient que les instances « Normal » et le M2 les instances
« Anomaly »
- Lancer K-means pour matrice de donnée M1
Choisir aléatoirement K instances (K lignes de la matrice de données M1) qui
représentent les centres de gravité des clusters (nommé centroïd).
Initialiser le vecteur clusters_M1 par les K individus(ou instances) choisis
Calculer le centre de gravité global, par la formule suivante :

N : le nombre d’instance
m : la taille de l’instance (nombre d’attribut)
var : un élément d’une instance (attribut)

REPETER
- Calculer la distance entre chaque instance de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯

- Affecter l’instance au cluster dans lequel la distance par apport a son centre
de gravité est la minimale (le centre de gravité le plus proche).

- Recalculer le centre de gravité de chaque cluster et modifier le centroid, ce


qui revient à mettre à jour (réaffecter les nouvelles valeurs) le vecteur
clusters_M1.
Nous utilisons la formule suivante :

N : le nombre d’instance du cluster i


m : la taille de d’instance (nombre d’attribut)
var : un élément d’une instance (attribut)
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

JUSQU‘A stabilisation des centres de gravité


- Lancer K-means pour matrice de donnée M2
Choisir aléatoirement K instances (K lignes de la matrice de données M2) qui
représentent les centres de gravité des clusters (nommé centroïd).
Initialiser le vecteur clusters_M2 par les K instances (ou individus) choisis
Calculer le centre de gravité global, par la formule suivante :

N : le nombre d’instance, m : la taille de l’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
REPETER
- Calculer la distance entre chaque individu de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯
- Affecter d’instance au cluster dans lequel la distance par apport a son centre de
gravité est la minimale (le centre de gravité le plus proche).
- Recalculer le centre de gravité de chaque cluster et modifier le centroid, ce
qui revient à mettre à jour (réaffecter les nouvelles valeurs) le vecteur
clusters_M2.
Nous utilisons la formule suivante :

N : le nombre d’instance du cluster i, m : la taille de l’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
JUSQU‘A stabilisation des centres de gravité
- Initialiser à zéro les variables : Nb_Bien_Classée_A, Nb_Mal_Classée_A,
Nb_faux_négatif_A et Nb_faux_positif_A
- POUR chaque instance de la Base TEST FAIRE
- Calculer la distance entre chaque instance de la matrice de donnée et tous les
centres de gravités locaux, de clusters_M1 et de clusters_M2 en calculant la
distance euclidienne par la formule suivante :
D(X,Y)= ² ² ⋯
-Designer l’instance au cluster dans lequel la distance par apport a son centre de
gravité est la minimale.
- Si le label de l’instance = son label sur Base TEST ALORS
Nb_Bien_Classée_A = Nb_Bien_Classée_A +1
SINON
Nb_Mal_Classée_A = Nb_Mal_Classée_A +1
SI label sur Base TEST = ’’Normal’’ ALORS Nb_faux_négatif_A=
Nb_faux_négatif_A+1
SINON Nb_faux_positif_A= Nb_faux_positif_A+1
FINSI
FINSI
FAIT
FIN
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Algorithme II.2 - Pseudocode Modèle A : K-means amélioré pour la détection d’intrusion

NB : Afin de comparer nos Modèles, nous avons gardé les variables du modèle A :
Nb_Bien_Classée_A, Nb_Mal_Classée_A, Nb_faux_positif_A et Nb_faux_négatif_A.

II.4.3 Modèle B : K-means amélioré pour la détection d’intrusion avec seuils

II.4.3.1 Principe du Modèle B

Le principe de ce modèle est d’adapter l’algorithme de Clustering K-means


amélioré et précédemment vu, au problème de la détection d’intrusions. Mais cette fois ci nous
allons introduire un nouveau paramètre qui une distance de tolérance appelée SEUIL. Cette
dernière, qui est la moyenne de la distance toléré dans les clusters. Si une instance n’est pas
classé suite au deux paramètres « distance et seuil » alors nous considérons que l’instance est
un faux + ou un faux-.
Dans ce modèle, nous avons procédé comme suit :
- Il faut séparer les instances de Test 20% de la base Training dans un fichier à part.
Cette base de Test doit contenir les paquets du réseau c’est-à-dire les instances avec des
labels « Normal » et les « Anomaly »

- Puis éclater la Base Training en deux fichiers différents, de telles sortes que le fichier1
ne doit contenir que les instances « Normal » et le fichier2 que les instances
« Anomaly ». Nous avons procédé de cette manière dans le but de donner une
signification correcte à nos clusters. Ceci veut dire le fichier1 va nous former le cluster
des instances normal alors que le fichier2 va nous construire le deuxième cluster des
instances jugées anormal.

- Exécuter l’algorithme M-means séparément, sur le fichier1 et sur le fichier2. Noter que
le nombre de cluster choisi pour fichier1 doit être identique pour fichier2 (le même K).

- Calculer la distance maximale des instances dans chaque cluster. Ces distances
représentent nos seuils de tolérances.

- Après, pour chaque instance de la Base TEST il faut :

Calculer la distance entre chaque instance et tous les centres de gravité


locaux trouvés, c’est-à-dire les K centres de gravité de fichier1 et les K
centres de gravité de fichier2.

Si la distance (instance TEST ,CGi) est minimale et est ≤ seuili alors

- affecter l’instance de test au cluster le plus proche.


Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

- comparer le label de l’instance de test par rapport au labelle de la


classe du centre de gravité Ki dans la distance minimale
- Si c’est le même label alors l’instance (le paquet) est bien classée donc
Nb_Bien_Classée = Nb_bien_Classée +1
Sinon
Nb_Mal_Classée = Nb_Mal_Classée +1
Identifier parmi le Nb_Mal_Classée, selon le label du cluster dont il
est affecté, le nombre des faux positif et des faux négatifs.
Il faut garder les variables : Nb_Bien_Classée, Nb_Mal_Classée,
Nb_faux_positif correspondant aux attaques non réelles et Nb_faux_négatif
correspond aux attaques réelles non détectée. Ceci nous permettra de faire
une étude comparative entre nos Modèles.
Les schémas présentés sur les figures II.6 et II.7 suivantes décrivent en détail
l’approche adoptée dans ce modèle :

Figure II.6 – Classification par distance euclidienne minimale et par seuil


(sur un exemple pour K=2)
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Figure II.7 – Description de l’approche du modèle B

II.4.3.2 Présentation du Pseudocode du Modèle B

Nous avons opté pour le Modèle B le pseudocode suivant :


Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

Algorithme II.3 : Pseudocode Modèle B

ENTREE
- K (nombre de cluster à former identique à celui du modèle A)
- Le DataSet
DEBUT
- Déclarer et initialiser la matrice de donné
- Séparer les instances de Test 20% de la base Training dans des matrices de données,
respectivement, Test et train.
- Diviser la matrices de données Train en deux sous matrice différentes M1 et M2, de
telles sortes que le M1 contient que les instances « Normal » et le M2 les instances
« Anomaly »
- Lancer K-means pour matrice de donnée M1
Choisir aléatoirement K instances (K lignes de la matrice de données M1) qui
représentent les centres de gravité des clusters (nommé centroïd).
Initialiser le vecteur clusters_M1 par les K individus(ou instances) choisis
Calculer le centre de gravité global, par la formule suivante :

N : le nombre d’instance, m : la taille de l’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
REPETER
- Calculer la distance entre chaque instance de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯
-Affecter l’instance au cluster dans lequel la distance par apport a son centre de
gravité est la minimale (le centre de gravité le plus proche).
-Recalculer le centre de gravité de chaque cluster et modifier le centroid, ce qui
revient à mettre à jour (réaffecter les nouvelles valeurs) le vecteur
clusters_M1.
Nous utilisons la formule suivante :

N : le nombre d’instance du cluster i, m : la taille de d’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
JUSQU‘A stabilisation des centres de gravité
- Lancer K-means pour matrice de donnée M2
Choisir aléatoirement K instances (K lignes de la matrice de données M2) qui
représentent les centres de gravité des clusters (nommé centroïd).
Initialiser le vecteur clusters_M2 par les K instances (ou individus) choisis
Calculer le centre de gravité global, par la formule suivante :

N : le nombre d’instance, m : la taille de l’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

REPETER
- Calculer la distance entre chaque individu de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯
- Affecter d’instance au cluster dans lequel la distance par apport a son centre de
gravité est la minimale (le centre de gravité le plus proche).
- Recalculer le centre de gravité de chaque cluster et modifier le centroid, ce
qui revient à mettre à jour (réaffecter les nouvelles valeurs) le vecteur
clusters_M2.
Nous utilisons la formule suivante :

N : le nombre d’instance du cluster i, m : la taille de l’instance (nombre d’attribut)


var : un élément d’une instance (attribut)
JUSQU‘A stabilisation des centres de gravité
- Initialiser à zéro les variables : Nb_Bien_Classée_B, Nb_Mal_Classée_B,
Nb_faux_négatif_B et Nb_faux_positif_B (relatives au Modèle B)
- Calculer le seuil de chaque cluster, ou, Seuli=distance minimal dans Clusteri
- POUR chaque instance de la Base TEST FAIRE
- Calculer la distance entre chaque instance de la matrice de donnée et tous les
centres de gravités local, de clusters_M1 et de clusters_M2 en calculant la
distance euclidienne par la formule suivante :
D (X, Y) = ² ² ⋯
- SI la distance (instance TEST, CGi) est minimale et est ≤ seuili ALORS
- Affecter l’instance au cluster de CGi
- SI le label de l’instance = son label sur Base TEST ALORS
Nb_Bien_Classée_B = Nb_Bien_Classée_B+1
SINON
Nb_Mal_Classée_B = Nb_Mal_Classée_B +1
SI label sur Base TEST = ’’Normal’’ ALORS
Nb_faux_négatif= Nb_faux_négatif_B+1
SINON Nb_faux_positif= Nb_faux_positif_B+1
FINSI
FINSI
SINON
- Nb_Mal_Classée_B = Nb_Mal_Classée_B +1
- SI label sur Base TEST = ’’Normal’’ ALORS
Nb_faux_négatif= Nb_faux_négatif_B+1
SINON Nb_faux_positif= Nb_faux_positif_B+1
FINSI

FINSI
FAIT
FIN
Algorithme II.3 – Pseudocode Modèle B : K-means amélioré
pour la détection d’intrusion avec seuils
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions

NB : Afin de comparer nos Modèles, nous avons gardé les variables du modèle B :
Nb_Bien_Classée_B, Nb_Mal_Classée_B, Nb_faux_positif_B et Nb_faux_négatif_B.
Chapitre III

Implémentation et étude expérimentale

III.1 Introduction
Ce chapitre est réservé à l’implémentation des modelés et à la présentation des
résultats obtenus lors de leurs applications sur un DataSet composé de paquets capturé depuis
un trafic réseau. Mais également, il relate une étude comparative sur les résultats relevés par
nos modèles.

III.2 Environnement du travail

Nous avons développé et testé notre solution sous le système d’exploitation


windows10 (64 bits), de processeur Intel(R) Core™ i5-3210M Cpu @ 2.50GHZ
(processeur x64), et de RAM 8,00 Go.
Langage de programmation Python 3.7
La bibliothèque Pandas sous python pour lire les données depuis la base KDD9
La bibliothèque TK pour l’interface graphique

III.3 Expérimentation et Résultats

Il y a lieu d’indiqué que dans ce qui suis, nous désignons par :

FP le nombre de faux positif (Attaque non détectée)


FN le nombre de faux négatif (alerte d’une attaque non réelle)
MC le nombre instances mal classées
BC le nombre instances bien classées
La précision est égale à BC sur la taille du Dataset_Test
Chapitre III - Implémentation et étude expérimentale

III.3.1 Lancement des exécutions et affichage des résultats du Modèle K-means pour la
détection d’intrusion

III.3.1.1 Les résultats du Modèle K-means pour la détection d’intrusion


L’exécution de notre algorithe du Modèle K-means pour la détection d’intrusion
sur KDD9 nous a permi de dévoiler les résultats suivants :

a)- Affichage des résultats d’exécutions

b)- Analyse des résultats des Premières Exécutions

b.1) Statistiques
Chapitre III - Implémentation et étude expérimentale

Tableau III.1 : Résultats d’Exécutions du Modèle K-means pour la détection d’intrusions


sur 10 itérations

Tableau III.2 : Résultats des instances FP et FN du Modèle K-means pour la détection


d’intrusions désignant la meilleure précision.

Graphe III.1 : Graphe des résultats des précisions du modèle K-means pour la détection
d’intrusion sur 10 itérations

b.2) Interprétation
Chapitre III - Implémentation et étude expérimentale

D’après les résultats obtenus lors de l’exécution de notre modèle, sur les itérations,
pour k=9, comme indiqués ci-dessous sur le tableau III.1 et le Graphe III.1, nous distinguons
toujours deux valeur qui sont égales à 58.35% et 61,95%.

III.3.1.2 Conclusion Globale sur le Modèle K-means pour la détection d’intrusion


D’après les résultats obtenus lors de l’exécution de notre modèle sur les 10 bases
de TEST déférentes (itérations) et avec k=9, nous concluons que la meilleure valeur de la
précision est égale 61,95%, avec des valeurs de FP=33 et de FN=8544.
A noter que le temps exécution été en progression (hausse) relativement au
nombre d’itérations et qu’en moyenne le temps d’exécution d’une itération est estimé à 317.11
secondes.

Nous gardons pour le modèle A, la précision 61.95%, afin


de pouvoir la comparer avec les Modèle A et B.
Chapitre III - Implémentation et étude expérimentale

III.3.2 Lancement des exécutions et affichage des résultats du Modèle A

III.3.2.1 Fixation du paramètre K


Le paramètre K est parmi les facteurs les plus importants dans la construction de
l’algorithme K-means puisqu’il influence la qualité des précisions.

L’exécution du Modèle A, sur trois essais différents, c’est-à-dire, sur trois


« Dataset_Test et Dataset_Train » différents, et K variant de 2 jusqu’à 10, nous a permis
d’obtenir les résultats suivants aidant à fixer la valeur K et ainsi garder la réparation
correspondante de train et de test.

III.3.2.1.1 Premières Exécutions

Sur 4509 instances de Dataset_Test, il existe dans les premières exécutions 1967
instances classées « normal » et 2542 classées «Anomaly», comme montré sur le graphe
suivant :

Graphe III.2 : Graphe des instances de la première


base de Test du modèle A
Chapitre III - Implémentation et étude expérimentale

a)- Affichage des résultats d’exécutions

b)- Analyse des résultats des Premières Exécutions


b.1) Statistiques

Tableau III.3 : Résultats des Premières Exécutions du Modèle A


Chapitre III - Implémentation et étude expérimentale

Tableau III.4 : Résultats de la précision des Premières Exécutions du Modèle A

Graphe III.3 : Graphe des Résultats des Premières Exécutions du Modèle A

Graphe III.4 : Graphe des Résultats en % des Premières Exécutions du Modèle A


Chapitre III - Implémentation et étude expérimentale

Graphe III.5 : Résultat des Précisions des Premières Exécutions du Modèle A

b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur le première
base de test, pour k variant de 2 à 10, comme indiqués ci-dessous sur le tableau III.3, tableau
III.4, Graphe III.3, Graphe III.4 et Graphe III.5, nous distinguons deux meilleures valeurs
relevées pour la précisions : k=9 et k=8, et sont respectivement égales à 77,60% et 76,62%.
Aussi notre modèle sur Premières Exécutions donne de bon résultats quand les valeurs de K
sont grandes (proche a 10) particulièrement pour une répartition en 9 clusters.
III.3.2.1.2 Secondes Exécutions
Sur 4509 instances de
Dataset_Test, il existe dans les secondes
exécutions 1920 instances classées
« normal » et 2589 classées «Anomaly»,
comme montré sur le graphe suivant :

Graphe III.6 : Graphe des instances de la seconde base


de Test du modèle A

a)- Présentation des résultats des secondes Exécutions


Chapitre III - Implémentation et étude expérimentale

b)- Analyse des résultats des Secondes Exécutions


b.1) Statistiques

Tableau III.5 : Résultats des Secondes Exécutions du Modèle A


Chapitre III - Implémentation et étude expérimentale

Tableau III.5 : Résultats de la précision des Secondes Exécutions du Modèle A

Graphe III.7 : Graphe des Résultats des Secondes Exécutions du Modèle A

Graphe III.8 : Graphe des Résultats en % des Secondes Exécutions du Modèle A


Chapitre III - Implémentation et étude expérimentale

Graphe III.9 : Résultat des Précisions des Secondes Exécutions du Modèle A

b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur le première
base de test, pour k variant de 2 à 10, comme indiqués ci-dessous sur le tableau III.5, tableau
III.6, Graphe III.7, Graphe III.8 et Graphe III.9, nous distinguons deux meilleures valeurs
relevées pour la précisions : k=9 et k=8, et sont respectivement égales à 79,15% et 77,53%.
Aussi notre modèle sur Premières Exécutions donne de bon résultats quand les valeurs de K
sont grandes (proche a 10) particulièrement pour une répartition en 9 clusters.

III.3.2.1.3 Troisièmes Exécutions

Sur 4509 instances de


Dataset_Test, il existe dans les
premières exécutions 1944 instances
classées « normal » et
2565 classées «Anomaly», comme
montré sur le graphe suivant :

Graphe III.10 : Graphe des instances de la


troisième base de Test du modèle A

a)- Présentation des résultats des Troisièmes Exécutions


Chapitre III - Implémentation et étude expérimentale

b)- Analyse des résultats des Troisièmes Exécutions


b.1) Statistiques

Tableau III.7 : Résultats des Troisièmes Exécutions du Modèle A


Chapitre III - Implémentation et étude expérimentale

Tableau III.8 : Résultats de la précision des Troisièmes Exécutions du Modèle A

Graphe III.11 : Graphe des Résultats des Troisièmes Exécutions du Modèle A

Graphe III.12 : Graphe des Résultats en % des Troisièmes Exécutions du Modèle A


Chapitre III - Implémentation et étude expérimentale

Graphe III.13 : Résultat des Précisions des Troisièmes Exécutions du Modèle A

b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur la première
base de test, pour k variant de 2 à 10, comme indiqués ci-dessous sur le tableau III.7, tableau
III.8, Graphe III.11, Graphe III.12 et Graphe III.13, nous distinguons deux meilleures valeurs
relevées pour la précisions : k=8 et k=9, et sont respectivement égales à 80,84% et 79,33%.
Aussi notre modèle sur Premières Exécutions donne de bon résultats quand les valeurs de K
sont grandes (proche a 10) particulièrement pour une répartition en 8 clusters.

III.3.2.2 Conclusion Globale sur le Modèle A


D’après les résultats obtenus lors de l’exécution de notre modèle sur les trois bases
de TEST déférentes et avec k variant entre 2 et 10, nous concluons que la valeur meilleure du
paramètre K est égale à 8. A noté que nos test se sont arrêtés à K=10 et qu’à partir de k=8 la
précision été presque stable. A noter que le temps exécution été en progression (hausse)
relativement à la valeur de K. Aussi, nous gardons les résultats indiqués sur le tableau suivant :
Chapitre III - Implémentation et étude expérimentale

Tableau III.9 : Résultats du Modèle A

Nous allons donc retenir pour le modèle A, un nombre de


cluster (K) égal à 9, correspondant aux meilleurs résultat de
précisions, afin de l’appliquer sur le modèle B et réaliser ainsi, une
étude comparative.
Chapitre III - Implémentation et étude expérimentale

III.3.3 Lancement des exécutions et affichage des résultats du Modèle B

III.3.3.1 Les résultats du Modèle B

- Le paramètre de K est fixé à 9

- A préciser, que sur plusieurs du modèle B,


et sur plusieurs bases de Test, nous retenons
celle qui présente les meilleures Précisions
(Test3).

- Sur 4509 instances de Dataset_Test, il


existe dans les premières exécutions 1864
instances classées « normal » et
2645 classées «Anomaly», comme décrit sur
le graphe en face. Graphe III.14 : Graphe des instances de Test
du modèle B

a)- Présentation des résultats d’Exécutions

Résultats de précision pour les 10 itérations :

Longueurs des Clusters de la meilleure précision :


Chapitre III - Implémentation et étude expérimentale

Seuils de chaque Cluster de la meilleure précision :

Résultats de la meilleure précision :

b)- Analyse des résultats


b.1) Statistiques

Graphe III.15 : Graphe des précisions par itérations du modèle B


Chapitre III - Implémentation et étude expérimentale

b.2) Interprétation

D’après les résultats obtenus lors de l’exécution de notre modèle, sur la base de
test, et sur plusieurs itérations, comme indiqués ci-dessous sur le Graphe III.15, nous
distinguons une meilleure valeur relevée sur la sixième itération, pour une précision égale à
81.19%.

III.3.3.2 Conclusion Globale sur le Modèle B

D’après les résultats obtenus lors de l’exécution de notre modèle sur plusieurs
bases de test, nous concluons que la meilleure valeur de la précision est de 81.19%. A noter
que le temps exécution été en progression (hausse) relativement au nombre d’itérations, avec
un durée moyenne de 252.91 secondes pour chaque itération. Aussi, nous gardons, les résultats
indiqués sur le tableau suivant :

Tableau III.10 : Résultats du Modèle B

Nous allons donc retenir, pour le modèle B, la meilleure


précision qui est égale à 81.19% afin de réaliser une étude
comparative.
Chapitre III - Implémentation et étude expérimentale

III.3.4 Etude comparative entre les trois modèles

Les résultats relevés sur le Tableau III.11, le Graphe III.16, Graphe III.17 et le
Graphe III.18, présentés ci-dessous, indiquent que :

- La précision du ModèleA a été améliorée de 17.38% par apport à l’approche K-means


classique.
- La précision du Modèle B a été améliorée de 19.21% par apport à l’approche K-means
classique et de 1.86% par rapport au modèle A.
- Et que la modèle B représente réellement une amélioration des deux modèles premiers. Ce
qui relate notre entière satisfaction.

Tableau III.11 : Résultats obtenus des modèles : K-means classique, Modèle A et Modèle B

Graphe III.16 : Graphe comparatif des Résultats des instances bien classées et instances mal
classées des Modèles : K-means classique, Modèle A et Modèle B
Chapitre III - Implémentation et étude expérimentale

Graphe III.17 : Graphe comparatif des instances identifiées comme faux positives et faux
négatives des modèles : K-means classique, Modèle A et Modèle B

Graphe III.18 : Graphe comparatif des précisions entre les modèles : K-means classique,
Modèle A et Modèle B
Chapitre III - Implémentation et étude expérimentale

Par conséquent, notre approche proposée dans le Modèle B


donne effectivement, de meilleures précisions par rapport au modèle
de k-means pour la détection d’intrusions et au Modèle B.

Ainsi, nous avons réellement prouvé que nos approches


d’amélioration de k-means classique pour la détection d’intrusion,
présentées dans ce mémoire, sont de véritables contributions dans le
domaine de Machine Learning et sécurité informatique.
Chapitre III - Implémentation et étude expérimentale

Conclusion Générale
Dans ce mémoire, nous avons présenté un état de l’art, dans la quel nous avons
abordé les aspects théoriques de la sécurité informatique, les notions de base sur les systèmes
de détection d’intrusions, et le concept de Machine Learning. Cette État a permis d’avoir une
vue globale de ce qui se fait de nos jours dans le domaine des IDS utilisant les techniques de
machine Learning.

L’étape suivante consistée à s’intéresser à combiner Technique de Machine


Learning non supervisée par la méthode Clustering et Sécurité Informatique pour la détection
d’intrusion. Ce qui nous avait permis d’améliorer les qualités des résultats des systèmes de
détection d’intrusions, en permettant l'apprentissage, la classification et la détection de faux
positifs et faux négatifs. En effet, pour le réaliser, nous avions proposé et généré trois
contributions (modèles) différentes : la première était exprimée par la technique’’ K-Means’’
classique, la seconde, représente la technique’’ K-Means’’ améliorée et avec paramétrage du
facteur K, et enfin, la troisième contribution était un raffinement de cette deuxième par
l’introduction de seuils de tolérance qui représentent les distances maximales dans chaque
partition (Cluster).

Ensuite, l’implémentation de nos trois approches et l’étude expérimentale sur un


DataSet KDD9 à dévoiler que :
Nos deux contribution, notamment, celle de l’approche K-means (Modèle A), et celle de
l’approche K-means améliorée et avec seuils de tolérances pour la détection d’intrusions
(Modèle B), représentant l’utilisation d’une classification non supervisée raffiner, ont permis
effectivement, l’amélioration des qualités des systèmes de détection d’intrusions à
l’identification des erreurs de classification (faux-positif, faux-négatif), particulièrement la
seconde contribution qui présente de meilleure résultats. Ce qui répond exactement à la
problématique énoncé dans ce mémoire.

Vous aimerez peut-être aussi