Articles

AUC-ROC Curve in Machine Learning duidelijk uitgelegd

AUC-ROC Curve – The Star Performer!

u hebt uw machine learning model gebouwd – dus wat nu? Je moet het evalueren en valideren hoe goed (of slecht) het is, zodat je kunt beslissen of je het wilt implementeren. Dat is waar de AUC-ROC curve van belang is.

de naam kan een mondvol zijn, maar het is gewoon te zeggen dat we de “oppervlakte onder de Curve” (AUC) van “Receiver Characteristic Operator” (ROC) berekenen. Verward? Ik voel je! Ik heb in jouw schoenen gestaan. Maar maak je geen zorgen, we zullen zien wat deze termen betekenen in detail en alles zal een fluitje van een cent zijn!

AUC_ROC_meme

voor nu, weet gewoon dat de AUC-ROC curve helpt ons visualiseren hoe goed onze machine learning classifier presteert. Hoewel het alleen werkt voor binaire classificatieproblemen, zullen we tegen het einde zien hoe we het kunnen uitbreiden om ook multi-class classificatieproblemen te evalueren.

We zullen ook onderwerpen als gevoeligheid en specificiteit behandelen, aangezien dit belangrijke onderwerpen zijn achter de AUC-ROC curve.

Ik stel voor om het artikel over Verwarmingsmatrix door te nemen omdat het een aantal belangrijke termen zal introduceren die we in dit artikel zullen gebruiken.

inhoudsopgave

  • Wat zijn gevoeligheid en specificiteit?
  • kans op voorspellingen
  • Wat is de AUC-ROC-Curve?
  • Hoe werkt de AUC-ROC-Curve?
  • AUC-ROC in Python
  • AUC-ROC voor classificatie in meerdere klassen

Wat zijn gevoeligheid en specificiteit?

zo ziet een verwarmingsmatrix eruit:

Verwarmingsmatrix

uit de verwarmingsmatrix kunnen we enkele belangrijke metrics afleiden die niet in het vorige artikel werden besproken. Laten we het hier over hen hebben.

gevoeligheid / True Positive Rate / Recall

Gevoeligheidsformule

gevoeligheid vertelt ons welk deel van de positieve klasse correct is geclassificeerd.

een eenvoudig voorbeeld zou zijn om te bepalen welk deel van de werkelijke zieken correct door het model werden gedetecteerd.

False Negative Rate

False Negative Rate

False Negative Rate (FNR) vertelt ons welk deel van de positieve klasse onjuist is geclassificeerd door de classifier.

een hogere TPR en een lagere FNR is wenselijk omdat we de positieve klasse correct willen classificeren.

specificiteit/True Negative Rate

Specificiteitsformule

specificiteit vertelt ons welk deel van de negatieve klasse correct is geclassificeerd.

aan de hand van hetzelfde voorbeeld als in sensitiviteit, zou specificiteit betekenen dat het percentage gezonde mensen dat correct door het model wordt geïdentificeerd, wordt bepaald.

False Positive Rate

False Positive Rate

FPR vertelt ons welk deel van de negatieve klasse onjuist is geclassificeerd door de classifier.

een hogere TNR en een lagere FPR is wenselijk omdat we de negatieve klasse correct willen classificeren.

uit deze metrics zijn gevoeligheid en specificiteit misschien wel de belangrijkste en we zullen later zien hoe deze worden gebruikt om een evaluatie-metriek te bouwen. Maar laten we eerst begrijpen waarom de kans op voorspelling beter is dan het direct voorspellen van de doelklasse.

waarschijnlijkheid van voorspellingen

een Classificatiemodel voor machinaal leren kan worden gebruikt om de werkelijke klasse van het gegevenspunt direct te voorspellen of om de waarschijnlijkheid van het behoren tot verschillende klassen te voorspellen. Dat laatste geeft ons meer controle over het resultaat. We kunnen onze eigen drempel bepalen om het resultaat van de classifier te interpreteren. Dit is soms verstandiger dan alleen maar een compleet nieuw model bouwen!

