de k-NN Regressor en het idee van voorspellen op basis van afstand, kijken we nu naar de k-NN Classifier.
Het principe is hetzelfde, maar classificatie stelt ons in staat verschillende nuttige varianten te introduceren, zoals Radius Nearest Neighbours, Nearest Centroid, multi-class voorspelling en probabilistische afstandsmodellen.
We zullen dus eerst de k-NN-classificator implementeren en vervolgens bespreken hoe deze kan worden verbeterd.
U kunt tijdens het lezen van dit artikel deze Excel/Google-sheet gebruiken om alle uitleg beter te volgen.
Titanic-overlevingsgegevensset
We zullen de Titanic-overlevingsdataset gebruiken, een klassiek voorbeeld waarbij elke rij een passagier beschrijft met kenmerken zoals klasse, geslacht, leeftijd en tarief, en het doel is om te voorspellen of de passagier het heeft overleefd.

Principe van k-NN voor classificatie
De k-NN-classificator lijkt zo veel op de k-NN-regressor dat ik bijna één enkel artikel zou kunnen schrijven om ze allebei uit te leggen.
Sterker nog, als we zoeken naar de k naaste buren, gebruiken we de waarde niet j helemaal niet, laat staan zijn aard.
MAAR er zijn nog steeds enkele interessante feiten over hoe classificaties (binair of meerdere klassen) worden gebouwd en hoe de functies op een andere manier kunnen worden afgehandeld.
We beginnen met de binaire classificatietaak en vervolgens met de classificatie met meerdere klassen.
Eén doorlopende functie voor binaire classificatie
We kunnen dus heel snel dezelfde oefening doen voor één continu kenmerk, met deze dataset.
Voor de waarde van y gebruiken we meestal 0 en 1 om de twee klassen van elkaar te onderscheiden. Maar je merkt het wel, of je merkt dat het een bron van verwarring kan zijn.

Denk er eens over na: 0 en 1 zijn ook getallen, toch? We kunnen dus precies hetzelfde proces uitvoeren alsof we een regressie uitvoeren.
Dat klopt. Er verandert niets in de berekening, zoals je ziet in de volgende schermafbeelding. En je kunt natuurlijk zelf proberen de waarde van de nieuwe waarneming aan te passen.

Het enige verschil is hoe we het resultaat interpreteren. Wanneer we het “gemiddelde” van de buren nemen j waarden wordt dit getal opgevat als de waarschijnlijkheid dat de nieuwe waarneming tot klasse 1 behoort.
In werkelijkheid is de “gemiddelde” waarde dus niet de goede interpretatie, maar eerder het aandeel van klasse 1.
We kunnen deze grafiek ook handmatig maken om te laten zien hoe de voorspelde waarschijnlijkheid verandert over een bereik van X waarden.
Om te voorkomen dat we op een waarschijnlijkheid van 50 procent uitkomen, kiezen we traditioneel voor een oneven waarde kzodat we altijd met meerderheid van stemmen kunnen beslissen.

Twee functies voor binaire classificatie
Als we twee functies hebben, is de werking ook bijna hetzelfde als bij k-NN-regressor.

Eén functie voor classificatie in meerdere klassen
Laten we nu een voorbeeld nemen van drie klassen voor de doelvariabele y.
Dan kunnen we zien dat we het begrip ‘gemiddeld’ niet meer kunnen gebruiken, omdat het getal dat de categorie vertegenwoordigt eigenlijk geen getal is. En we kunnen ze beter ‘categorie 0’, ‘categorie 1’ en ‘categorie 2’ noemen.

