Perché non avvicinarsi alla classificazione attraverso la regressione?


51

Alcuni materiali che ho visto sull'apprendimento automatico hanno affermato che è una cattiva idea affrontare un problema di classificazione attraverso la regressione. Ma penso che sia sempre possibile fare una regressione continua per adattare i dati e troncare la previsione continua per produrre classificazioni discrete. Allora perché è una cattiva idea?


penso che la regressione sia sempre più complicata della classificazione nell'ambiente di produzione

Risposte:


57

"..approach problema di classificazione attraverso la regressione .." per "regressione" Presumo che tu intenda la regressione lineare, e confronterò questo approccio con l'approccio di "classificazione" per adattare un modello di regressione logistica.

Prima di farlo, è importante chiarire la distinzione tra regressione e modelli di classificazione. I modelli di regressione prevedono una variabile continua, come la quantità di pioggia o l'intensità della luce solare. Possono anche prevedere le probabilità, come la probabilità che un'immagine contenga un gatto. Un modello di regressione che prevede la probabilità può essere utilizzato come parte di un classificatore imponendo una regola di decisione - ad esempio, se la probabilità è pari o superiore al 50%, decidere che si tratta di un gatto.

La regressione logistica prevede le probabilità ed è quindi un algoritmo di regressione. Tuttavia, è comunemente descritto come un metodo di classificazione nella letteratura sull'apprendimento automatico, perché può essere (ed è spesso) utilizzato per creare classificatori. Esistono anche algoritmi di classificazione "veri", come SVM, che prevedono solo un risultato e non forniscono una probabilità. Non discuteremo questo tipo di algoritmo qui.

Regressione lineare e logistica su problemi di classificazione

Come spiega Andrew Ng , con la regressione lineare si inserisce un polinomio tra i dati - diciamo, come nell'esempio che segue stiamo adattando una linea retta attraverso il set di campioni {dimensione del tumore, tipo di tumore} :

inserisci qui la descrizione dell'immagine

Sopra, i tumori maligni ottengono e quelli non maligni ottengono e la linea verde è la nostra ipotesi . Per fare previsioni possiamo dire che per ogni data dimensione del tumore , se diventa maggiore di , prevediamo un tumore maligno, altrimenti prevediamo benigno.10h(x)xh(x)0.5

In questo modo possiamo prevedere correttamente ogni singolo campione di set di allenamento, ma ora cambiamo un po 'l'attività.

Intuitivamente è chiaro che tutti i tumori con una certa soglia maggiore sono maligni. Quindi aggiungiamo un altro campione con un'enorme dimensione del tumore ed eseguiamo di nuovo la regressione lineare:

inserisci qui la descrizione dell'immagine

Ora il nostro non funziona più. Per continuare a fare previsioni corrette, dobbiamo cambiarlo in o qualcosa del genere, ma non in questo modo dovrebbe funzionare l'algoritmo.h(x)>0.5malignanth(x)>0.2

Non possiamo cambiare l'ipotesi ogni volta che arriva un nuovo campione. Invece, dovremmo apprenderlo dai dati del set di addestramento e quindi (usando l'ipotesi che abbiamo appreso) fare previsioni corrette per i dati che non abbiamo mai visto prima.

Spero che questo spieghi perché la regressione lineare non è la soluzione migliore per i problemi di classificazione! Inoltre, potresti voler guardare VI. Regressione logistica. Video di classificazione su ml-class.org che spiega l'idea in modo più dettagliato.


MODIFICARE

chanceislogic ha chiesto cosa farebbe un buon classificatore. In questo esempio particolare probabilmente useresti la regressione logistica che potrebbe apprendere un'ipotesi come questa (sto solo inventando):

inserisci qui la descrizione dell'immagine

Si noti che sia la regressione lineare e regressione logistica dare una linea retta (o un polinomio di ordine superiore), ma quelle linee hanno un significato diverso:

  • h(x) per interpolazioni di regressione lineare, o estrapolazioni, l'output e predice il valore per che non abbiamo visto. È semplicemente come collegare una nuova e ottenere un numero non elaborato, ed è più adatto per attività come la previsione, ad esempio il prezzo dell'auto in base a {dimensioni dell'auto, età dell'auto} ecc.xx
  • h(x) per la regressione logistica indica la probabilità che appartenga alla classe "positiva". Questo è il motivo per cui è chiamato un algoritmo di regressione: stima una quantità continua, la probabilità. Tuttavia, se si imposta una soglia sulla probabilità, come , si ottiene un classificatore e in molti casi questo è ciò che viene fatto con l'output di un modello di regressione logistica. Ciò equivale a mettere una linea sulla trama: tutti i punti che si trovano sopra la linea del classificatore appartengono a una classe mentre i punti seguenti appartengono all'altra classe.x h ( x ) > 0,5xh(x)>0.5

Quindi, la linea di fondo è che nello scenario di classificazione utilizziamo un ragionamento completamente diverso e un algoritmo completamente diverso rispetto allo scenario di regressione.


@andreister: Ma cosa sarebbe se tutti i valori anomali fossero stati rimossi o troncati, la regressione lineare è ancora una cattiva idea?
Tomek Tarczynski,

