Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 7 · Modélisation

Modéliser des données : températures, croissance et saturation

Un modèle linéaire pour la température

Le TP part de la température moyenne quotidienne d'une ville en avril : 30 valeurs, de 8,0 °C8{,}0\,°C (jour 1) à 15,2 °C15{,}2\,°C (jour 30), associées aux jours t=1,…,30t=1,\dots,30. On suppose que la température augmente presque linéairement. On cherche donc

T(t)=a t+b.T(t) = a\,t + b.

Le cours utilise np.polyfit(t, T, 1) (le 1 est le degré du polynôme) pour obtenir la droite de régression. Sans NumPy, les mêmes aa et bb viennent de la méthode des moindres carrés (formules hors cours) :

a=∑(ti−tˉ)(Ti−Tˉ)∑(ti−tˉ)2,b=Tˉ−a tˉ.a=\frac{\sum (t_i-\bar t)(T_i-\bar T)}{\sum (t_i-\bar t)^2}, \qquad b=\bar T-a\,\bar t.

Interpréter : aa est la pente, c'est-à-dire la hausse de température par jour (en °C/jour) ; bb est l'ordonnée à l'origine, la valeur extrapolée au jour 00. Prévoir au jour 35 revient à calculer a⋅35+ba\cdot35+b : une extrapolation à prendre avec prudence.

Le linéaire ne suffit pas toujours : np.diff

Si les écarts entre valeurs successives ne sont pas constants, le modèle n'est pas linéaire. np.diff(y) calcule yi+1−yiy_{i+1}-y_i. Le cours donne la règle :

différencesinterprétation
np.diff(y) ≈ constantpolynôme de degré 1
np.diff(y,2) ≈ constantpolynôme de degré 2
np.diff(y,3) ≈ constantpolynôme de degré 3
......

Attention au « zéro informatique » : des valeurs comme 10−1410^{-14} ou −3×10−15-3\times10^{-15} valent en fait 00 (erreur machine).

Exemple ajouté : pour y=t2y=t^2 avec t=1..5t=1..5, les valeurs 1,4,9,16,251,4,9,16,25 donnent des différences 3,5,7,93,5,7,9 (pas constantes) puis des différences secondes 2,2,22,2,2 (constantes) : degré 2.

Modèle logarithmique. Si la croissance ralentit régulièrement, y(t)=aln⁡(t)+by(t)=a\ln(t)+b convient : on pose X=ln⁡tX=\ln t et on fait une régression linéaire de yy sur XX.

Vérifie que tu as compris

Les différences secondes d'une série sont toutes égales à 22. Quel modèle polynomial suggère-t-on ?

Croissance qui ralentit : TP optimisation

Une influenceuse suit son nombre d'abonnés : croissance rapide puis ralentissement. Le modèle du cours est

A(t)=1000ln⁡(t+1),t≥0,A(t) = 1000\ln(t+1), \qquad t \ge 0,

avec tt en mois. Dérivée : A′(t)=1000t+1>0A'(t)=\frac{1000}{t+1}>0, donc AA croît toujours. Dérivée seconde : A′′(t)=−1000(t+1)2<0A''(t)=-\frac{1000}{(t+1)^2}<0, donc AA est concave : la croissance ralentit sans cesse. Un mois est « faiblement intéressant » si le compte gagne moins de 5050 abonnés, soit 1000t+1<50  ⟺  t+1>20  ⟺  t>19\frac{1000}{t+1}<50 \iff t+1>20 \iff t>19 (calcul ajouté, en lisant la pente comme gain mensuel).

TP saturation numérique

Utilisateurs actifs (en milliers) d'une application au mois tt :

U(t)=5+tln⁡(t+2)−2t,t≥0.U(t) = 5 + t\ln(t+2) - 2t, \qquad t\ge 0.