Van k-NN tot dichtstbijzijnde centroids
Wanneer k te groot wordt
Laten we nu k groot maken. Hoe groot? Zo groot mogelijk.
Bedenk dat we deze oefening ook deden met de k-NN-regressor, en de conclusie was dat als k gelijk is aan het totale aantal observaties in de trainingsdataset, de k-NN-regressor de eenvoudige schatter van de gemiddelde waarde is.
Voor de k-NN-classificator is het vrijwel hetzelfde. Als k gelijk is aan het totale aantal observaties, krijgen we voor elke klasse het totale aandeel binnen de gehele trainingsdataset.
Sommige mensen noemen deze verhoudingen, vanuit Bayesiaans standpunt, de priors!
Maar dit helpt ons niet veel om een nieuwe waarneming te classificeren, omdat deze priors voor elk punt hetzelfde zijn.
De creatie van centroïden
Laten we dus nog een stap zetten.
Voor elke klasse kunnen we ook alle kenmerkwaarden groeperen X die tot die klasse behoren, en bereken hun gemiddelde.
Deze gemiddelde kenmerkvectoren noemen we zwaartepunten.
Wat kunnen we met deze zwaartepunten doen?
We kunnen ze gebruiken om een nieuwe waarneming te classificeren.
In plaats van de afstanden tot de gehele dataset voor elk nieuw punt opnieuw te berekenen, meten we eenvoudigweg de afstand tot elk klassenzwaartepunt en wijzen we de klasse van het dichtstbijzijnde punt toe.
Met de overlevingsgegevensset van de Titanic kunnen we beginnen met één enkele functie: leeftijden bereken de zwaartepunten voor de twee klassen: passagiers die het overleefden en passagiers die dat niet deden.

Nu is het ook mogelijk om meerdere continue features te gebruiken.
We kunnen bijvoorbeeld de twee functies leeftijd en tarief gebruiken.

En we kunnen enkele belangrijke kenmerken van dit model bespreken:
- De schaal is belangrijk, zoals we eerder hebben besproken voor de k-NN-regressor.
- De ontbrekende waarden zijn hier geen probleem: wanneer we de zwaartepunten per klasse berekenen, wordt elke waarde berekend met de beschikbare (niet-lege) waarden
- We zijn van het meest “complexe” en “grote” model gegaan (in de zin dat het daadwerkelijke model de volledige trainingsdataset is, dus we moeten de hele dataset opslaan) naar het eenvoudigste model (we gebruiken slechts één waarde per functie, en we slaan deze waarden alleen op als ons model)
Van zeer niet-lineair tot naïef lineair
Maar kun je nu één groot nadeel bedenken?
Terwijl de fundamentele k-NN-classificator in hoge mate niet-lineair is, is de Nearest Centroid-methode extreem lineair.
In dit 1D-voorbeeld zijn de twee zwaartepunten eenvoudigweg de gemiddelde x-waarden van klasse 0 en klasse 1. Omdat deze twee gemiddelden dicht bij elkaar liggen, wordt de beslissingsgrens precies het middelpunt ertussen.
Dus in plaats van een stuksgewijs gekartelde grens die afhangt van de exacte locatie van veel trainingspunten (zoals in k-NN), krijgen we een rechte grens die alleen van twee getallen afhangt.
Dit illustreert hoe Nearest Centroids de volledige dataset comprimeert tot een eenvoudige en zeer lineaire regel.

