Algèbre linéaire : vecteurs et matrices
⏱ 60 minTout en ML est vecteur ou matrice : une image est une matrice de pixels, un texte devient un vecteur d'embedding, un dataset est une matrice (lignes = exemples, colonnes = features).
Opérations clés : addition, produit scalaire, produit matriciel, transposée.
Le produit scalaire mesure la similarité entre deux vecteurs :
a · b = Σ aᵢbᵢ = ||a|| ||b|| cos(θ)
C'est exactement ce que fait un moteur de recherche sémantique pour comparer des documents.
Le produit matriciel Y = XW est l'opération centrale d'une couche de réseau de neurones : X (données) × W (poids appris).
Notions à connaître : rang, inverse, valeurs propres (utilisées en PCA pour réduire la dimension des données).
📚 Pour aller plus loin
✍️ Exercices de la leçon
2 exercicesFais-les dans l'ordre, dans un vrai fichier .py — pas dans ta tête. Ne déplie la correction qu'après avoir écrit quelque chose, même faux.
Exercice A — Produit scalaire et similarité cosinus à la main
Application directe · Tu appliques ce que tu viens de lire.
Écris deux fonctions sans utiliser `np.dot` ni `np.linalg.norm` :
- 1.
produit_scalaire(a, b)— la somme des produits terme à terme - 2.
similarite_cosinus(a, b)— le produit scalaire divisé par le produit des normes
Teste-les sur :
a = [1, 2, 3]
b = [2, 4, 6] # b = 2a, donc similarité = 1.0
c = [-1, 0, 1]
Vérifie ensuite que tes résultats correspondent à ceux de NumPy.
Exercice B — Un moteur de recherche sémantique en 15 lignes
Page blanche · Aucun squelette : à toi de choisir la méthode.
Page blanche.
Cinq documents ont été transformés en vecteurs de 4 dimensions (chaque dimension = l'importance d'un thème : sport, cuisine, technologie, voyage) :
import numpy as np
docs = {
"Match de football hier soir": np.array([0.9, 0.0, 0.1, 0.2]),
"Recette de tiramisu facile": np.array([0.0, 0.95, 0.0, 0.1]),
"Le nouveau processeur M4": np.array([0.1, 0.0, 0.9, 0.0]),
"Week-end à Lisbonne": np.array([0.1, 0.3, 0.0, 0.9]),
"Application de suivi sportif": np.array([0.6, 0.0, 0.7, 0.1]),
}
requete = np.array([0.8, 0.0, 0.5, 0.1]) # « tech pour le sport »
Écris un programme qui affiche les documents classés du plus pertinent au moins pertinent pour cette requête, avec leur score.
Aucune méthode indiquée : à toi de décider quelle mesure utiliser et pourquoi.