5

Ho alcuni risultati di apprendimento automatico che non capisco. Sto usando Python sciki-learn, con oltre 2 milioni di dati di circa 14 funzionalità. La classificazione di 'ab' sembra piuttosto male sulla curva di richiamo di precisione, ma il ROC di Ab sembra altrettanto buono della classificazione di molti altri gruppi. Cosa può spiegarlo?Buona curva ROC ma scarsa curva di precisione di richiamo

enter image description here

enter image description here

+0

Il tuo set è bilanciato? (ad esempio, come molti come non ab) – Calimo

+0

No è ​​molto sbilanciato, Ab è inferiore al 2% – KubiK888

+0

Ecco qui. Prova il sovracampionamento per mitigare il problema. – Calimo

risposta

8

Classe squilibrio.

A differenza della curva ROC, le curve PR sono molto sensibili allo squilibrio. Se si ottimizza il classificatore per una buona AUC su dati sbilanciati, è probabile che si ottengano risultati di richiamo di precisione scadenti.

+1

Capisco, ma cosa significa veramente in termini di prestazioni del test? È buono (basato su ROC) o cattivo (basato su P-R)? Come può un test essere buono se nella curva P-R sopra il meglio che può fare è il 40% sia per precisione che per richiamo? – KubiK888

+0

Significa che devi fare attenzione quando segnali le prestazioni di un test su dati sbilanciati. Nelle applicazioni mediche può avere un impatto terribile (vedi test dell'AIDS come un caso da manuale), in altri può andare bene, dipende molto dalla tua specifica applicazione. – Calimo

+0

Non ho modificato l'impostazione predefinita mentre sto utilizzando scikit, ma come hai detto sembra ottimizzare in base alla AUC, c'è un modo per ottimizzare basato sulla coppia Precision/recall nei dati sbilanciati? – KubiK888