Een opmerking over regressie: waarom zwaartepunten niet van toepassing zijn
Nu is dit soort verbetering niet mogelijk voor de k-NN-regressor. Waarom?
Bij classificatie vormt elke klasse een groep waarnemingen, dus het berekenen van de gemiddelde kenmerkvector voor elke klasse is zinvol, en dit geeft ons de zwaartepunten van de klasse.
Maar bij regressie het doel j is continu. Er zijn geen afzonderlijke groepen, geen klassengrenzen en daarom geen zinvolle manier om “het zwaartepunt van een klasse” te berekenen.
Een continu doel heeft oneindig veel mogelijke waarden, dus we kunnen waarnemingen niet groeperen op basis van hun waarden j waarde om zwaartepunten te vormen.
Het enige mogelijke “zwaartepunt” bij regressie zou de mondiaal gemiddeldewat overeenkomt met het geval k = N in k-NN-regressor.
En deze schatter is veel te eenvoudig om bruikbaar te zijn.
Kortom, Nearest Centroids Classifier is een natuurlijke verbetering voor classificatie, maar heeft geen direct equivalent in regressie.
Verdere statistische verbeteringen
Wat kunnen we nog meer doen met de basis k-NN-classificator?
Gemiddelde en variantie
Met Nearest Centroids Classifier hebben we de eenvoudigste statistiek gebruikt: de gemiddeld. Een natuurlijke reflex in de statistiek is om de variantie ook.
Dus nu is afstand niet langer Euclidisch, maar Mahalanobis afstand. Door deze afstand te gebruiken, krijgen we de waarschijnlijkheid op basis van de verdeling die wordt gekenmerkt door het gemiddelde en de variantie van elke klasse.
Behandeling van categorische functies
Voor categorische kenmerken kunnen we geen gemiddelden of varianties berekenen. En voor k-NN-regressor zagen we dat het mogelijk was om one-hot-codering of ordinale/label-codering uit te voeren. Maar de schaal is belangrijk en niet eenvoudig te bepalen.
Hier kunnen we iets doen dat even betekenisvol is, in termen van waarschijnlijkheden: dat kunnen we tel de verhoudingen van elke categorie binnen een klasse.
Deze verhoudingen werken precies als kansen en beschrijven hoe waarschijnlijk elke categorie binnen elke klasse is.
Dit idee is direct gekoppeld aan modellen zoals Categorisch naïeve Bayeswaar klassen worden gekenmerkt door frequentieverdelingen boven de categorieën.
Gewogen afstand
Een andere richting is het introduceren van gewichten, zodat nabije buren zwaarder tellen dan verre buren. Bij scikit-learn is er het ‘gewichten’-argument waarmee we dit kunnen doen.
We kunnen ook overschakelen van “k buren” naar een vaste straal rond de nieuwe waarneming, wat leidt tot op straal gebaseerde classificaties.
Straal dichtstbijzijnde buren
Soms kunnen we deze volgende afbeelding vinden om de k-NN-classificator uit te leggen. Maar eigenlijk weerspiegelt het met een straal als deze meer het idee van Radius Nearest Neighbours.
Een voordeel is de controle over de buurt. Het is vooral interessant als we de concrete betekenis van de afstand kennen, zoals de geografische afstand.

Maar het nadeel is dat je de straal van tevoren moet weten.
Overigens is dit begrip van de straal van de naaste buren ook geschikt voor regressie.
Samenvatting van verschillende varianten
Al deze kleine veranderingen leveren verschillende modellen op, die elk proberen het basisidee van het vergelijken van buren te verbeteren volgens een complexere definitie van afstand, met een controleparameter die ons in staat stelt lokale buren te krijgen, of een meer globale karakterisering van de buurt.
We zullen hier niet al deze modellen onderzoeken. Ik kan het gewoon niet laten om een beetje te ver te gaan als een kleine variatie natuurlijk tot een ander idee leidt.
Beschouw dit voorlopig als een aankondiging van de modellen die we later deze maand zullen implementeren.

Conclusie
In dit artikel hebben we de k-NN-classificator onderzocht, van de meest basale vorm tot verschillende uitbreidingen.
Het centrale idee is niet echt veranderd: een nieuwe waarneming wordt geclassificeerd door te kijken in hoeverre deze overeenkomt met de trainingsgegevens.
Maar dit eenvoudige idee kan veel verschillende vormen aannemen.
Bij doorlopende kenmerken is de gelijkenis gebaseerd op geometrische afstand.
Bij categorische kenmerken kijken we in plaats daarvan naar hoe vaak elke categorie onder de buren voorkomt.
Wanneer k erg groot wordt, valt de hele dataset uiteen in slechts een paar samenvattende statistieken, wat op natuurlijke wijze leidt tot de Dichtstbijzijnde Centroids-classificator.
Als we deze familie van op afstand gebaseerde en op waarschijnlijkheid gebaseerde ideeën begrijpen, kunnen we inzien dat veel modellen voor machinaal leren eenvoudigweg verschillende manieren zijn om dezelfde vraag te beantwoorden:
Op welke klasse lijkt deze nieuwe waarneming het meest?
In de volgende artikelen zullen we doorgaan met het onderzoeken van op dichtheid gebaseerde modellen, die kunnen worden opgevat als globale maatstaven voor de gelijkenis tussen waarnemingen en klassen.