Il tuo esempio è buono, tuttavia non mostra cosa farebbe un "buon classificatore". saresti in grado di aggiungere questo? si noti che l'aggiunta di punti dati dovrebbe cambiare la linea per qualsiasi metodo. Non hai spiegato perché questo è un brutto cambiamento.
probabilityislogic

1
@andreister: il tuo esempio ha mostrato che alcuni dati errati potrebbero rovinare la regressione lineare. Ma possiamo usare la regressione quadric o ipotesi ancora più complicate per rendere la "regressione" un buon classificatore?
Strin

1
@probabilityislogic - buon punto, ho aggiornato la risposta.
andreister

2
@Strin: ipotesi più complicate hanno maggiori probabilità di sovrautilizzare i dati. (Cioè, per adattarsi alle stranezze dei dati che hai in mano, risultando in uno scarso adattamento ai dati futuri.) Ricordo una lezione che ho preso in cui un ragazzo in prima fila era solo sicuro che il professore ci trattenesse e non dandoci gli algoritmi sofisticati che ci avrebbero permesso di uccidere i mercati dell'elettricità ... Non ha mai veramente capito un eccesso di equipaggiamento.
Wayne,

14

Non riesco a pensare a un esempio in cui la classificazione sia in realtà l'obiettivo finale. Quasi sempre il vero obiettivo è fare previsioni accurate, ad esempio, delle probabilità. In quello spirito, la regressione (logistica) è tua amica.


5
Mi sembra che la classificazione effettiva sia in definitiva l'obiettivo di gran parte dei processi automatizzati in cui è impraticabile o impossibile avere un intervento o un giudizio umano. Quando riceve, diciamo, un segnale digitale trasmesso rumoroso, il ricevitore non può decidere che un determinato bit debba essere 0,97 invece di 0 o 1.
Cardinale

6
Fatta eccezione per il fatto che il costo di un falso positivo o il costo di un falso negativo raramente sono sotto il controllo dell'analista che ha effettuato la classificazione, quindi l'analista originale non può scegliere in modo affidabile il punto di riferimento "giusto" per la classificazione. Inoltre, è consigliabile avere una "zona grigia" di rischio intermedio in cui non viene effettuata alcuna classificazione e la raccomandazione è "ottenere più dati".
Frank Harrell,

1
Penso di ritenere esattamente l'opposto dell'affermazione in questa risposta e di non aver mai incontrato questa prospettiva in tutta la mia formazione universitaria in machine learning. È molto sorprendente per me che qualcuno lo direbbe. In pratica, ho quasi sempre affrontato problemi in cui le persone pensano di voler prevedere una quantità continua, ma in realtà vogliono prevedere l'appartenenza a diversi secchi categorici di tale quantità. Faccio fatica a trovare casi in cui è effettivamente utile prevedere una quantità continua in termini di inferenza sostanziale alla base del problema.
ely,

9
Penso che tu abbia dato una buona dose di dogma di apprendimento automatico per scontato. Stai formulando un gran numero di ipotesi ingiustificate. Uno di questi è che le persone hanno effettivamente bisogno di una scelta forzata in un secchio categorico. Potrebbero affermare di volerlo, ma non ne hanno davvero bisogno nella maggior parte delle situazioni. Le scelte non devono essere forzate. Un'ottima scelta è "nessuna decisione, ottenere più dati". La previsione di una quantità continua sottostante è solitamente ciò che è necessario. Varrebbe la pena studiare la teoria delle decisioni (Bayes) ottimale. Se puoi fornire un esempio concreto, commenterò ulteriormente.
Frank Harrell,

11
+1 sul commento di @Frank Harrell. Ad esempio, prevedere temperature, precipitazioni, livelli dei fiumi è immensamente più utile delle previsioni che sarà caldo o umido o inonderà. Anche se il problema è pecora o capra? una stima di pr (pecora) è più istruttiva di "pecora" o "capra" binaria.
Nick Cox,

1

Perché non guardare alcune prove? Sebbene molti sostengano che la regressione lineare non sia adatta alla classificazione, potrebbe comunque funzionare. Per ottenere un po 'di intuizione, ho incluso la regressione lineare (usata come classificatore) nel confronto tra i classificatori di scikit-learn . Ecco cosa succede:

inserisci qui la descrizione dell'immagine

Il limite di decisione è più stretto rispetto agli altri classificatori, ma l'accuratezza è la stessa. Proprio come il classificatore di vettore di supporto lineare, il modello di regressione offre un iperpiano che separa le classi nello spazio delle caratteristiche.

Come vediamo, usare la regressione lineare come classificatore può funzionare, ma come sempre, convaliderei le previsioni.

Per la cronaca, ecco come appare il mio codice classificatore:

class LinearRegressionClassifier():

def __init__(self):
    self.reg = LinearRegression()

def fit(self, X, y):
    self.reg.fit(X, y)

def predict(self, X):
    return np.clip(self.reg.predict(X),0,1)

def decision_function(self, X):
    return np.clip(self.reg.predict(X),0,1)

def score(self, X, y):
    return accuracy_score(y,np.round(self.predict(X)))


0

1,10,100,...1,2,3,...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.