Salta al contenuto
Note per Studenti Esercizio - Regressione logistica one-vs-one e one-vs-all sul dataset iris

Esercizio - Regressione logistica one-vs-one e one-vs-all sul dataset iris

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 4

Testo (laboratorio LAB4, classificazione multiclasse). Dataset iris con due sole feature (sepal length, sepal width) e target a tre classi (setosa, versicolor, virginica). Dividere con campionamento stratificato (80%80\% training, 20%20\% test) e:

  1. addestrare con la regressione logistica (discesa del gradiente, η0=0,1\eta_0=0{,}1, decadimento 10−410^{-4}, 10 000 iterazioni) una strategia one-vs-one;
  2. addestrare una strategia one-vs-all;
  3. calcolare l'accuracy sul test per entrambe e commentare.

Teoria usata: Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax → (logistica binaria, one-vs-one, one-vs-all); Metriche di classificazioneIn classificazione binaria ogni previsione è vero positivo (TP), vero negativo (TN), falso positivo (FP, errore di tipo I) o falso negativo (FN, errore di tipo II). Da queste quattro quantità: accuracy $=\frac{TP+TN}{TP+TN+FP+FN}$, specificità $=\frac{TN}{TN+FP}$, precision $=\frac{TP}{TP+FP}$, recall $=\frac{TP}{TP+FN}$, e la loro media armonica $F_1=\frac{2PR}{P+R}$. Con dati sbilanciati l'accuracy inganna (un modello che predice sempre la classe maggioritaria ha 99%): si usano precision, recall, F1, ROC-AUC, la cross-validation stratificata e il riequilibrio con undersampling o oversampling (non SMOTE). Cambiando la soglia sulla probabilità si ottiene la curva ROC (TPR contro FPR) e l'area AUC. Approfondimento: non nel programma di Telecomunicazioni.Metriche di classificazione → (accuracy, matrice di confusione).

Numero di classificatori e dati usati

Con C=3C=3 classi:

  • one-vs-one: C(C−1)/2=3C(C-1)/2=3 classificatori (setosa-versicolor, versicolor-virginica, virginica-setosa); ciascuno è addestrato solo sui campioni delle due classi coinvolte (8080 su 120120), con etichetta 11 per la prima classe e 00 per la seconda;
  • one-vs-all: C=3C=3 classificatori (ciascuna classe contro le altre due); ciascuno è addestrato su tutti i 120120 campioni, con 4040 positivi e 8080 negativi: un po' sbilanciato (il difetto tipico: la classe «resto» è più numerosa).

La divisione stratificata dà training 120120 e test 3030 campioni (1010 per classe).

Previsione

  • One-vs-one: ogni classificatore binario σ(β0+β1x1+β2x2)≥0,5\sigma(\beta_0+\beta_1x_1+\beta_2x_2)\ge0{,}5 vota per la prima o per la seconda classe; per ogni campione si contano i voti e vince la classe con più voti; i pareggi si risolvono a caso (altre scelte: conoscenza del dominio o media delle probabilità).
  • One-vs-all: si calcolano le tre probabilità σ(xTβc)\sigma(x^T\beta_c) e si sceglie la classe con probabilità massima.

Risultati (seme 0)

Entrambe le strategie danno accuracy 0,7330{,}733 sul test (2222 campioni su 3030). Matrice di confusione dell'one-vs-all (le righe sono le classi vere):

setosa versicolor virginica
setosa 1010 00 00
versicolor 00 66 44
virginica 00 44 66

La setosa è separata perfettamente (le sue feature del sepalo sono molto diverse). Versicolor e virginica si sovrappongono nelle due variabili del sepalo, quindi un classificatore lineare le confonde (88 errori su 2020). I coefficienti one-vs-all (β0,βlunghezza,βlarghezza)(\beta_0,\beta_{\text{lunghezza}},\beta_{\text{larghezza}}) sono circa: setosa (2,9; −5,4; 8,4)(2{,}9;\,-5{,}4;\,8{,}4) (sepalo corto e largo), versicolor (5,5; 0,2; −2,6)(5{,}5;\,0{,}2;\,-2{,}6) (si associa solo alla larghezza, con segno negativo), virginica (−8,2; 2,0; −1,5)(-8{,}2;\,2{,}0;\,-1{,}5) (sepalo lungo).

Commento. I due schemi coincidono nell'accuracy, perché il difetto è nelle feature, non nella strategia: aggiungendo le due variabili del petalo (che separano bene versicolor e virginica) l'accuracy sale molto (con LogisticRegression di scikit-learn e le stesse partizioni: 0,7330{,}733 con le due variabili del sepalo, 1,01{,}0 con tutte e quattro le feature). Con la regressione softmax si addestrerebbe un solo modello con CC vettori di parametri e perdita cross-entropia.

Codice (struttura)

python
pairs = [(c0, c1), (c1, c2), (c2, c0)]
for a, b in pairs:                                           # one-vs-one
    m = (y_tr == a) | (y_tr == b)
    beta[(a, b)] = train_logreg(X_tr[m], (y_tr[m] == a).astype(int), 0.1, 1e-4, 10000)
# previsione: per ogni campione, voto di ciascun classificatore, classe con più voti (pareggio a caso)

for c in classes:                                            # one-vs-all
    beta[c] = train_logreg(X_tr, (y_tr == c).astype(int), 0.1, 1e-4, 10000)
pred = classes[np.argmax([sigmoid(X_te1 @ beta[c]) for c in classes], axis=0)]   # probabilità massima

train_logreg è la funzione di Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax → (gradiente XT(y^−y)/nX^T(\hat y-y)/n con passo adattivo).

Lezioni in cui compare

Teoria collegata