Blog.

Ridge Regression


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
Data Science, machine-learning

ridge-regression-machine-learning-cross-validation-grid-search-data-science-data-scientist-course-italiano

Ridge Regression, chiamato anche Tikhonov regularization, è una versione regolarizzata della Regressione Lineare (linear regression): aggiungendo un termine di regolarizzazione (regularization term), comunemente denominato alpha, alla cost function, l’algoritmo di apprendimento viene forzato a tenere i weight quanto più bassi possibili.

Abbiamo iniziato in quinta, ma per un motivo chiaro: avendo fornito una definizione come introduzione ti sarà facile ripassare quando un giorno tornerai su questo post unicamente per lei.

Not bad

Ora però ci prendiamo un po’ di tempo per allinearci e procedere a comprendere davvero cosa sia la Ridge Regression.

Ridge Regression: why?

Il miglior modo per comprendere la Ridge Regression è capire perché esista.

Quando ci allontaniamo dalle sfide di Kaggle per addentrarci in quella giungla del mondo reale troviamo dataset con decine di feature.

Vuoi perché il nostro stakeholder ci abbia fornito l’intero database di produzione aziendale, o per il semplice fatto che si è deciso di tenere ogni colonna e non perderne nemmeno una, al momento della creazione del modello predittivo dobbiamo affrontare una sfida niente male.

Tendenzialmente iniziamo a lavorare con modelli semplici, ben lontani dalle complicate reti neurali.

Ricorda infatti che le Neural Network non sono la soluzione a ogni problema.

Ora dobbiamo tenere presente che i modelli di regressione lineare (tra i più semplici) difficilmente vengono usati in applicazioni concrete per due ragioni:

  • Faticano a esprimere relazioni non lineari
  • Tendono all’overfitting quando il numero di feature aumenta

Gli Alberi Decisionali (Decision Trees) possono risolvere il primo problema, per il secondo dobbiamo invece indagare più a fondo.

Il problema è che un modello di regressione lineare ha pochi gradi di libertà (degrees of freedom): quando questi aumentano, la complessità del modello aumenta, e con essa il rischio di overfitting.

Intuitivamente i gradi di libertà sono i punti in cui la funzione si flette, e curva.

Quando usiamo un modello di regressione lineare applicato, ad esempio, a 100 feature, questo è quello che succede:

Per tracciare il grafico ho generato dei numeri randomici, puro rumore, che simulano però la presenza di feature inutili nel dataset (cosa molto comune).

Per risolvere questo problema, entra in gioco Ridge Regression.

Ridge Regression: how?

Abbiamo capito perché sia importante, ora svisceriamone il funzionamento.

Ridge Regression aggiunge un fattore di penalizzazione (penalty factor) alla cost function. Ciò determina la perdita d’importanza del valore di una feature, che a seconda della penalità, può essere più o meno accentuata.La forza della penalità è tunable controllata cioé da un hyperparameter che deve essere setato.

Parlando di regolarizzazione in generale esistono due tipi di penalizzazione:

  • L1 (absolute size) penalizza il valore assoluto dei coefficienti del modello
  • L2 (squared size) penalizza il quadrato del valore dei coefficienti del modello.

Ridge Regression usa la L2 penalty

In pratica questo produce coefficienti piccoli, ma nessuno di loro è mai annullato. Quindi i coefficienti non sono mai 0. Il fenomeno è denominato feature shrinkage.

Ridge Regression Sklearn

Teoria a parte, è arrivato il momento di prendere in mano un po’ di codice.

Qui puoi trovare la documentazione di sklearn, mentre di seguito ti faccio vedere come importare il tutto velocemente:

from sklearn.linear_model import Ridge
ridge = Ridge(alpha=0.1)
ridge.fit(x_train,y_train)
ridge.score(x_test,y_test)

Un caldo abbraccio, Andrea.

Taggeddata sciencedata scientistteoria


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum