← Parcours
📐

Mathématiques pour le ML

Débutant
🧠Comprendre en lisant n'est pas savoir écrire.🧠Un module est fini quand tu peux le reproduire fenêtre fermée.🧠Écris le problème en français avant d'écrire du code.🧠Une question impossible cache trois questions faciles.🧠Retape le code à la main. Puis referme et réécris-le.🧠Essaie d'abord, cherche ensuite.🧠Cherche « comment on écrit ça », jamais « qu'est-ce que je dois faire ».🧠Pour comprendre du code, casse-le.⌨️Une fonction qui plante sur un cas limite n'est pas finie.⌨️Si un bloc a un nom clair, il mérite d'être une fonction.⌨️Savoir lire une erreur vaut plus que connaître dix méthodes.⌨️Diagnostiquer, c'est éliminer dans l'ordre — pas essayer au hasard.⌨️Une optimisation sans mesure avant/après est une croyance.🔍Regarde le fichier avant de le charger.🔍Une performance anormalement bonne est une hypothèse à réfuter.🔍Cette valeur existe-t-elle à l'instant où je dois prédire ?🔍fit sur le train, transform partout.🔍Un chiffre qu'on ne sait pas raconter est un chiffre qu'on n'a pas compris.🔍Un graphique sans question n'a rien à dire.🤖Un score d'entraînement parfait n'est jamais une bonne nouvelle.🤖Le jeu de test ne se regarde qu'une fois.🤖Plus tu essaies de configurations, plus ton meilleur score est optimiste.🤖Un seuil de décision est un arbitrage économique, pas un réglage technique.🤖Commence toujours par une baseline. Note son score.🤖Le meilleur modèle n'est pas le plus précis, c'est celui qu'on peut maintenir.🚀Un modèle en production n'est pas un livrable, c'est un système vivant.🚀Un secret publié est un secret compromis.🚀Pour chaque permission : que se passe-t-il si cette machine est compromise ?🚀Un post-mortem qui cherche un coupable ne produit aucune amélioration.🚀« Nous n'utilisons pas cette variable » n'est pas une garantie d'équité.🚀Rends l'arbitrage explicite et chiffré. Ne le tranche pas en silence.🚀Un résultat qu'on ne sait pas reproduire est une anecdote.

🎯 Objectifs d'apprentissage

À l'issue de ce module, tu seras capable de :

  • 01Interpréter géométriquement un produit matriciel et une décomposition SVD
  • 02Dériver la règle de mise à jour d'une descente de gradient
  • 03Choisir la loi de probabilité adaptée à un phénomène observé
  • 04Conduire un test d'hypothèse et interpréter correctement une p-value

Prérequis

Module Python (NumPy)

Algèbre linéaire : vecteurs et matrices

60 min

Tout 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).

✍️ Exercices de la leçon

2 exercices

Fais-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 AProduit 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. 1.produit_scalaire(a, b) — la somme des produits terme à terme
  2. 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 BUn 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.

🤖

Un point pas clair ? Clique sur 💬 Demander au tuteur en bas à droite.