Comment fonctionne la régression linéaire

Régression intermédiaire avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Le tracé standard d'une régression linéaire simple

Nuage de points avec une droite de tendance de régression linéaire.

Régression intermédiaire avec statsmodels en Python

Visualiser les résidus

Le nuage de points avec la droite de tendance, plus des segments reliant les points à la droite, représentant les résidus.

Régression intermédiaire avec statsmodels en Python

Une métrique pour le meilleur ajustement

L'idée la plus simple (qui ne marche pas)

  • Faire la somme de tous les résidus.
  • Certains résidus sont négatifs.

L'idée suivante (qui marche)

  • Mettre chaque résidu au carré, puis additionner.
  • On appelle cela la somme des carrés.
Régression intermédiaire avec statsmodels en Python

Parenthèse sur l'optimisation numérique

Tracé d'une équation quadratique

x = np.arange(-4, 5, 0.1)
y = x ** 2 - x + 10

xy_data = pd.DataFrame({"x": x,
                        "y": y})

sns.lineplot(x="x",
             y="y",
             data=xy_data)

Fonction quadratique y = x ** 2 - x + 10

Régression intermédiaire avec statsmodels en Python

Résoudre l'équation avec le calcul différentiel

$y = x ^ 2 - x + 10$

$\frac{\partial y}{\partial x} = 2 x - 1$

$0 = 2 x - 1$

$x = 0{,}5$

$y = 0{,}5 ^ 2 - 0{,}5 + 10 = 9{,}75$

  • Toutes les équations ne se résolvent pas ainsi.
  • Vous pouvez laisser Python s'en charger.

Ne vous inquiétez pas si cela n'est pas clair : vous n'en aurez pas besoin pour les exercices.

La même fonction quadratique, résolue pour trouver le minimum

Régression intermédiaire avec statsmodels en Python

minimize()

from scipy.optimize import minimize
def calc_quadratic(x):
  y = x ** 2 - x + 10
  return y
minimize(fun=calc_quadratic,
         x0=3)
      fun: 9.75
 hess_inv: array([[0.5]])
      jac: array([0.])
  message: 'Optimization terminated successfully.'
     nfev: 6
      nit: 2
     njev: 3
   status: 0
  success: True
        x: array([0.49999998])
Régression intermédiaire avec statsmodels en Python

Un algorithme de régression linéaire

Définissez une fonction pour calculer la métrique de somme des carrés.

 

Appelez minimize() pour trouver les coefficients qui minimisent cette fonction.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Régression intermédiaire avec statsmodels en Python

Passons à la pratique !

Régression intermédiaire avec statsmodels en Python

Preparing Video For Download...