k-NN-regressoren en het idee van op afstand gebaseerde voorspellingen, nu kijken we naar k-NN-classificatoren.
De principes zijn hetzelfde, maar classificatie stelt ons in staat verschillende nuttige varianten te introduceren, zoals Radius Nearest Neighbours, Nearest Centroid, multiclass-voorspelling en probabilistische afstandsmodellen.
We zullen dus eerst de k-NN-classificator implementeren en vervolgens bespreken hoe we deze kunnen verbeteren.
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 op basis van kenmerken zoals klasse, geslacht, leeftijd en tarief, en het doel is om te voorspellen of de passagier het heeft overleefd.

k-NN-principes voor classificatie
De k-NN-classificator lijkt zo veel op de k-NN-regressor dat ik bijna een heel artikel zou kunnen schrijven waarin ik beide uitleg.
Sterker nog, als we ernaar zoeken k dichtstbijzijnde buur, we gebruiken de waarde niet Jij helemaal niet, speciaal zijn aard.
MAAR er zijn nog steeds enkele interessante feiten over hoe classificaties (binair of multiclass) worden gemaakt en hoe functies op een andere manier kunnen worden afgehandeld.
We beginnen met binaire classificatietaken en vervolgens met 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 y-waarden gebruiken we meestal 0 en 1 om onderscheid te maken tussen de twee klassen. Maar je kunt je ervan bewust zijn, anders besef je dat het een bron van verwarring kan zijn.

Denk er nu eens over na: 0 en 1 zijn ook getallen, toch? We kunnen dus hetzelfde proces uitvoeren als toen we de regressie uitvoerden.
Dat klopt. Er is geen verandering in de berekeningen, zoals je kunt zien in de volgende schermafbeelding. En je kunt natuurlijk zelf proberen de waarde van de nieuwe waarneming te veranderen.

Het enige verschil zit in de manier waarop we de resultaten interpreteren. Als we het ‘gemiddelde’ van de buren nemen Jij waarde wordt dit getal opgevat als de waarschijnlijkheid dat de nieuwe waarneming tot klasse 1 behoort.
Eigenlijk is de ‘gemiddelde’ waarde dus geen goede interpretatie, maar eerder een klasse 1-verhouding.
We kunnen deze grafieken ook handmatig maken om te laten zien hoe de voorspelde kansen binnen een bepaald bereik veranderen X waarden.
Om een waarschijnlijkheid van 50 procent te vermijden, kiezen we traditioneel voor oneven waarden kzodat we altijd met meerderheid van stemmen beslissingen kunnen nemen.

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

Een van de functies 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 langer kunnen gebruiken, omdat het getal dat een categorie vertegenwoordigt eigenlijk geen getal is. En we zouden ze ‘categorie 0’, ‘categorie 1’ en ‘categorie 2’ moeten noemen.

Van k-NN tot dichtstbijzijnde centroid
Wanneer k te groot wordt
Laten we nu k groot maken. Hoe groot? Zo groot mogelijk.
Bedenk dat we deze oefening ook hebben gedaan met een k-NN-regressor, en de conclusie is dat als k gelijk is aan het totale aantal observaties in de trainingsdataset, de k-NN-regressor een 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 ervan in de gehele trainingsdataset.
Sommige mensen noemen deze verhoudingen, vanuit Bayesiaans standpunt, prioritair!
Dit helpt ons echter niet veel bij het classificeren van nieuwe waarnemingen, omdat de prior voor elk punt hetzelfde is.
Centroid-creatie
Laten we dus nog een stap zetten.
Voor elke klasse kunnen we ook alle kenmerkwaarden groeperen X die tot die klasse behoren, en bereken het gemiddelde.
Deze gemiddelde kenmerkvector noemen we zwaartepunt.
Wat kunnen we doen met dit zwaartepunt?
We kunnen het gebruiken om nieuwe waarnemingen te classificeren.
In plaats van voor elk nieuw punt de afstand tot de gehele dataset opnieuw te berekenen, meten we eenvoudigweg de afstand tot het zwaartepunt van elke klasse en wijzen deze toe aan de dichtstbijzijnde klasse.
Met de overlevingsdataset van de Titanic kunnen we beginnen met één kenmerk: leeftijden bereken de zwaartepunten voor de twee klassen: passagiers die het overleefden en passagiers die dat niet deden.

Nu is het ook mogelijk om enkele continue functies te gebruiken.
We kunnen bijvoorbeeld twee kenmerken gebruiken: leeftijd en tarief.

En we kunnen enkele belangrijke kenmerken van dit model bespreken:
- Deze schaal is belangrijk, zoals we eerder hebben besproken voor k-NN-regressoren.
- Ontbrekende waarden zijn hier geen probleem: wanneer we de zwaartepunten per klasse berekenen, wordt elk zwaartepunt berekend met de beschikbare (niet-lege) waarden
- We zijn van het meest “complexe” en “grote” model gegaan (in de zin dat het model eigenlijk de gehele trainingsdataset is, dus we moeten alle datasets opslaan) naar het eenvoudigste model (we gebruiken slechts één waarde per feature, en we slaan alleen deze waarden op als ons model)
Van zeer niet-lineair tot naïef lineair
Maar kun je nu één groot nadeel bedenken?
Hoewel de basisklasificator van k-NN in hoge mate niet-lineair is, is de Nearest Centroid-methode zeer 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, is de beslissingsgrens eenvoudigweg het middelpunt ertussen.
Dus in plaats van scherpe, stuksgewijs grenzen te creëren die afhangen van de exacte locatie van veel trainingspunten (zoals in k-NN), krijgen we rechte stukken die afhankelijk zijn van slechts twee getallen.
Het illustreert hoe Nearest Centroid een volledige dataset comprimeert tot een eenvoudige en zeer lineaire regel.

