Classificazione: come perdere il lavoro in 5 minuti usando la regressione lineare

Teoria

Gli algoritmi di classificazione non hanno come obiettivo quello di individuare una funzione che ci permetta di stimare un valore continuo di una variabile dipendente da n altre variabili indipendenti, ma quello di stimare un valore di verità (vero / falso) o di appartenenza ad una determinata classe.

Alcuni esempi di problemi di classificazione:

  • determinare se una email è o meno spam
  • determinare se una transazione è fraudolenta o meno
  • determinare la malignità di un tumore

Le classi in cui vogliamo “inserire” la nostra variabile possono essere due (problemi di classificazione binaria), oppure maggiori di due (problemi di classificazione multipla).

Regressione lineare applicata a problemi di classificazione: una brutta idea

È possibile mostrare come, generalmente, non sia una buona idea quella di applicare una regressione lineare ai problemi di classificazione.

Vediamo subito un esempio che renderà chiaro questo fatto con un esempio.
Disclaimer: poiché il tema dell’esempio è piuttosto brutto, ho preferito adottare un linguaggio scanzonato. Non me ne vogliano le persone che hanno passato o passano veramente situazioni simili: non è mia intenzione sminuire la criticità del tema tumorale.

Il dottor Fiducioso, primario dell’ospedale di Sanilandia, ci contatta perché ha sentito parlare della nostra forte esperienza sul machine learning e ci chiede di sviluppare un software che gli permetta di identificare facilmente se un tumore è “benigno” o “maligno”. Il dottore ci comunica che l’appartenenza a una o all’altra classe è dipendente solamente da una variabile, facilmente misurabile, ovvero la dimensione del tumore. Stiamo affrontando un caso di classificazione binaria (benigno / maligno) monovariata (dipendente dalla sola dimensione del tumore).
Dopo qualche tempo trascorso a raccogliere i dati in ospedale, disponiamo del seguente set di informazioni iniziale:

Dimensione (cm) Classe
1 benigno
7 maligno
3 benigno
1.5 benigno
2.5 benigno
7.2 maligno

Per renderci conto meglio del nostro set, grafichiamo questi dati inserendo, sull’asse delle x, la dimensione in cm, mentre sull’asse delle y un valore pari a 1 se il tumore è maligno o un valore pari a 0 se il tumore è benigno.
Otteniamo questa distribuzione:

tumore1

Ad occhio è ben evidente una “suddivisione” poiché pare proprio che i tumori di dimensione inferiore ai 5 cm siano certamente benigni, mentre superiori a 5 cm siano certamente maligni.

Le nostre competenze, quindi, ci porterebbero a pensare di utilizzare una regressione lineare. Se utilizzassimo la regressione lineare, otterremmo questa retta:

tumore2

Tutto parrebbe funzionare. Potremmo individuare un valore di soglia della stima oltre il quale classifichiamo il nostro tumore come maligno, mentre sotto al quale lo classificheremmo come benigno. Nell’esempio ho mostrato un valore di soglia pari a 0.5.

Ad esempio, prendendo un tumore da 3cm, otterremmo una stima pari a 0.2 che, essendo minore di 0.5, ci permetterebbe di classificarlo come “benigno”. Prendendo un tumore da 6 centimetri, invece, avremmo una stima di oltre 0.7 e quindi lo classificheremmo come “maligno”.

Fieri del nostro operato, implementiamo questa soluzione in un software che consegnamo al dottor Fiducioso: il software prende in ingresso la dimensione del tumore e restituisce al dottore la classificazione che abbiamo determinato secondo l’algoritmo appena descritto.

Tutto pare funzionare bene, fintantoché arriva un nuovo caso, leggermente diverso da quelli che avevamo raccolto fino a quel momento:

Dimensione (cm) Classe
30 maligno

“Perfetto!”, diciamo. Il tumore ha dimensione maggiore dei fatidici 5 centimetri ed è maligno e il software l’ha correttamente diagnosticato come tale. “Il nostro algoritmo funziona alla grande!”. Così decidiamo di inserire questo nuovo valore nel sistema, “d’altronde – pensiamo – è una nuova esperienza che non farà altro che rendere più affidabile le previsioni”.