Ici tln⁡(t+2)t\ln(t+2) est la croissance initiale, −2t-2t une perte naturelle d'utilisateurs et +5+5 une base stable de fidèles. La dérivée est U′(t)=ln⁡(t+2)+tt+2−2U'(t)=\ln(t+2)+\frac{t}{t+2}-2. Le TP demande de montrer que f=U′f=U' est strictement croissante (avec f(0)=ln⁡2−2<0f(0)=\ln2-2<0 et f(t)→+∞f(t)\to+\infty), donc qu'il existe un unique t0t_0 tel que U′(t0)=0U'(t_0)=0, à trouver par dichotomie : UU décroît d'abord (perte d'utilisateurs) puis repart. Numériquement t0≈2,319t_0\approx2{,}319 (calcul ajouté).

Vérifie que tu as compris

Pourquoi U′(t)=0U'(t)=0 a-t-il une solution unique pour U(t)=5+tln⁡(t+2)−2tU(t)=5+t\ln(t+2)-2t ?

Examen : température interne d'un drone

Autre modèle du cours : T(t)=20+4t e−0,3tT(t) = 20 + 4t\,e^{-0{,}3t}, t≥0t\ge0. La dérivée (produit et chaîne) est T′(t)=4e−0,3t(1−0,3t)T'(t)=4e^{-0{,}3t}(1-0{,}3t). Elle s'annule en t=10,3≈3,33t=\frac{1}{0{,}3}\approx3{,}33, positive avant et négative après : maximum thermique de 20+40,3e−1≈24,9 °C20+\frac{4}{0{,}3}e^{-1}\approx24{,}9\,°C. Quand t→+∞t\to+\infty, te−0,3t→0te^{-0{,}3t}\to0 donc T→20T\to20 : la température revient vers la température de base (calculs ajoutés). Le cours définit aussi la vitesse de refroidissement R(t)=−T′(t)=4e−0,3t(0,3t−1)R(t)=-T'(t)=4e^{-0{,}3t}(0{,}3t-1).

TP température : série bruitée et dérivée numérique

Le TP simule 48 heures de température (sinusoïde jour/nuit + bruit normal), repère les valeurs aberrantes (T<−5T<-5 ou T>35T>35) et les remplace par la moyenne de leurs deux voisins, puis calcule la dérivée numérique T′(ti)≈T(ti+1)−T(ti)T'(t_i)\approx T(t_{i+1})-T(t_i). On cherche l'heure de hausse la plus rapide, de baisse la plus rapide, et les heures « quasi stables » (∣T′∣<0,1|T'|<0{,}1).

Vérifie que tu as compris

Où T(t)=20+4t e−0,3tT(t)=20+4t\,e^{-0{,}3t} atteint-elle son maximum ?

À toi de coder

Droite de régression à la main

Écris regression(ts, ys) qui renvoie le couple (a, b) de la droite y=a t+by=a\,t+b par les moindres carrés : a=∑(ti−tˉ)(yi−yˉ)∑(ti−tˉ)2a=\frac{\sum(t_i-\bar t)(y_i-\bar y)}{\sum(t_i-\bar t)^2} et b=yˉ−atˉb=\bar y-a\bar t. Pour les points (1,3),(2,5),(3,7)(1,3),(2,5),(3,7) on attend (2,1)(2,1).

Ctrl/⌘+Entrée

À toi de coder

Le point t0 de la saturation numérique

Pour U(t)=5+tln⁡(t+2)−2tU(t)=5+t\ln(t+2)-2t, on a U′(t)=ln⁡(t+2)+tt+2−2U'(t)=\ln(t+2)+\frac{t}{t+2}-2. Écris dU(t) pour cette dérivée, puis trouve_t0() qui renvoie par dichotomie sur [0,10][0,10] (60 itérations) l'unique t0t_0 tel que U′(t0)=0U'(t_0)=0.

Ctrl/⌘+Entrée

À toi de coder

Dérivée discrète et heure de hausse maximale

Comme avec np.diff dans le TP température, calcule diff(T) qui renvoie la liste des Ti+1−TiT_{i+1}-T_i, puis heure_hausse_max(T) qui renvoie l'indice ii (à partir de 0) où cette variation est la plus grande. Pour T = [10, 11, 15, 16, 14], les variations sont [1, 4, 1, -2] et l'indice attendu est 1.

Ctrl/⌘+Entrée