AI 101
Mikä on KNN (K-lähin naapuri)?

Mikä on K-lähin naapuri (KNN)?
K-lähin naapuri on koneoppimisen tekniikka ja algoritmi, jota voidaan käyttää sekä regressio- että luokittelutehtävissä. K-lähin naapuri tarkastelee valitun määrän tietopisteiden etikettejä kohdetietopisteen ympärillä, jotta voidaan tehdä ennuste siitä, mihin luokkaan tietopiste kuuluu. K-lähin naapuri (KNN) on käsitteellisesti yksinkertainen mutta hyvin voimakas algoritmi, ja näistä syistä se on yksi suosituimmista koneoppimisen algoritmeista. Otetaan syvä sukellus KNN-algoritmiin ja katsotaan, miten se toimii. Hyvä ymmärrys siitä, miten KNN toimii, antaa mahdollisuuden arvostaa parhaat ja huonoin käyttötapaukset KNN:lle.
K-lähin naapurin yleiskatsaus

Kuva: Antti Ajanki AnAj via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:KnnClassification.svg)
Kuvitellaan tietojoukkoa 2D-tasolla. Kuvitellaan joukko tietopisteitä graafissa, jotka ovat levittäytyneet graafissa pienissä ryhmissä. KNN tarkastelee tietopisteiden jakautumista, ja riippuen siitä, mitä argumentteja mallille annetaan, se erottaa tietopisteet ryhmiin. Nämä ryhmät saavat sitten etiketin. KNN-mallin päätärinä oletus on, että tietopisteet/eksemplaarit, jotka ovat lähellä toisiaan, ovat hyvin samankaltaisia, kun taas jos tietopiste on kaukana toisesta ryhmästä, se on erilainen kuin ne tietopisteet.
KNN-malli laskee samankaltaisuuden käyttämällä etäisyyttä kahteen pisteeseen graafissa. Mitä suurempi etäisyys pisteiden välillä on, sitä vähemmän ne ovat samankaltaisia. On useita tapoja laskea etäisyyttä pisteiden välillä, mutta yleisin etäisyyden mittari on pelkästään euklidinen etäisyys (etäisyys kahden pisteen välillä suoralla linjalla).
KNN on valvottu oppimisen algoritmi, mikä tarkoittaa, että esimerkit tietojoukossa on oltava merkitty/luokittu. On kaksi muuta tärkeää asiaa, jotka on tiedettävä KNN:stä. Ensinnäkin, KNN on epäparametrinen algoritmi. Tämä tarkoittaa, että mitään oletuksia tietojoukosta ei tehdä, kun mallia käytetään. Sen sijaan malli rakennetaan kokonaan tarjotun datan perusteella. Toiseksi, tietojoukkoa ei jaeta koulutus- ja testijoukkoihin KNN:n käytön aikana. KNN ei tee yleistyksiä koulutus- ja testijoukon välillä, joten kaikki koulutusdata käytetään, kun mallia pyydetään tekemään ennusteita.
Miten KNN-algoritmi toimii
KNN-algoritmi kulkee läpi kolme päävaihetta, kun sitä suoritetaan:
- Aseta K valittuun naapurin määrään.
- Laske etäisyys annetun/testitietopisteen ja tietojoukon esimerkkien välillä.
- Järjestä lasketut etäisyydet.
- Hae ylemmän K-merkintöjen etiketit.
- Palauta ennuste testitietopisteestä.
Ensimmäisessä vaiheessa K valitaan käyttäjän toimesta, ja se kertoo algoritmille, montako naapuria (montako ympäröivää tietopistettä) tulee ottaa huomioon, kun tehdään päätös siitä, mihin ryhmään kohdetietopiste kuuluu. Toisessa vaiheessa huomataan, että malli tarkistaa etäisyyden kohdetietopisteen ja jokaisen esimerkin tietojoukossa. Etäisyydet lisätään listaan ja järjestetään. Sen jälkeen järjestetty lista tarkistetaan, ja ylemmän K-alkeiden etiketit palautetaan. Toisin sanoen, jos K on asetettu 5:een, malli tarkistaa etiketit viidestä lähimmästä tietopisteestä kohdetietopisteeseen. Kun tehdään ennuste kohdetietopisteestä, on merkitystä siitä, onko tehtävä regressio vai luokittelutehtävä. Regressio-tehtävän osalta käytetään ylemmän K-merkintöjen keskiarvoa, kun taas luokittelutehtävän osalta käytetään ylemmän K-merkintöjen moodia.
Täsmälliset matemaattiset operaatiot, joita käytetään KNN:n suorittamiseen, vaihtelevat valitun etäisyyden mittarin mukaan. Jos haluat tietää enemmän siitä, miten mittarit lasketaan, voit lukea jotain yleisimmistä etäisyyden mittareista, kuten euklidinen, manhattan ja minkowski.
Miksi K:n arvo on tärkeä
KNN:n käytön päärajoitus on, että virheellinen K:n arvo (väärä määrä naapureita, jotka tulee ottaa huomioon) voidaan valita. Jos tämä tapahtuu, palautettavat ennusteet voivat olla merkittävästi virheellisiä. On erittäin tärkeää, että KNN-algoritmin käytön aikana valitaan oikea arvo K:lle. Haluat valita K:n arvon, joka maksimoi mallin kykyä tehdä ennusteita näkemättömälle datalle ja vähentää virheiden määrää, joita se tekee.

