Aller au contenu

Analyse et fouille de données

Un fichier de 29 541 photos géolocalisées autour de Rennes, publiées par 213 personnes. Où sont les lieux qui attirent vraiment les photographes ? Avant de répondre, il faut s’apercevoir que la plupart des lignes sont des doublons, qu’un seul passionné d’avions peut à lui seul créer un faux « point d’intérêt », et que les coordonnées sont en degrés, pas en mètres. L’analyse de données consiste à comprendre, nettoyer et résumer un jeu de données ; la fouille de données (data mining) consiste à y découvrir, sans étiquette, des groupes et des régularités qu’on ne connaissait pas.

Ce cours suit le chemin d’un projet réel. Vous apprendrez d’abord à préparer des données brutes, puis à réduire leur nombre de dimensions, en particulier avec l’analyse en composantes principales (ACP), calculée et interprétée pas à pas. Vous découvrirez enfin les grandes méthodes de fouille : partitionnement, détection de zones denses et motifs fréquents. Le dernier chapitre réunit tout sur un cas complet : la détection des points d’intérêt de Rennes à partir des photos de Flickr.

À la fin de ce cours, vous serez capable de :

  • Explorer et nettoyer un jeu de données : typer les variables, traiter les doublons, les valeurs manquantes et les valeurs aberrantes.
  • Transformer les variables (encodage, discrétisation, mise à l’échelle, logarithme) sans créer de fuite de données, grâce aux pipelines de scikit-learn.
  • Choisir entre sélection et extraction de variables pour réduire la dimension d’un problème.
  • Calculer et interpréter une ACP : inertie, valeurs propres, cercle des corrélations, qualité de représentation et contributions.
  • Regrouper des individus avec k-means, la classification ascendante hiérarchique et DBSCAN, et justifier le choix de la méthode.
  • Extraire des itemsets fréquents et des règles d’association avec Apriori, puis critiquer les résultats d’une étude de cas réelle.
  • Python et une première pratique de pandas (lire un fichier, sélectionner des colonnes).
  • Des notions de statistique descriptive : moyenne, médiane, variance, corrélation.
  • Un peu d’algèbre linéaire : vecteurs, produit scalaire, matrices. Les valeurs propres sont rappelées au chapitre 5.

Ce cours se combine naturellement avec celui d’Apprentissage automatique : la préparation des données et la réduction de dimension y servent avant tout apprentissage supervisé. Les cours de Statistiques et de Data mining prolongent respectivement la partie 2 et la partie 3.

  1. Explorez vos données avant de les modéliser : sources, types et structures de données, analyse exploratoire sur le Titanic.
  2. Nettoyez vos données : attributs inutiles, doublons, valeurs manquantes et valeurs aberrantes.
  3. Transformez vos données sans fuite : encodage, discrétisation, normalisation, logarithme et pipelines.
  1. Choisissez entre sélection et extraction de variables : fléau de la dimension, filtres, méthodes enveloppantes et intégrées.
  2. Calculez une analyse en composantes principales : centrage, réduction, inertie, valeurs propres et nombre d’axes.
  3. Interprétez une ACP et découvrez ses cousines : cos², contributions, cercle des corrélations, variables illustratives, AFC, ACM et t-SNE.
  1. Regroupez des individus avec k-means et la CAH : inertie intra et inter, k-means, silhouette, critère de Ward et dendrogramme.
  2. Détectez des zones denses avec DBSCAN : points cœurs, bordures et bruit, réglage de eps et de min_samples.
  3. Extrayez des motifs fréquents et des règles d’association : support, Apriori, confiance, lift, motifs clos et maximaux.
  4. Trouvez les lieux photographiés de Rennes : l’étude de cas complète sur les photos Flickr, et son analyse critique.

Chaque chapitre se termine par un résumé et des exercices corrigés, de difficulté croissante.

Ce cours reprend l’enseignement d’analyse et fouille de données (ADFD) suivi en 3e année du cycle ingénieur de l’INSA Rennes, en spécialité informatique (premier semestre) : cours magistraux sur le prétraitement des données et sur la réduction de dimension (dont l’ACP, ses aides à l’interprétation et son application à la reconnaissance de visages), et travaux pratiques en Python. Les exemples marqués « en TP » proviennent de notre notebook sur la détection des points d’intérêt de Rennes à partir des photos Flickr (pandas, scikit-learn, mlxtend, folium) ; leurs chiffres sont ceux qui s’affichent dans les sorties du notebook.

Le texte, les exemples et les exercices ont été entièrement réécrits, et les jeux de données jouets (villes et températures, positions de photos) ont été construits pour ce cours. Plusieurs notions ont été complétées à partir de sources standard du domaine (documentation de scikit-learn et de mlxtend, ouvrages de référence en analyse de données et en fouille de motifs) : mécanismes des valeurs manquantes (MCAR, MAR, MNAR), détection des valeurs aberrantes par l’écart interquartile, fuite de données et pipelines, silhouette, critère de Ward, réglage de DBSCAN, règles d’association (confiance, lift), FP-growth, motifs clos et maximaux, ainsi que les aperçus sur l’AFC, l’ACM et t-SNE.