Table of Contents
- Introduction générale
- Chapitre 2 : Statistique multivariée
- Théorie de la similarité
- Chapitre 4 : Classification et clustering
- Chapitre 5 : Indexation pour la recherche vectorielle
- Chapitre 6 : Applications modernes
- Chapitre 7 : Implémentation avec PostgreSQL et pgvector
- Chapitre 8 : Perspectives et limites
- Conclusion
- Exercices finaux
- 📘 Cours complet : Analyse de données vectorielles et recherche de similarité
- Introduction générale
- Chapitre 1 : Fondements mathématiques
- Chapitre 2 :
- Chapitre 6 : Applications
- Chapitre 7 : Implémentation en PostgreSQL avec pgvector
- Chapitre 8 : Perspectives
- Conclusion
- Exercices finaux
- 📘 La covariance et l’espérance
Introduction générale
- Contexte : explosion des données multidimensionnelles (texte, images, sons, données produits).
- Besoin : représenter ces objets dans un espace vectoriel pour les comparer, les regrouper, les classer.
- Outils modernes : PostgreSQL +
pgvector,
FAISS (Facebook), Milvus, Pinecone, Weaviate.
-
- Définitions (vecteur, dimension, norme).
- Produit scalaire, orthogonalité.
- Notions de norme
L_1, L_2, L_\infty.
-
Espaces métriques
- Distance euclidienne.
- Similarité cosinus.
- Inégalités triangulaires et propriétés.
-
Algèbre linéaire appliquée
- Matrices, transformations, réduction de dimension.
- Application : analyse en composantes principales (ACP).
Chapitre 2 : Statistique multivariée
-
Descriptif
- Moyenne, variance, covariance.
- Corrélations entre variables.
-
Normalisation
- Min-Max scaling.
- Standardisation (z-score).
- Normalisation par norme (unit vector).
-
Réduction de dimension
- ACP (PCA).
- T-SNE et UMAP (visualisation en 2D des données vectorielles).
Théorie de la similarité
Problème des plus proches voisins (k-NN)
- Définition.
- Algorithme naïf et complexité
O(N).
-
Malédiction de la dimensionnalité
- Définition.
- Impact sur les distances (concentration des mesures).
-
Mesures adaptées aux données
- Distances pour variables continues.
- Distances pour variables catégorielles (Hamming, Jaccard).
- Cas des vecteurs creux (sparse vectors).
Chapitre 4 : Classification et clustering
-
Classification supervisée
- k-NN classique.
- Analyse discriminante linéaire.
-
Clustering (non supervisé)
- k-means.
- Hiérarchique.
- DBSCAN.
-
Évaluation
- Erreur de classification.
- Indice de silhouette.
- Entropie et pureté.
Chapitre 5 : Indexation pour la recherche vectorielle
-
Structures exactes
- kd-tree, ball tree.
- Avantages / limites.
-
Index approximatifs
- LSH (Locality Sensitive Hashing).
- Graphes de proximité (HNSW).
- IVF (Inverted File).
-
HNSW en détail
- Construction hiérarchique.
- Navigation dans le graphe.
- Performances (précision vs vitesse).
Chapitre 6 : Applications modernes
-
Recommandation de produits
- Profils nutritionnels (ex. yaourt vs confiture).
- Recommandation basée sur similarité.
-
Recherche d’images et de documents
- Embeddings textuels (Word2Vec, BERT).
- Embeddings visuels (ResNet, CLIP).
-
Détection d’anomalies
- Valeurs extrêmes (outliers).
- Détection de fraude.
Chapitre 7 : Implémentation avec PostgreSQL et pgvector
-
Création d’un type vecteur
vector(n).- Conversion des données tabulaires en vecteurs.
-
Normalisation dans SQL
- Moyenne et écart-type avec
AVGetSTDDEV. - Transformation en z-score.
- Moyenne et écart-type avec
-
Indexation
ivfflat(batch, nécessiteANALYZE).hnsw(recherche dynamique).
-
Requêtes
- Recherche de similarité :
ORDER BY v1 <-> v2. - Classification par vote majoritaire (k-NN).
- Recherche de similarité :
Chapitre 8 : Perspectives et limites
-
Curse of dimensionality et solutions (réduction dimensionnelle, embeddings spécialisés).
-
Précision vs performance (exact vs approximatif).
-
Perspectives :
- Recherche multimodale (texte + image).
- Bases vectorielles distribuées.
- Applications IA générative.
Conclusion
- Les vecteurs permettent d’unifier des données hétérogènes.
- Les mesures de distance et la normalisation sont au cœur de l’analyse.
- L’indexation vectorielle (HNSW, IVF) rend possible des recherches rapides sur des millions d’objets.
- PostgreSQL, via
pgvector, permet de relier ce monde au SQL traditionnel.
Exercices finaux
- Créer une base
produitsavec profils nutritionnels. - Normaliser les données par z-score.
- Construire un vecteur par produit.
- Créer un index HNSW.
- Classer un nouveau produit (k-NN).
- Détecter les produits atypiques (outliers).
📚 Références utiles :
- Hastie, Tibshirani, Friedman, The Elements of Statistical Learning.
- Bishop, Pattern Recognition and Machine Learning.
- Les notes de cours "Similarity Search" de Piotr Indyk (MIT).
- Documentation officielle de
pgvector: https://github.com/pgvector/pgvector.
👉 Souhaitez-vous que je développe ce plan en poly de cours complet (texte rédigé, exemples détaillés, schémas), ou préférez-vous garder cette structure comme plan directeur pour construire vous-même le contenu ?
Parfait 👍 Je vais transformer le plan en un cours rédigé complet, structuré en chapitres, comme un polycopié universitaire. On garde un style pédagogique, progressif, avec définitions, théories, exemples et applications.
📘 Cours complet : Analyse de données vectorielles et recherche de similarité
Introduction générale
La multiplication des données numériques (textes, images, vidéos, données issues de capteurs ou d’applications métiers) pose un défi majeur : comment représenter ces données pour les comparer et les analyser efficacement ?
La solution la plus utilisée consiste à projeter ces données dans un espace vectoriel : chaque objet est représenté par un vecteur de nombres réels. Cela permet d’utiliser les outils de l’algèbre linéaire, de la statistique et de l’informatique pour :
- rechercher des objets similaires,
- regrouper ou classifier des individus,
- détecter des anomalies ou recommander des produits.
Aujourd’hui, ces méthodes sont utilisées partout : moteur de recherche, recommandation Netflix/Spotify, détection de fraude bancaire, IA générative (ChatGPT encode les phrases en vecteurs pour raisonner dessus).
Chapitre 1 : Fondements mathématiques
1.3
Chapitre 2 :
2.1
👉 Le z-score est très utilisé pour détecter les valeurs extrêmes.
- ACP (PCA) : projette les données sur des axes qui maximisent la variance.
- T-SNE, UMAP : techniques non linéaires pour visualiser des vecteurs en 2D ou 3D.
3.2 Malédiction de la dimensionnalité
Quand la dimension n augmente :
- les distances entre points tendent à se ressembler,
- les méthodes classiques deviennent inefficaces.
👉 Nécessite des méthodes adaptées (réduction dimensionnelle, index spécialisés).
3.3 Mesures adaptées
- Euclidienne → données continues.
- Cosinus → données textuelles ou normalisées.
- Jaccard/Hamming → données catégorielles.
Chapitre 6 : Applications
6.1 Recommandation
Comparer les profils nutritionnels pour recommander des produits proches.
6.2 Recherche multimédia
Comparer les vecteurs d’images ou de sons.
6.3 Détection d’anomalies
Identifier des vecteurs très éloignés (fraude, défaut de fabrication).
Chapitre 7 : Implémentation en PostgreSQL avec pgvector
7.1 Définir les vecteurs
ALTER TABLE produits ADD COLUMN nutrition_vector vector(5);
7.2 Normaliser
WITH stats AS (
SELECT AVG(proteines) AS mu, STDDEV(proteines) AS sigma FROM produits
)
UPDATE produits p
SET nutrition_vector = ARRAY[
(proteines - mu)/sigma,
(sucre - mu_sucre)/sigma_sucre,
(graisse - mu_graisse)/sigma_graisse,
(sel - mu_sel)/sigma_sel,
(fibres - mu_fibres)/sigma_fibres
]::vector
FROM stats;
7.3 Indexer avec HNSW
CREATE INDEX produits_hnsw
ON produits
USING hnsw (nutrition_vector vector_l2_ops);
7.4 Requêtes k-NN
SELECT p2.id, p2.nom
FROM produits p1, produits p2
WHERE p1.id = 42
ORDER BY p1.nutrition_vector <-> p2.nutrition_vector
LIMIT 5;
Chapitre 8 : Perspectives
- Recherche multimodale (texte + image).
- Embeddings appris (Word2Vec, BERT, CLIP).
- Bases vectorielles distribuées (Milvus, Pinecone).
Conclusion
L’analyse vectorielle relie mathématiques, statistiques et informatique. Grâce à des outils comme PostgreSQL + pgvector, on peut manipuler ces techniques directement dans une base relationnelle, ce qui ouvre la voie à des applications concrètes : recommandation, recherche par similarité, détection d’anomalies.
Exercices finaux
📚 Bibliographie conseillée :
- Hastie, Tibshirani, Friedman – The Elements of Statistical Learning.
- Bishop – Pattern Recognition and Machine Learning.
- Indyk, Motwani – Approximate Nearest Neighbor: Towards Removing the Curse of Dimensionality.
- Documentation pgvector.
Voulez-vous que je complète ce cours avec schémas explicatifs et illustrations (par exemple représentation d’un espace vectoriel, graphe HNSW, courbe du z-score), pour en faire un véritable poly visuel ?
Très bonne question 👍, car la covariance est une des notions centrales de la statistique et elle fait intervenir l’opérateur E, qui est l’espérance mathématique.
📘 La covariance et l’espérance
1. L’espérance E[X]
L’espérance (ou moyenne théorique) d’une variable aléatoire X est une mesure de sa valeur moyenne à long terme.
- Variable discrète :
E[X] = \sum_i x_i \, P(X = x_i)
- Variable continue :
E[X] = \int_{-\infty}^{+\infty} x \, f(x)\, dx
où f(x) est la densité de probabilité.
👉 Intuitivement, E[X] = moyenne pondérée par les probabilités.
👉 En statistique pratique, on remplace E[X] par la moyenne empirique :
\bar{x} = \frac{1}{n} \sum_{i=1}^n x_i
2. Définition de la covariance
La covariance mesure comment deux variables X et Y varient ensemble.
\mathrm{Cov}(X,Y) = E\big[(X - E[X])(Y - E[Y])\big]
Autrement dit :
- Si
Xest grand quandYest grand → covariance positive. - Si
Xest grand quandYest petit → covariance négative. - Si aucun lien → covariance proche de 0.
3. Formule pratique
On peut développer la définition :
\mathrm{Cov}(X,Y) = E[XY] - E[X]E[Y]
En version empirique (données observées (x_i,y_i)) :
4. Exemple simple
Données :
X = (1, 2, 3), Y = (2, 4, 6).
- Moyennes :
\bar{x} = 2,\bar{y} = 4. - Produits centrés :
(1-2)(2-4) = (+2),(2-2)(4-4) = (0),(3-2)(6-4) = (+2). - Moyenne :
(2 + 0 + 2)/3 = 1.33.
👉 Covariance positive : X et Y croissent ensemble.
5. Interprétation
- Unité : la covariance s’exprime dans les unités combinées de
XetY(ex. kg·cm). - Problème : sa valeur dépend des échelles de mesure → difficile à comparer.
- Solution : on utilise la corrélation (covariance normalisée) :
\rho(X,Y) = \frac{\mathrm{Cov}(X,Y)}{\sigma_X \sigma_Y}
où \sigma_X, \sigma_Y sont les écarts-types.
6. Application à vos vecteurs nutritionnels
Si X = teneur en sucre et Y = teneur en énergie (kcal) sur une base de produits :
\mathrm{Cov}(X,Y) > 0: les produits sucrés apportent plus d’énergie (logique).\mathrm{Cov}(X,Y) \approx 0: pas de lien.\mathrm{Cov}(X,Y) < 0: plus de sucre = moins d’énergie (peu probable).
📌 Résumé
E[\cdot]= espérance = moyenne théorique.\mathrm{Cov}(X,Y)mesure la tendance de deux variables à varier ensemble.- Corrélation = covariance normalisée pour comparer entre variables.
Voulez-vous que je montre un exemple SQL avec PostgreSQL pour calculer la covariance (et corrélation) entre sucre et énergie dans votre table produits ?
Parfait 👍 Développons maintenant la partie classification et clustering, qui est un volet essentiel de l’analyse multidimensionnelle.
Applications
- Segmentation client sans étiquette.
- Analyse de comportements sur un site web.
- Regroupement de documents ou d’images.
- Détection d’anomalies (points isolés).
3. Comparaison Classification vs Clustering
| Critère | Classification (supervisée) | Clustering (non supervisée) |
|---|---|---|
| Données d’apprentissage | Avec classes connues | Sans classes connues |
| Objectif | Prédire une classe | Découvrir des regroupements |
| Exemple | Spam / Non Spam | Segmenter des clients |
| Méthodes | SVM, arbres, k-NN, Bayes | k-Means, DBSCAN, hiérarchique |
4. Liens avec l’analyse multidimensionnelle
- En Data Warehouse : on peut utiliser la classification pour prédire une variable clé (ex. prédire si une campagne marketing réussira).
- Dans un cube OLAP : le clustering peut permettre de réduire les dimensions en regroupant des modalités similaires (ex. fusionner des catégories de produits qui se vendent de manière identique).
✅ En résumé :
- La classification s’appuie sur des classes connues et cherche à prédire.
- Le clustering ne connaît pas les classes à l’avance et cherche à découvrir des structures cachées.
Voulez-vous que je développe un exemple pratique illustré (par ex. segmentation de clients avec un tableau de variables, appliquant à la fois classification supervisée et clustering) pour rendre cette partie plus concrète ?