het instellen van verschillende drempels voor het classificeren van positieve klasse voor gegevenspunten zal per ongeluk de gevoeligheid en specificiteit van het model veranderen. En een van deze drempels zal waarschijnlijk een beter resultaat geven dan de andere, afhankelijk van of we het aantal valse negatieven of valse positieven willen verlagen.

bekijk onderstaande tabel:

AUC-ROC curve voorbeeld

De metrics veranderen met de veranderende drempelwaarden. We kunnen verschillende verwarmingsmatrices genereren en de verschillende metrics vergelijken die we in de vorige paragraaf hebben besproken. Maar dat zou niet verstandig zijn. In plaats daarvan kunnen we een plot genereren tussen sommige van deze statistieken, zodat we gemakkelijk kunnen visualiseren welke drempel ons een beter resultaat geeft.

de AUC-ROC-curve Lost precies dat probleem op!

Wat is de AUC-ROC-curve?

De Curve van de Receiver Operator Characteristic (ROC) is een evaluatiemetrie voor binaire classificatieproblemen. Het is een waarschijnlijkheidscurve die de TPR tegen FPR op verschillende drempelwaarden zet en in wezen het ‘signaal’ van de ‘ruis’scheidt. De oppervlakte onder de Curve (AUC) is de maat voor het vermogen van een classificeerder om onderscheid te maken tussen klassen en wordt gebruikt als een samenvatting van de ROC-curve.

hoe hoger de AUC, hoe beter de prestaties van het model bij het onderscheiden van de positieve en negatieve klassen.

AUC ROC curve

wanneer AUC = 1, dan is de classifier in staat om perfect onderscheid te maken tussen alle positieve en negatieve klassepunten correct. Als echter de AUC 0 was geweest, dan zou de classificeerder alle negatieven als positieven voorspellen, en alle positieven als negatieven.

AUC ROC-curve

Wanneer 0.5<AUC<1, Er is een grote kans dat de classificeerder de positieve klassen van de negatieve klassen kan onderscheiden. Dit is zo omdat de classifier in staat is om meer aantallen van ware positieven en ware negatieven dan valse negatieven en valse positieven te ontdekken.

AUC ROC random output

wanneer AUC=0,5, dan is de classifier niet in staat om onderscheid te maken tussen positieve en negatieve klassepunten. Wat betekent dat ofwel de classifier is het voorspellen van willekeurige klasse of constante klasse voor alle datapunten.

dus, hoe hoger de AUC-waarde voor een classificeerder, hoe beter zijn vermogen om een onderscheid te maken tussen positieve en negatieve klassen.

Hoe werkt de AUC-ROC-Curve?

In een ROC-curve geeft een hogere X-aswaarde een groter aantal valse positieven aan dan echte negatieven. Terwijl een hogere Y-as waarde duidt op een hoger aantal True positieven dan False negatieven. Dus, de keuze van de drempel hangt af van het vermogen om te balanceren tussen valse positieven en valse negatieven.

laten we wat dieper graven en begrijpen hoe onze ROC-curve eruit zou zien voor verschillende drempelwaarden en hoe de specificiteit en gevoeligheid zouden variëren.

AUC-ROC curve

We kunnen proberen deze grafiek te begrijpen door een verwarmingsmatrix te genereren voor elk punt dat overeenkomt met een drempelwaarde en praten over de prestaties van onze classifier:

Monster Verwarmingsmatrix

punt A is waar de gevoeligheid het hoogst is en de specificiteit het laagst. Dit betekent dat alle positieve klasse punten correct zijn geclassificeerd en alle negatieve klasse punten onjuist zijn geclassificeerd.

in feite komt elk punt op de blauwe lijn overeen met een situatie waarin het werkelijke positieve percentage gelijk is aan het valse positieve percentage.

alle punten boven deze regel komen overeen met de situatie waarin het percentage correct ingedeelde punten van de positieve klasse groter is dan het percentage onjuist ingedeelde punten van de negatieve klasse.

Monster Verwarmingsmatrix

