2
vecteurs.readme
medina5 edited this page 2025-09-16 07:52:01 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.
  1. Espaces métriques

    • Distance euclidienne.
    • Similarité cosinus.
    • Inégalités triangulaires et propriétés.
  2. Algèbre linéaire appliquée

    • Matrices, transformations, réduction de dimension.
    • Application : analyse en composantes principales (ACP).

Chapitre 2 : Statistique multivariée

  1. Descriptif

    • Moyenne, variance, covariance.
    • Corrélations entre variables.
  2. Normalisation

    • Min-Max scaling.
    • Standardisation (z-score).
    • Normalisation par norme (unit vector).
  3. 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).
  1. Malédiction de la dimensionnalité

    • Définition.
    • Impact sur les distances (concentration des mesures).
  2. 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

  1. Classification supervisée

    • k-NN classique.
    • Analyse discriminante linéaire.
  2. Clustering (non supervisé)

    • k-means.
    • Hiérarchique.
    • DBSCAN.
  3. Évaluation

    • Erreur de classification.
    • Indice de silhouette.
    • Entropie et pureté.

Chapitre 5 : Indexation pour la recherche vectorielle

  1. Structures exactes

    • kd-tree, ball tree.
    • Avantages / limites.
  2. Index approximatifs

    • LSH (Locality Sensitive Hashing).
    • Graphes de proximité (HNSW).
    • IVF (Inverted File).
  3. HNSW en détail

    • Construction hiérarchique.
    • Navigation dans le graphe.
    • Performances (précision vs vitesse).

Chapitre 6 : Applications modernes

  1. Recommandation de produits

    • Profils nutritionnels (ex. yaourt vs confiture).
    • Recommandation basée sur similarité.
  2. Recherche dimages et de documents

    • Embeddings textuels (Word2Vec, BERT).
    • Embeddings visuels (ResNet, CLIP).
  3. Détection danomalies

    • Valeurs extrêmes (outliers).
    • Détection de fraude.

Chapitre 7 : Implémentation avec PostgreSQL et pgvector

  1. Création dun type vecteur

    • vector(n).
    • Conversion des données tabulaires en vecteurs.
  2. Normalisation dans SQL

    • Moyenne et écart-type avec AVG et STDDEV.
    • Transformation en z-score.
  3. Indexation

    • ivfflat (batch, nécessite ANALYZE).
    • hnsw (recherche dynamique).
  4. Requêtes

    • Recherche de similarité : ORDER BY v1 <-> v2.
    • Classification par vote majoritaire (k-NN).

Chapitre 8 : Perspectives et limites

  1. Curse of dimensionality et solutions (réduction dimensionnelle, embeddings spécialisés).

  2. Précision vs performance (exact vs approximatif).

  3. Perspectives :

    • Recherche multimodale (texte + image).
    • Bases vectorielles distribuées.
    • Applications IA générative.

Conclusion

  • Les vecteurs permettent dunifier des données hétérogènes.
  • Les mesures de distance et la normalisation sont au cœur de lanalyse.
  • Lindexation vectorielle (HNSW, IVF) rend possible des recherches rapides sur des millions dobjets.
  • PostgreSQL, via pgvector, permet de relier ce monde au SQL traditionnel.

Exercices finaux

  1. Créer une base produits avec profils nutritionnels.
  2. Normaliser les données par z-score.
  3. Construire un vecteur par produit.
  4. Créer un index HNSW.
  5. Classer un nouveau produit (k-NN).
  6. 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 dapplications 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 dutiliser les outils de lalgèbre linéaire, de la statistique et de linformatique pour :

  • rechercher des objets similaires,
  • regrouper ou classifier des individus,
  • détecter des anomalies ou recommander des produits.

Aujourdhui, 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 dimages ou de sons.

6.3 Détection danomalies

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

Lanalyse 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 danomalies.


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 dun 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 lopérateur E, qui est lespérance mathématique.


📘 La covariance et lespérance

1. Lespérance E[X]

Lespérance (ou moyenne théorique) dune 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

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 X est grand quand Y est grand → covariance positive.
  • Si X est grand quand Y est 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 sexprime dans les unités combinées de X et Y (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}

\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 lanalyse multidimensionnelle.


Applications

  • Segmentation client sans étiquette.
  • Analyse de comportements sur un site web.
  • Regroupement de documents ou dimages.
  • Détection danomalies (points isolés).

3. Comparaison Classification vs Clustering

Critère Classification (supervisée) Clustering (non supervisée)
Données dapprentissage 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 lanalyse 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 sappuie sur des classes connues et cherche à prédire.
  • Le clustering ne connaît pas les classes à lavance 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 ?