Kuva: Agor153 via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)
Alempien K-arvojen tarkoittaa, että KNN:n tekemät ennusteet ovat vähemmän vakaita ja luotettavia. Saadaksesi käsityksen siitä, miksi näin on, tarkastellaan tapausta, jossa meillä on 7 naapuria kohdetietopisteen ympärillä. Oletetaan, että KNN-malli toimii K-arvolla 2 (pyydämme sitä tarkastelemaan kahden lähimmän naapurin tekemään ennusteeseen). Jos suurin osa naapureista (viisi seitsemästä) kuuluu Blue-luokkaan, mutta kaksi lähintä naapuria sattumalta ovat Red, malli ennustaa, että kohdetietopiste on Red. Vaikka mallin arvaus on tällainen, parempi arvaus olisi Blue.
Jos näin on, miksi emme valitse vain suurinta K-arvoa, jonka voimme? Tämä johtuu siitä, että mallin pyytäminen tarkastelemaan liian monia naapureita vähentää myös tarkinluetta. Kun KNN-malli tarkastelee yhä suurempaa säteeltä, se alkaa lopulta tarkastella tietopisteitä, jotka ovat lähempänä muita ryhmiä kuin kohdetietopistettä, ja virheellinen luokittelu alkaa tapahtua. Esimerkiksi vaikka alkuperäinen valittu piste oli yhdessä punaisista alueista yllä, jos K asetetaan liian korkeaksi, malli ulottuu muihin alueisiin tarkastellakseen pisteitä. KNN-mallin käytön aikana kokeillaan eri K-arvoja, jotta voidaan nähdä, kumpi arvo antaa mallille parhaimman suorituskyvyn.
KNN:n edut ja haitat
Tarkastellaan joitain KNN-mallin etuja ja haittoja.
Edut:
KNN voidaan käyttää sekä regressio- että luokittelutehtävissä, toisin kuin jotkut muut valvotut oppimisen algoritmit.
KNN on erittäin tarkin ja helppokäyttöinen. Se on helppo ymmärtää, tulkita ja toteuttaa.
KNN ei tee mitään oletuksia datasta, mikä tarkoittaa, että sitä voidaan käyttää laajasti erilaisiin ongelmiin.
Haitat:
KNN säilyttää suurimman osan tai kaiken datan, mikä tarkoittaa, että malli vaatii paljon muistia ja on laskennallisesti kallista. Suuret tietojoukot voivat myös aiheuttaa, että ennusteiden tekeminen kestää kauan.
KNN on erittäin herkkä tietojoukon mittakaavalle, ja se voidaan helposti häikäistä merkityksettömillä ominaisuuksilla verrattuna muihin malleihin.
K-lähimman naapurin yhteenveto
K-lähin naapuri on yksi yksinkertaisimmista koneoppimisen algoritmeista. Vaikka KNN on käsitteellisesti yksinkertainen, se on myös voimakas algoritmi, joka antaa melko korkean tarkinluen useimmissa ongelmissa. Kun käytät KNN:ää, varmista, että kokeilet eri K-arvoja, jotta löydät sen, joka antaa korkeimman tarkinluen.