Een opmerking over regressie: waarom zwaartepunten niet van toepassing zijn
Dergelijke verbeteringen zijn nu niet mogelijk op k-NN-regressors. Waarom?
Bij classificatie vormt elke klasse een groep waarnemingen, dus het berekenen van de gemiddelde kenmerkvector voor elke klasse is zinvol, en dit levert het klassenzwaartepunt op.
Maar bij regressie het doel Jij continu. Er zijn geen afzonderlijke groepen, geen klassengrenzen en daarom geen zinvolle manier om het ‘massamiddelpunt van een klasse’ te berekenen.
Een continu doel heeft een oneindig aantal mogelijke waarden, dus we kunnen waarnemingen niet groeperen op basis daarvan Jij waarden om het zwaartepunt te vormen.
Het enige mogelijke “centrum” in de regressie is mondiaal gemiddeldewat overeenkomt met het geval k = N in k-NN-regressor.
En deze schatter is te eenvoudig om bruikbaar te zijn.
Kortom, de Nearest Centroid Classifier is een natuurlijke verbetering voor classificatie, maar heeft geen direct equivalent in regressie.
Verdere statistische verbeteringen
Wat kunnen we nog meer doen met een eenvoudige k-NN-classificator?
Gemiddelde en variantie
Met Nearest Centroid Classifier gebruiken we de eenvoudigste statistieken, namelijk gemiddeld. De natuurlijke reflex in de statistiek is om toe te voegen verschil ook.
Dus nu is de afstand niet langer Euclidisch, maar Mahalanobi afstand. Met behulp van deze afstanden verkrijgen we kansen op basis van een verdeling die wordt gekenmerkt door het gemiddelde en de variantie van elke klasse.
Categorische afhandeling van functies
Voor categorische kenmerken kunnen we het gemiddelde of de variantie niet berekenen. En voor k-NN-regressoren zien we dat het mogelijk is om one-hot-codering of ordinale/label-codering uit te voeren. Schaal is echter belangrijk en niet eenvoudig vast te stellen.
Hier kunnen we iets doen dat even betekenisvol is, in termen van waarschijnlijkheid: dat kunnen we bereken het aandeel van elke categorie in de klas.
Deze verhoudingen werken precies als kansen en beschrijven hoe waarschijnlijk het is dat elke categorie binnen elke klasse valt.
Dit idee houdt rechtstreeks verband met modellen zoals Categorisch naïeve Bayeswaar de lessen door worden gekenmerkt frequentieverdeling boven categorieën.
Gewogen afstand
Een andere richting is het introduceren van gewichten, zodat nabije buren meer worden meegeteld dan verre buren. In scikit-learn is er een ‘gewicht’-argument waarmee we dit kunnen doen.
We kunnen ook van “k buren” naar een vaste straal rond een nieuwe waarneming gaan, wat leidt tot een op straal gebaseerde classificator.
Straal van de dichtstbijzijnde buur
Soms kunnen we de volgende grafiek vinden om de k-NN-classificator uit te leggen. Maar eigenlijk weerspiegelt het met een straal als deze beter het idee van Radius Nearest Neighbours.
Een van de voordelen is controle over de omgeving. Dit wordt erg interessant als we de concrete betekenis van afstand kennen, zoals geografische afstand.

Het nadeel is echter dat je eerst de straal moet kennen.
Overigens is het idee van de straal van de dichtstbijzijnde buur ook geschikt voor regressie.
Samenvatting van de verschillende varianten
Al deze kleine veranderingen zorgen voor verschillende modellen, die elk proberen het basisidee van het vergelijken van buren te verbeteren op basis van complexere afstandsdefinities, met controleparameters waarmee we lokale buren kunnen verkrijgen, of een meer globale karakterisering van de omgeving.
We zullen hier niet al deze modellen onderzoeken. Ik kan het niet laten om te ver te gaan als kleine variaties op natuurlijke wijze tot andere ideeën leiden.
Beschouw dit voorlopig als een aankondiging van het model dat we later deze maand zullen implementeren.

Conclusie
In dit artikel onderzoeken we de k-NN-classificator van de meest basale vorm tot enkele uitbreidingen.
Het hoofdidee verandert niet veel: nieuwe waarnemingen worden geclassificeerd op basis van hun gelijkenis met de trainingsgegevens.
Maar dit eenvoudige idee kan veel verschillende vormen aannemen.
Bij doorlopende kenmerken is de gelijkenis gebaseerd op geometrische afstand.
Met categorische kenmerken kijken we naar hoe vaak elke categorie voorkomt tussen aangrenzende categorieën.
Wanneer k erg groot wordt, wordt de gehele dataset opgesplitst in meerdere samenvattende statistieken, wat uiteraard leidt tot Dichtstbijzijnde Centroid-classificator.
Als we dit scala aan op afstand gebaseerde en op waarschijnlijkheid gebaseerde ideeën begrijpen, kunnen we zien dat veel machine learning-modellen verschillende manieren zijn om dezelfde vraag te beantwoorden:
Op welke klasse lijkt deze nieuwe waarneming het meest?
In het volgende artikel zullen we doorgaan met het verkennen van op dichtheid gebaseerde modellen, die kunnen worden opgevat als een maatstaf voor de mondiale gelijkenis tussen waarnemingen en klassen.



