Data mining (fouille de données) : méthodes, outils et limites
Le data mining consiste à chercher des régularités exploitables dans un jeu de données déjà collecté : groupes qui se ressemblent, événements qui reviennent ensemble, valeurs qui sortent du lot. Ce n'est pas la collecte (scraping), pas le stockage (big data), pas l'entraînement d'un modèle de production : c'est l'étape qui transforme des millions de lignes de logs en quelques règles lisibles.
Fouille de données, pas collecte de données
Un serveur web produit des lignes, beaucoup de lignes. Le data mining, c'est ce que vous en faites ensuite : repérer que 200 adresses distinctes demandent toutes /wp-login.php dans la même minute, que les requêtes venant d'un même /24 partagent un User-Agent absent du reste du trafic, ou que trois réponses 502 précèdent systématiquement le redémarrage du pool PHP-FPM. La fouille cherche des motifs non triviaux, statistiquement valides et actionnables, dans un volume que personne ne lira ligne à ligne.
Le terme vient du processus KDD (Knowledge Discovery in Databases) formalisé par Fayyad, Piatetsky-Shapiro et Smyth en 1996, où le data mining ne désignait qu'une étape, coincée entre la sélection, le prétraitement, la transformation et l'interprétation des résultats. L'usage a élargi le mot à la chaîne entière. Peu importe le vocabulaire, tant que vous savez à quelle étape vous êtes.
La confusion la plus fréquente en français porte sur le mot « mining » lui-même : le minage de cryptomonnaie n'a aucun rapport avec la fouille de données. L'un calcule des hachages SHA-256 pour valider des blocs, l'autre cherche des corrélations dans une table.
| Terme | Ce qu'il désigne | Exemple |
|---|---|---|
| Web scraping | Collecte automatisée de contenus en ligne | Récupérer 50 000 fiches produit |
| Data mining | Recherche de motifs dans des données déjà disponibles | Segmenter les visiteurs en 4 profils de navigation |
| Machine learning | Algorithmes qui ajustent des paramètres sur des exemples | Entraîner un classifieur de spam |
| Big data | Contrainte de volume, de vélocité et de variété | 400 Go de flux NetFlow par jour |
| Minage crypto | Preuve de travail sur une blockchain | Hachage SHA-256 sur le réseau Bitcoin |
Cinq familles de méthodes, cinq questions différentes
Choisir une technique revient à formuler correctement la question. Si vos données portent une étiquette connue, vous êtes en apprentissage supervisé (classification, régression). Si elles n'en portent pas, il reste le regroupement, les règles d'association et la détection d'anomalies.
Les règles d'association se lisent avec trois indicateurs simples. Prenez 10 000 sessions : 800 contiennent l'événement A, 400 contiennent A et B ensemble, 4 000 contiennent B. Le support de la règle A vers B vaut 400/10 000 = 4 %. La confiance vaut 400/800 = 50 %. Le lift vaut 0,50 / 0,40 = 1,25, donc la présence de A augmente la probabilité de B d'un quart. Un lift de 1,0 signifie qu'il n'y a rien à voir, quelle que soit la confiance affichée. C'est le piège classique : une règle à 90 % de confiance ne vaut rien si B apparaît déjà dans 90 % des sessions.
Sur le regroupement, k-means impose de fixer k à l'avance et suppose des groupes à peu près sphériques et de taille comparable. DBSCAN (Ester et al., 1996) ne demande pas ce nombre mais deux autres paramètres, eps et minPts, et sait classer un point comme bruit plutôt que de le forcer dans un groupe. Sur des logs, cette capacité à dire « celui-là n'appartient à rien » vaut souvent mieux qu'une partition propre.
| Famille | Question posée | Algorithmes courants |
|---|---|---|
| Classification | À quelle catégorie connue appartient cet enregistrement ? | Arbre de décision, random forest, naive Bayes |
| Régression | Quelle valeur numérique prédire ? | Régression linéaire, gradient boosting |
| Clustering | Quels groupes émergent sans étiquette ? | k-means, DBSCAN, classification hiérarchique |
| Règles d'association | Qu'est-ce qui apparaît systématiquement ensemble ? | Apriori (Agrawal et Srikant, 1994), FP-Growth |
| Détection d'anomalies | Qu'est-ce qui ne ressemble à rien du reste ? | Isolation Forest, Local Outlier Factor |
CRISP-DM, le cycle qui structure le travail
CRISP-DM (Cross-Industry Standard Process for Data Mining) a été publié en 1999 par un consortium réunissant notamment Daimler-Benz, SPSS, NCR Teradata et l'assureur OHRA. Aucune version 2 n'a jamais vu le jour, et le document original reste la référence pratique. SAS propose une alternative, SEMMA (Sample, Explore, Modify, Model, Assess), plus centrée sur l'outil que sur le métier.
Le point utile de CRISP-DM n'est pas la liste des phases mais les boucles de retour : l'évaluation renvoie à la compréhension métier, la modélisation renvoie à la préparation des données. Un projet qui avance en ligne droite du besoin au tableau de bord a généralement sauté une validation.
La préparation des données occupe la part la plus lourde du calendrier réel : jointures, gestion des valeurs manquantes, normalisation des fuseaux horaires, déduplication. Sur des logs, la seule harmonisation des horodatages entre un pare-feu en UTC et un serveur applicatif en Europe/Paris suffit à décaler toutes les corrélations d'une ou deux heures selon la saison.
- Compréhension métier : quelle décision changera selon le résultat ?
- Compréhension des données : volumétrie, champs disponibles, qualité, trous
- Préparation : nettoyage, jointures, construction des variables
- Modélisation : choix de l'algorithme et réglage des paramètres
- Évaluation : le résultat répond-il à la question de départ, pas seulement au score ?
- Déploiement : mise en production, surveillance de la dérive dans le temps
Appliqué à des logs et à des adresses IP
Commencez petit. Sur un access.log au format combined, ce comptage donne déjà la structure du trafic et se lance en une seconde sur quelques millions de lignes :
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
Ce n'est pas encore de la fouille, c'est le point de départ. La vraie étape consiste à construire des variables par adresse IP sur une fenêtre glissante : nombre de requêtes par minute, ratio de codes 4xx, nombre d'URL distinctes, nombre de User-Agent différents, écart-type des intervalles entre deux requêtes. Cette dernière variable est souvent la plus discriminante : un humain a un écart-type élevé, un script qui tourne toutes les 2 secondes a un écart-type proche de zéro.
Avec scikit-learn, la détection d'anomalies tient en trois lignes une fois les variables prêtes. IsolationForest (Liu, Ting et Zhou, 2008) renvoie -1 pour les points isolés et 1 pour les autres :
clf = IsolationForest(contamination=0.01, random_state=0).fit(X) ; X['anomalie'] = clf.predict(X) == -1
Le paramètre contamination fixe la proportion attendue de valeurs aberrantes. À 0.01 sur 100 000 adresses, vous obtenez environ 1 000 alertes à trier, ce qui est déjà trop pour une équipe de deux personnes. Ce réglage est un arbitrage opérationnel, pas une vérité statistique.
Côté réseau, la matière première ne se limite pas aux logs applicatifs. NetFlow v9 est décrit par la RFC 3954, son successeur normalisé IPFIX par la RFC 7011, avec le port 4739 par défaut pour le collecteur. Attention à l'échantillonnage : un routeur de cœur configuré à 1 paquet sur 1 000 fera disparaître purement et simplement les flux courts, exactement ceux qu'une reconnaissance de ports produit. Votre modèle apprendra alors qu'il n'y a jamais de scan.
Le cas de panne à connaître avant de mettre une décision en production : le CGNAT. La RFC 6598 réserve la plage 100.64.0.0/10, soit 4 194 304 adresses, pour l'espace partagé des opérateurs, et un opérateur mobile peut placer des dizaines de milliers d'abonnés derrière une seule IPv4 publique. Une règle apprise du type « bloquer le /24 dès 50 requêtes suspectes » coupe alors l'accès à une ville entière. Même logique pour la géolocalisation : une base GeoIP non mise à jour continue d'attribuer un pays à un bloc qui a été réaffecté depuis, et la variable « pays » devient du bruit pur.
Ce que le droit impose quand les données contiennent des IP
La Cour de justice de l'Union européenne a tranché le 19 octobre 2016 dans l'affaire Breyer (C-582/14) : une adresse IP dynamique constitue une donnée à caractère personnel pour l'éditeur d'un site dès lors qu'il dispose de moyens légaux raisonnables d'obtenir l'identification de l'abonné auprès du fournisseur d'accès. En pratique, un jeu de logs bruts relève du RGPD (règlement UE 2016/679, applicable depuis le 25 mai 2018).
Deux articles pèsent directement sur la démarche. L'article 5 impose une finalité déterminée avant la collecte et la minimisation des données : une exploration ouverte « pour voir ce qu'on trouve » s'accommode mal de ce cadre, il faut délimiter la question. L'article 22 encadre les décisions entièrement automatisées produisant des effets juridiques ou significatifs, avec un droit d'obtenir une intervention humaine. Un score de risque qui bloque automatiquement l'accès à un compte tombe dans ce périmètre.
Le considérant 26 place les données réellement anonymes hors du champ du règlement, mais la barre est haute. Tronquer le dernier octet d'une IPv4 réduit la granularité sans garantir l'anonymat si l'enregistrement reste rattaché à un identifiant de session, à un compte ou à une empreinte de navigateur : vous êtes alors en pseudonymisation, qui reste soumise au RGPD. Sur la conservation, la CNIL retient six mois comme durée de référence pour les journaux techniques, à ajuster selon la finalité poursuivie.
Si vos données proviennent d'une collecte sur des sites tiers, la directive (UE) 2019/790 est le texte à lire : son article 3 ouvre une exception de fouille de textes et de données pour la recherche, son article 4 une exception générale assortie d'un droit d'opposition que le titulaire peut exprimer par des moyens lisibles par machine. Un fichier robots.txt ou un en-tête dédié valent opposition. Ignorer cette réserve fait basculer le sujet du terrain technique au terrain contractuel.
Testez vos connaissances
Quelle RFC réserve la plage 100.64.0.0/10 utilisée pour le CGNAT ?
Score : 0 sur 3
Questions fréquentes
Data mining et web scraping, est-ce la même chose ?
Non, ce sont deux étapes distinctes. Le scraping collecte des contenus depuis des sites web, le data mining analyse un jeu de données pour en tirer des motifs. Vous pouvez faire de la fouille sur des données que vous produisez déjà (logs, base de commandes, tickets support) sans jamais scraper la moindre page.
Faut-il du big data pour faire du data mining ?
Non. Les règles d'association donnent des résultats lisibles sur quelques milliers de transactions, et une segmentation par k-means fonctionne sur un fichier de 50 000 lignes ouvert dans pandas. Le volume devient une contrainte quand il dépasse la mémoire de la machine, ce qui impose Spark ou un traitement par lots, mais ce n'est pas un prérequis de la méthode.
Une adresse IP compte-t-elle comme donnée personnelle ?
Dans la plupart des configurations, oui. L'arrêt Breyer de la CJUE (C-582/14, 19 octobre 2016) qualifie l'IP dynamique de donnée personnelle pour l'éditeur qui peut légalement obtenir l'identification auprès du FAI. Traitez vos journaux comme tels : finalité écrite, durée de conservation définie, accès restreint.
Quels outils pour démarrer sans budget ?
Python avec pandas et scikit-learn couvre la quasi-totalité des besoins décrits ici. Pour une approche visuelle sans code, KNIME, Orange et Weka sont gratuits. Et beaucoup de premières analyses se font très bien en SQL : une fonction fenêtre sur PostgreSQL calcule des taux de requêtes par IP et par minute sans sortir de la base.
Comment savoir si un motif trouvé est réel et pas un hasard ?
Gardez une période de données à part, non utilisée pendant l'exploration, et vérifiez que la règle y tient toujours. Plus vous testez d'hypothèses sur le même échantillon, plus vous produisez de corrélations fortuites. Sur les règles d'association, exigez un lift nettement supérieur à 1 et un support suffisant pour que la règle concerne un nombre de cas significatif.
À lire aussi
confidentialite des donnees · agent utilisateur · api · bot