hoewel punt B dezelfde gevoeligheid heeft als punt A, heeft het een hogere specificiteit. Dit betekent dat het aantal onjuist negatieve klassepunten lager is dan de vorige drempel. Dit geeft aan dat deze drempel beter is dan de vorige.

Verwarmingsmatrix AUC ROC

tussen punten C en D is de gevoeligheid op punt C hoger dan punt D voor dezelfde specificiteit. Dit betekent dat Voor hetzelfde aantal onjuist geclassificeerde negatieve klassepunten de classificeerder een hoger aantal positieve klassepunten voorspelde. Daarom is de drempel op punt C beter dan punt D.

nu, afhankelijk van hoeveel verkeerd geclassificeerde punten we willen tolereren voor onze classifier, zouden we kiezen tussen punt B of C om te voorspellen of je me kunt verslaan in PUBG of niet.

” valse hoop is gevaarlijker dan angst.”- J. R. R. Tolkein

Verwarmingsmatrix

punt E is waar de specificiteit het hoogst wordt. Dat betekent dat er geen valse positieven zijn geclassificeerd door het model. Het model kan alle negatieve klassepunten correct classificeren! We zouden dit punt kiezen als ons probleem was om perfecte song aanbevelingen te geven aan onze gebruikers.

uitgaande van deze logica, kunt u raden waar het punt dat overeenkomt met een perfecte classifier op de grafiek zou liggen?

Ja! Het zou in de linkerbovenhoek van de ROC-grafiek staan die overeenkomt met de coördinaat (0, 1) in het Cartesiaanse vlak. Het is hier dat zowel, de gevoeligheid en specificiteit, zou de hoogste zijn en de classifier zou correct classificeren alle positieve en negatieve klasse punten.

inzicht in de AUC-ROC-Curve in Python

nu kunnen we ofwel handmatig de gevoeligheid en specificiteit voor elke drempel testen of sklearn het werk voor ons laten doen. We gaan zeker voor de laatste!

laten we onze willekeurige gegevens maken met behulp van de sklearn make_classificatie methode:

Ik zal de prestaties van twee classifiers op deze dataset testen:

Sklearn heeft een zeer krachtige methode roc_curve () die de ROC berekent voor uw classifier in een kwestie van seconden! Het geeft de FPR, TPR en drempelwaarden terug:

de AUC score kan worden berekend met behulp van de roc_auc_score () methode van sklearn:

0.9761029411764707 0.9233769727403157

probeer deze code uit in het live codering venster hieronder:

We kunnen ook de ROC curves voor de twee algoritmen plottenmet matplotlib:

binaire klasse ROC-curve

uit de grafiek blijkt dat de AUC voor de logistische regressie ROC-curve hoger is dan die voor de KNN ROC-curve. Daarom kunnen we zeggen dat logistieke regressie het beter deed om de positieve klasse in de dataset te classificeren.

AUC-ROC voor multi-Class classificatie

zoals ik al eerder zei, is de AUC-ROC-curve alleen voor binaire classificatieproblemen. Maar we kunnen het uitbreiden naar multiclass classificatieproblemen met behulp van de One vs All-techniek.

dus, als we drie klassen 0, 1 en 2 hebben, zal de ROC voor klasse 0 worden gegenereerd als classificerend 0 tegen niet 0, dat wil zeggen 1 en 2. De ROC voor klasse 1 zal worden gegenereerd als het classificeren van 1 tegen niet 1, enzovoort.

de ROC-curve voor classificatiemodellen met meerdere klassen kan als volgt worden bepaald:

Multiclass ROC

End Notes

Ik hoop dat u dit artikel nuttig vond om te begrijpen hoe krachtig de AUC-ROC-curve metriek is bij het meten van de prestaties van een classifier. Je zult dit veel gebruiken in de industrie en zelfs in data science of machine learning hackathons. Je kunt er beter mee vertrouwd raken!

verder kan ik u de volgende cursussen aanbevelen die nuttig zijn bij het opbouwen van uw inzicht in data science:

  • Inleiding tot Data Science
  • toegepast Machine Learning

u kunt dit artikel ook lezen op onze mobiele APPGet it on Google Play