Dovrei scegliere il regressore o il classificatore della foresta casuale?


11

Adatto un set di dati con una classe di destinazione binaria dalla foresta casuale. In Python, posso farlo con randomforestclassifier o randomforestregressor.

Posso ottenere la classificazione direttamente da randomforestclassifier oppure eseguire prima randomforestregressor e recuperare un set di punteggi stimati (valore continuo). Quindi posso trovare un valore di soglia per derivare le classi previste dall'insieme dei punteggi. Entrambi i metodi possono raggiungere lo stesso obiettivo (ovvero prevedere le classi per i dati del test).

Anche io posso osservarlo

randomforestclassifier.predict_proba(X_test)[:,1]) 

è diverso da

randomforestregressor.predict(X_test)

Quindi voglio solo confermare che entrambi i metodi sono validi e quale è meglio nell'applicazione casuale della foresta?


1
La mia reazione immediata è che dovresti usare il classificatore perché è esattamente quello per cui è stato creato, ma non sono sicuro al 100% che faccia molta differenza. Usare il regressore sarebbe come usare la regressione lineare invece della regressione logistica - funziona, ma non altrettanto in molte situazioni. Potrei cercare una risposta adeguata, ma non per un giorno o due.
Peter Ellis,

Risposte:


7

Usa il classificatore. No, non sono entrambi validi.

Innanzitutto, ti incoraggio davvero a leggere te stesso sull'argomento Regressione vs classificazione. Perché usare ML senza saperlo ti darà risultati sbagliati che non realizzerai. Ed è abbastanza pericoloso ... ( è un po 'come chiedere in che modo dovresti tenere la pistola o se non importa )

Se si utilizza un classificatore o un regressore dipende solo dal tipo di problema che si sta risolvendo. Hai un problema di classificazione binaria , quindi usa il classificatore.

Potrei eseguire randomforestregressor prima e recuperare una serie di probabilità stimate.

NO. Non ottieni probabilità dalla regressione. Cerca solo di "estrapolare" i valori che dai (in questo caso solo 0 e 1). Ciò significa che i valori superiori a 1 o inferiori a 0 sono perfettamente validi come output di regressione in quanto non prevedono solo due valori discreti come output (che si chiama classificazione !) Ma valori continui.

Se si desidera avere le "probabilità" ( tenere presente che queste non devono essere probabilità ben calibrate ) affinché un determinato punto appartenga a una determinata classe, formare un classificatore (in modo che impari a classificare i dati) e quindi utilizzare .predict_proba (), che quindi prevede la probabilità.

Solo per menzionarlo qui: .predict vs .predict_proba (per un classificatore!)
.Predict prende semplicemente l'output .predict_proba e cambia tutto a 0 sotto una certa soglia (di solito 0,5) rispettivamente a 1 sopra quella soglia.

Nota: certo, internamente, sono gli stessi tranne che per l '"ultimo livello" ecc.! Tuttavia, vederli (o meglio il problema che stanno risolvendo) come completamente diversi!

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.