Domanda:
È valido selezionare un modello basato sull'AUC?
evdstat
2011-06-27 22:40:43 UTC
view on stackexchange narkive permalink

Ho trama ROC per diversi modelli. Questi modelli sono stati utilizzati per classificare i miei campioni in 2 classi.

Utilizzando questi comandi, posso ottenere grafici di sensibilità e specificità per ciascun modello:

  perf <- performance ( pred, "sens", "spec") plot (perf)  

Devo fare affidamento sull'area sotto la curva (AUC) per ciascun modello per concludere quale modello è migliore? Oltre all'AUC, dovremmo considerare altri risultati in modo da concludere quale modello è migliore?

Se sì, come ottenere AUC con R? Ho ragione nel presumere che "più è piccolo, migliore è il potere di classificazione del modello?"

@evdstat In realtà hai due account non registrati: quello attuale e questo [quello più vecchio] (http://stats.stackexchange.com/users/5137/evdstat). Per favore, scegline uno, registrati e li uniremo in seguito.
Non vedo cosa abbiano a che fare le curve ROC, la sensibilità o la specificità con il problema in questione.
@Frank 1. questo è un commento alla domanda, non una risposta. 2. AUC, l'area sotto una curva ROC è un modo accettabile di misurare il potere predittivo di un modello di classificazione e quindi una misura che può essere utilizzata nel processo di selezione del modello. Il ROC stesso visualizza l'AUC e consente il calcolo di una soglia decisionale.
Giusto, avrei dovuto inserirlo come commento. L'AUC è un'utile misura di riepilogo una volta terminato l'adattamento del modello. Non è il criterio oggettivo ideale per la selezione del modello (la probabilità dovrebbe essere utilizzata per questo). Non fornisce una base razionale per una soglia decisionale poiché presume che le utilità siano guidate dai dati invece che dal soggetto.
@Frank Capisco, forse abbiamo un problema con i termini. 1. Per me come ML, modello = tutto ciò che predice la risposta e selezione del modello = scegli il modello il cui potere predittivo è il migliore (purché la complessità non sia troppo alta ecc.) 2. Non capisco il punto riguardo alla decisione soglia: se si calcola un ROC ponderato sulla base di una matrice costi-benefici si può determinare la soglia decisionale ottimale (vincolata al modello, ovviamente) ... ad esempio per l'attività di marketing diretto (mailing).
Sembra che utilizzare solo la probabilità per la selezione del modello limiti la casella degli strumenti di modellazione (quando parliamo di modelli predittivi nel regno del data mining - l'OP non menziona il tipo di modello, lo scopo, ecc.). Ad esempio, come calcolare -2LL con alberi decisionali potenziati dal gradiente?
La probabilità fornisce varie proprietà di ottimalità. Le soglie decisionali non possono derivare dai dati. Devono provenire dall'ambiente più ampio e dalla funzione di perdita / utilità. L'uso di ROC per sviluppare un classificatore è in contrasto con la teoria delle decisioni. Per il marketing diretto è possibile calcolare il rischio previsto per ogni persona e utilizzare una curva di portanza per trovare il limite che offre il miglior rapporto qualità-prezzo. Nessun ROC necessario o utile.
Tre risposte:
user88
2011-06-27 23:40:24 UTC
view on stackexchange narkive permalink

AUROC è uno dei tanti modi per valutare il modello, in effetti giudica il buon posizionamento (o misura di "sicurezza") che il tuo metodo può produrre. La domanda se usarlo piuttosto che il richiamo di precisione o la semplice accuratezza o misura F dipende solo da una particolare applicazione.

La selezione del modello è un problema di per sé - generalmente dovresti anche usare il punteggio credi che si adatti meglio all'applicazione e fai attenzione che la tua selezione sia significativa (di solito non lo è e alcuni altri fattori potrebbero essere importanti, come anche il tempo di calcolo).

Informazioni su AUC in R - Vedo che usi ROCR , che fa belle trame ma è anche terribilmente gonfio, quindi lento e difficile da integrare. Prova colAUC dal pacchetto caTools : è veloce e banale da usare. Oh, e un AUC maggiore è migliore.

MattBagg
2012-11-13 02:23:42 UTC
view on stackexchange narkive permalink

Come ha scritto mbq, la risposta al fatto che dovresti usare AUC dipende da cosa stai cercando di fare. Due punti che vale la pena considerare:

AUROC è insensibile ai cambiamenti nella distribuzione delle classi. Pone persino l'accento sulle diverse classi, il che significa che può riflettere male le prestazioni di un algoritmo se c'è un grande squilibrio nella distribuzione delle classi. D'altra parte, se sei più interessato a identificare le caratteristiche delle classi piuttosto che la loro prevalenza, questo è un punto di forza.

AUROC non cattura i diversi costi dei diversi risultati ed è raro che ti interessi allo stesso modo dei falsi positivi e dei falsi negativi.

Trovo ragionevole AUROC. Le curve sono di facile lettura: sono come una versione intuitiva di una matrice di confusione. Ma è importante sapere cosa stiamo leggendo e cosa è rimasto.

Vedi anche: Valutazione e combinazione di metodi basati su curve ROC e PR

cdgore
2012-11-06 13:07:40 UTC
view on stackexchange narkive permalink

Poiché si utilizza ROCR, è possibile ottenere il punto della curva ROC che massimizza l'area e utilizzarlo per determinare la soglia corrispondente:

  my_prediction <- forecast.gbm (object = gbm_mod, newdata = X, 100) pred <- predizione (my_prediction, Y) perf <- performance (pred, 'tpr', 'fpr') r <- rev ((as.data.frame (perf@y.values) * (1-as.data.frame (perf@x.values))) [, 1]) soglia <- as.data.frame (perf@alpha.values) [which (r == max (r)), 1] [1]  

Puoi pensare a questa ottimizzazione semplicemente come al punto che rende il rettangolo più grande possibile sotto la curva ROC.

Sebbene questo sia corretto e utile in generale, francamente, non vedo come questo risponda a nessuna delle domande del PO. A parte, mi sembra che la chiamata a "rev" debba essere rimossa.
Oh, dimenticavo: benvenuto nel sito :).
Hmm, dopo aver riletto la domanda, ho pensato che stesse chiedendo come ottenere la soglia ottimale per la classificazione, quando stava solo chiedendo come usare ROC / AUC. Vabbè, ma hai bisogno di rev () perché y * (1-x) "inverte" l'asse x.
Per quanto ho visto, l'OP ha chiesto come selezionare un modello basato su AUC (e se questo è ok). Quando si determina una soglia basata esclusivamente sulla curva, è anche possibile attenersi all'AUC. Ho applicato la tua funzione su `data (ROCR.simple)` e ho scoperto che con e senza rev il risultato è corretto, ma senza rev ottengo una soglia più vicina al punto ottimale in roc-curve (0,1).
Si prega di vedere i commenti precedenti. AUC e ROC non dovrebbero avere alcun ruolo. La funzione di verosimiglianza gioca un ruolo per una ragione, e ci sono misure $ R ^ 2 $ generalizzate basate sulla verosimiglianza logaritmica.
@FrankHarrell quando dici funzione di somiglianza, intendi la probabilità dei parametri dati i dati? L'uso della funzione di verosimiglianza in questo caso non aiuta a determinare quale modello si adatta meglio ai dati?
Poiché la probabilità è un grande criterio di ottimalità, è anche la base migliore per giudicare il contenuto delle informazioni (insieme alle sue varianze come $ R ^ 2 $ generalizzate e AIC).


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...