Régression linéaire ou Test T. Comment choisir ?
\ Nous sommes souvent pris dans l'engouement autour des modèles sophistiqués d'apprentissage automatique et des percées en apprentissage profond, mais n'oublions pas la modeste régression linéaire.
\ ==Dans un monde de LLM et d'architectures de pointe, la régression linéaire joue discrètement un rôle crucial, et il est temps de mettre en lumière comment elle peut être bénéfique encore aujourd'hui.==
\ Considérons un scénario où une entreprise de commerce électronique introduit une nouvelle bannière, et nous visons à évaluer son impact sur la durée moyenne de session. Pour y parvenir, une expérience a été menée et des données ont été collectées pour analyse. Analysons les résultats.
Utilisons un outil familier pour cette tâche : le test t.
Les résultats sont plutôt prometteurs :
L'augmentation de la métrique est simplement la différence entre les moyennes des échantillons des groupes témoin et de traitement. Dans notre cas, l'augmentation estimée est de 0,56 minutes, indiquant que les utilisateurs passent en moyenne 33 secondes de plus à utiliser notre produit.
Maintenant, utilisons la régression linéaire avec le vecteur de traitement (si la nouvelle bannière est affichée ou non) comme variable indépendante et la durée moyenne de session comme variable de sortie.
Ensuite, nous imprimons le résumé de notre modèle :
\
\ Notamment, le coefficient pour la variable de traitement s'aligne avec notre estimation d'augmentation antérieure de 0,56. Il convient de noter que le R-carré n'est que de 0,008, et nous n'expliquons pas beaucoup de variance avec ce modèle.
Est-ce une coïncidence que l'augmentation obtenue du test t et le coefficient de traitement soient identiques ? Explorons la connexion.
\ Réfléchissons à ce que reflète la variable de traitement. Quand elle est égale à 1, elle indique la durée moyenne de session pour les utilisateurs qui ont vu la bannière ; quand elle est égale à 0, elle indique la durée moyenne de session pour les utilisateurs qui n'ont pas vu la bannière. Cela signifie que la variable de traitement (ou pente en termes de régression linéaire) signifie le changement de moyenne entre les groupes témoin et de traitement.
Quelle est l'hypothèse nulle pour la variable de traitement en régression linéaire ?
Quelle est l'hypothèse nulle lorsque nous appliquons le test T pour l'expérience ? C'est totalement la même.
Par conséquent, lors du calcul des statistiques t et de la valeur p pour des hypothèses identiques, nos résultats restent cohérents et identiques.
Cependant, quelle est la raison d'utiliser la régression linéaire ? Nous ne voulons pas simplement compliquer les choses.
\ D'abord, réfléchissons si seul le traitement est responsable du changement de notre métrique principale.
\ En réalité, cela peut ne pas être entièrement exact en raison de la présence de biais de sélection.
\ Le biais de sélection dans les tests A/B est un type d'erreur lorsqu'il existe une différence systématique entre les groupes comparés qui n'est pas due au hasard, par exemple :
\
Nous constatons que les anciens utilisateurs sont exposés à une nouvelle bannière plus souvent que les nouveaux clients.
\
L'allocation aléatoire que nous utilisons dans les tests AB nous aide à l'atténuer, mais il est difficile de l'éliminer complètement.
\ Formulons comment estimer l'effet réel.
ATE : effet moyen du traitement que nous visons à estimer.
\ ATT : effet moyen du traitement de ceux traités. Nous pouvons aussi l'appeler ACE : effet causal moyen. Nous pouvons effectivement le calculer. C'est la différence entre les moyennes des échantillons des groupes témoin et de traitement.
\ SB : biais de sélection que nous visons à minimiser.
\ Comment pouvons-nous le minimiser ?
\ La régression linéaire nous permet d'ajouter des covariables/variables confondantes. Essayons et ajoutons comme variable confondante la durée moyenne de session pour les utilisateurs avant l'expérience.
Et imprimons le résumé du modèle :
Notre R-carré a explosé ! Maintenant, nous expliquons 86 % de la variance.
\ Notre effet de traitement est maintenant de 0,47.
Donc, nous avons deux effets de traitement : 0,47 et 0,56 ; lequel est correct ?
\ Dans ce cas, nous connaissons avec certitude l'effet réel car j'ai simulé des données et l'augmentation réelle : 0,5
import numpy as np import pandas as pd from scipy import stats import statsmodels.api as sm np.random.seed(45) n = 500 x = np.random.normal(loc = 10 ,scale = 3, size= 2 * n) y = x + np.random.normal(loc = 2 , scale = 1 ,size = len(x)) # For 50% of users we simulate treatment effect treat = 1 * (np.random.rand(2 * n) <= 0.5) experiment = pd.DataFrame(x, columns=["covariate"]) experiment['metric'] = y experiment['treatment'] = treat experiment['noise'] = np.random.normal(size = len(experiment)) # Add noise and uplift to 'metric' for rows where 'treat' is equal to 1 # The real uplift is 0.5 experiment['metric'] = experiment.apply(lambda row: row['metric'] + 0.5 * row['treatment'] + row['noise'] if row['treatment'] == 1 else row['metric'], axis=1)
Cela signifie que 0,47 est meilleur en termes de différence absolue et est plus proche de refléter l'augmentation réelle.
L'utilisation de la régression linéaire présente les avantages suivants :
\ Pouvons-nous utiliser la régression linéaire pour d'autres tests, comme le test t de Welch ou le test du Chi-carré ?
\ La réponse simple est oui. Cependant, nous devons apporter quelques ajustements dont nous discuterons dans les prochains articles !


