Regressione lineare o test T. Come scegliere?
\ Spesso ci lasciamo catturare dal clamore intorno a modelli di machine learning sofisticati e scoperte nel deep learning, ma non trascuriamo l'umile regressione lineare.
\ ==In un mondo di LLM e architetture all'avanguardia, la regressione lineare svolge silenziosamente un ruolo cruciale, ed è tempo di far luce su come possa essere vantaggiosa ancora oggi.==
\ Consideriamo uno scenario in cui un'azienda di e-commerce introduce un nuovo banner e vogliamo valutare il suo impatto sulla durata media della sessione. Per raggiungere questo obiettivo, è stato condotto un esperimento e sono stati raccolti dati per l'analisi. Analizziamo i risultati.
Utilizziamo uno strumento familiare per questo compito: il test t.
I risultati sono piuttosto promettenti:
L'incremento della metrica è semplicemente la differenza tra le medie campionarie dei gruppi di controllo e di trattamento. Nel nostro caso, l'incremento stimato è di 0,56 minuti, indicando che gli utenti, in media, trascorrono 33 secondi in più utilizzando il nostro prodotto.
Ora, utilizziamo la regressione lineare con il vettore di trattamento (se il nuovo banner viene mostrato o meno) come variabile indipendente e la durata media della sessione come variabile di output.
Quindi stampiamo il riepilogo del nostro modello:
\
\ In particolare, il coefficiente per la variabile di trattamento si allinea con la nostra precedente stima di incremento di 0,56. Vale la pena notare che R-squared è solo 0,008 e non spieghiamo troppa varianza con questo modello.
È una coincidenza che l'incremento ottenuto dal test t e il coefficiente di trattamento siano gli stessi? Approfondiamo la connessione.
\ Pensiamo a cosa riflette la variabile di trattamento. Quando è uguale a 1, indica la durata media della sessione per gli utenti che hanno visualizzato il banner; quando è uguale a 0, indica la durata media della sessione per gli utenti che non hanno visto il banner. Significa che la variabile di trattamento (o pendenza in termini di regressione lineare) indica il cambiamento nella media tra i gruppi di controllo e di trattamento.
Qual è l'ipotesi nulla per la variabile di trattamento nella regressione lineare?
Qual è l'ipotesi nulla quando applichiamo il test T per l'esperimento? È totalmente la stessa.
Pertanto, quando calcoliamo le statistiche t e il valore p per ipotesi identiche, i nostri risultati rimangono coerenti e identici.
Tuttavia, qual è il motivo per utilizzare la regressione lineare? Non vogliamo solo complicare eccessivamente le cose.
\ Innanzitutto, pensiamo se solo il trattamento è responsabile del cambiamento nella nostra metrica principale.
\ In realtà, questo potrebbe non essere del tutto accurato a causa della presenza di bias di selezione.
\ Il bias di selezione nei test A/B è un tipo di errore quando c'è una differenza sistematica tra i gruppi confrontati che non è dovuta al caso, per esempio:
\
Osserviamo che i vecchi utenti vengono esposti a un nuovo banner più spesso dei nuovi clienti.
\
L'allocazione casuale che utilizziamo nei test AB ci aiuta a mitigarlo, ma è difficile eliminarlo completamente.
\ Formuliamo come stimare l'effetto reale.
ATE: effetto medio del trattamento che miriamo a stimare.
\ ATT: effetto medio del trattamento di quelli trattati. Possiamo anche chiamarlo ACE: effetto causale medio. In realtà possiamo calcolarlo. È la differenza tra le medie campionarie dei gruppi di controllo e di trattamento.
\ SB: bias di selezione che miriamo a minimizzare.
\ Come possiamo minimizzarlo?
\ La regressione lineare ci consente di aggiungere covariate/variabili confondenti. Proviamolo e aggiungiamo come una delle variabili confondenti la durata media della sessione per gli utenti prima dell'esperimento.
E stampiamo il riepilogo del modello:
Il nostro R-squared è salito alle stelle! Ora spieghiamo l'86% della varianza.
\ Il nostro effetto di trattamento ora è 0,47.
Quindi, abbiamo due effetti di trattamento: 0,47 e 0,56; qual è quello corretto?
\ In questo caso, conosciamo con certezza l'effetto reale perché ho simulato i dati e l'incremento reale: 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)
Ciò significa che 0,47 è migliore in termini di differenza assoluta ed è più vicino a riflettere l'incremento effettivo.
L'utilizzo della regressione lineare presenta i seguenti vantaggi:
\ Possiamo usare la regressione lineare per altri test, come il test t di Welch o il test Chi-quadrato?
\ La risposta semplice è sì. Tuttavia, dobbiamo apportare alcune modifiche che discuteremo nei prossimi articoli!