Comunichiamo al dottor Fiducioso questa nostra nuova versione, con tanto di strette di mano e sorrisi. Il giorno dopo, però, quando ormai stavamo spendendo i soldi appena guadagnati, il dottore ci chiama urgentemente, segnalandoci che il software è impazzito e sta iniziando a diagnosticare come benigni dei tumori che non lo sono per niente. Gravissimo!

Come mai questa figuraccia? Semplice: non abbiamo pensato bene a cosa sia successo alla nostra retta di regressione inserendo quel nuovo dato all’interno del set di apprendimento. Ecco mostrato:

tumore3

Quel nuovo valore ha “sbilanciato” la nostra retta di regressione, cambiandone profondamente la pendenza. Il problema è che questo singolo dato ha fatto sì che tutti i tumori che precedentemente erano diagnosticati come “maligni” (per via del fatto che la stima era superiore alla nostra soglia di 0.5), ora vengono classificati come “benigni”.

La realtà è che prima siamo stati fortunati: la regressione lineare funzionava per puro caso. È bastato un solo valore, un po’ fuori dalla normalità, per sconvolgere tutto e rovinare tutto il nostro operato.

È scontato, a questo punto, che la regressione lineare non sia da usare per i problemi di classificazione (così come è scontato che il Dottor Fiducioso ci abbia immediatamente licenziato, chiedendoci pure indietro i soldi che ci aveva dato – e che noi avevamo già speso).

Regressione logistica

La regressione logistica è, in realtà, l’algoritmo che avremmo dovuto utilizzare per non perdere il nostro posto di lavoro e, ancor più importante, permettere di salvare più vite. Tale algoritmo non ha niente da spartire con la canonica regressione lineare, ma è un algoritmo che ci permette di risolvere problemi di questo tipo, ovvero problemi di classificazione.

A differenza della funzione (normalmente una retta) che ci permetteva di stimare la nostra variabile dipendente nel caso di regressione lineare, ora facciamo uso della cosiddetta funzione logisticasigmoidale. È proprio per via di questa funzione che chiamiamo questo algoritmo “regressione logistica”.

La funzione logistica è una funzione che ha questo andamento:

290px-logistic-curve
Fonte: Wikipedia.org

Come possiamo notare, la variabile dipendente assume valori strettamente compresi tra 0 e 1 che è proprio ciò che serve a noi (nel caso di classificazione binaria).

Nel caso della regressione logistica vogliamo, quindi, che la nostra funzione ipotesi ci dica quale sia la probabilità di appartenenza del nostro elemento ad una particolare classe.
Ovviamente, nel caso di classificazione binaria, la probabilità che l’elemento appartenga alla classe 1 (tumore benigno) sommata alla probabilità che l’elemento appartenga alla classe 2 (tumore maligno) deve sempre e comunque dare 1.

A questo punto, il problema di ottimizzazione da risolvere è identico a quello della regressione lineare, ma ovviamente con una funzione di costo diversa.
Tuttavia questo sarà argomento di un prossimo articolo!

A presto,
Marco

Please follow and like us:
No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Teoria
I 5 algoritmi di Machine Learning più utilizzati

Prendendo spunto da un recente articolo, elenco in rassegna i 5 algoritmi più utilizzati nell’ambito del machine learning, secondo l’autore. È importante conoscere e “sporcarsi le mani” con questi algoritmi, poiché si presume che nel prossimo futuro, oltre il 25% degli attuali lavori sarà soppiantato da algoritmi di machine learning. Eccoli, riassunti …

Teoria
Un po’ di gergo del Machine Learning

Proprio oggi mi sono imbattuto in un interessantissimo articolo su Linkedin Pulse che aveva come argomento il gergo che viene solitamente utilizzato nell’ambito del machine learning. Trovo necessario che, chiunque decida di avvicinarsi a questa branca interessantissima della matematica/informatica, debba necessariamente avere padronanza del linguaggio tecnico per poter comprendere a fondo …

Teoria
Reti neurali: cosa sono?

Abbiamo visto come alcuni problemi di machine learning non siano tanto volti a trovare come soluzione una funzione (es. stima del prezzo di una casa), ma ad associare una fra un insieme di classi. Questi problemi vengono genericamente detti problemi di classificazione. Supponiamo, ad esempio, di voler scrivere un software in grado di …

Social media & sharing icons powered by UltimatelySocial