Supponiamo che io voglia imparare un classificatore che prevede se un'e-mail è spam. E supponiamo che solo l'1% delle e-mail sia spam.
La cosa più semplice da fare sarebbe imparare il banale classificatore che dice che nessuna delle e-mail è spam. Questo classificatore ci darebbe una precisione del 99%, ma non imparerebbe nulla di interessante e avrebbe un tasso del 100% di falsi negativi.
Per risolvere questo problema, le persone mi hanno detto di "sottocampionare" o di imparare su un sottoinsieme dei dati in cui il 50% degli esempi sono spam e il 50% non è spam.
Ma sono preoccupato per questo approccio, poiché una volta creato questo classificatore e iniziato a usarlo su un vero corpus di e-mail (al contrario di un set di test 50/50), è possibile prevedere che molte e-mail sono spam quando davvero no. Solo perché è abituato a vedere molto più spam di quello effettivamente presente nel set di dati.
Quindi, come possiamo risolvere questo problema?
("Upsampling" o ripetizione degli esempi di allenamento positivo più volte, quindi il 50% dei dati sono esempi di allenamento positivo, sembra soffrire di problemi simili).