DBSCAN: Mikä se on? Milloin sitä käytetään? Kuinka käyttää sitä.

DBSCAN (meluun perustuvien sovellusten tiheyspohjainen alueellinen klusterointi) on suosittu valvomaton oppimismenetelmä, jota käytetään mallirakennuksessa ja koneoppimisalgoritmeissa. Ennen kuin jatkamme eteenpäin, meidän on määriteltävä, mikä on ”valvomaton” oppimismenetelmä. Valvomattomia oppimismenetelmiä ovat silloin, kun ei ole selvää tavoitetta tai tulosta, jota etsimme. Sen sijaan ryhmittelemme tietoja havaintojen samankaltaisuuden perusteella. Selvitämme esimerkkiä Netflixistä. Aiemmin katsomiesi aiempien ohjelmien perusteella Netflix suosittelee näytöksiä, joita voit katsoa seuraavana. Jokainen, joka on katsellut tai käynyt Netflixissä, on nähnyt alla olevan ruudun suosituksineen (Kyllä, tämä kuva on otettu suoraan Netflix-tililtäni ja jos et ole koskaan katsellut häpeämätöntä ennen kuin ehdotan, että pääset kyseiseen ASAP: iin).

Koska katsoin 'Häpeämätöntä', Netflix suosittelee katselemaan useita muita vastaavia ohjelmia. Mutta mistä Netflix kerää nämä suositukset? Netflixillä ei ole mitään perustaa ennustuksille tai suosituksille (ei selvää lopullista tavoitetta), koska se yrittää ennustaa tulevaisuutta sillä näytöllä, jota aion seurata seuraavaksi. Sen sijaan Netflix tarkastelee muita käyttäjiä, jotka ovat myös aiemmin katselleet ”Häpeämätöntä”, ja tarkastelee sitä, mitä nämä käyttäjät katsoivat ”Häpeämättömän” lisäksi. Näin tekemällä Netflix ryhmittelee käyttäjät yhteen kiinnostuksen kohteiden samankaltaisuuden perusteella. Juuri näin valvomaton oppiminen toimii. Klusteroidaan havainnot vain samankaltaisuuden perusteella toivoen voivan tehdä tarkat johtopäätökset klusterien perusteella.

Takaisin DBSCAN: iin. DBSCAN on klusterointimenetelmä, jota käytetään koneoppimisessa erottamaan korkean tiheyden klusterit matalan tiheyden klustereista. Koska DBSCAN on tiheyspohjainen klusterointialgoritmi, se tekee hienoa työtä etsimällä alueita datasta, jolla on suuri havaintojen tiheys verrattuna tietoalueisiin, jotka eivät ole kovin tiheitä havaintojen kanssa. DBSCAN voi lajitella tietoja myös erimuotoisiksi klustereiksi, mikä on toinen vahva etu. DBSCAN toimii sellaisenaan:

  • Jakaa tietojoukon n ulottuvuuteen
  • Jokaiselle tietojoukon pisteelle DBSCAN muodostaa n mittamuodon kyseisen tietopisteen ympärille ja laskee sitten kuinka monta datapistettä kuuluu kyseiseen muotoon.
  • DBSCAN laskee tämän muodon klusteriksi. DBSCAN laajentaa klusteria toistuvasti, käymällä kunkin klusterin yksittäisen pisteen läpi ja laskemalla muiden lähellä olevien datapisteiden lukumäärä. Ota esimerkki alla olevasta kuvasta:

Edellä mainitun prosessin läpi askel askeleelta, DBSCAN aloittaa jakamalla tiedot n ulottuvuuteen. Kun DBSCAN on tehnyt niin, se alkaa satunnaispisteestä (tässä tapauksessa oletetaan, että se oli yksi punaisista pisteistä), ja se laskee kuinka monta muuta pistettä on lähellä. DBSCAN jatkaa tätä prosessia, kunnes muita datapisteitä ei ole lähellä, ja sitten se näyttää muodostavan toisen klusterin.

Kuten olette ehkä huomauttaneet grafiikasta, on olemassa muutamia parametreja ja eritelmiä, jotka meidän on annettava DBSCAN: lle ennen kuin se toimii. Kaksi parametriä, jotka meidän on määritettävä, ovat sellaisinaan:

Mikä on vähimmäismäärä tietopisteitä, joita tarvitaan yhden klusterin määrittämiseen?
Kuinka kaukana yksi piste voi olla seuraavasta pisteestä samassa klusterissa?

Takaisin grafiikkaan epsilon on säde, joka annetaan datapisteiden välisen etäisyyden testaamiseksi. Jos piste kuuluu toisen pisteen epsilon-etäisyyteen, nämä kaksi pistettä ovat samassa klusterissa.

Lisäksi tässä skenaariossa asetetaan vähimmäispistemääräksi 4. Jokaisen tietopisteen läpi, kunhan DBSCAN löytää 4 pistettä epsilon-etäisyydellä toisistaan, muodostuu klusteri.

TÄRKEÄÄ: Jotta pistettä voidaan pitää ”ydinpisteenä”, sen on sisällettävä minimimäärä pisteitä epsilon-etäisyydellä. Ergo, visualisoinnissa on oikeastaan ​​vain KAKSI ydinpistettä. Katso täältä dokumentaatio ja katso erityisesti min_samples-parametria.

Huomaat myös, että kuvan sininen piste ei sisälly mihinkään klusteriin. DBSCAN EI välttämättä luokittele jokaista datapistettä, ja siksi on loistavaa käsitellä poikkeavia tietoaineistossa. Tarkastellaan alla olevaa kuvaa:

Vasemmassa kuvassa on perinteisempi klusterointimenetelmä, jossa ei oteta huomioon moniulotteisuutta. Oikea kuva osoittaa, kuinka DBSCAN pystyy kääntämään tiedot eri muotoihin ja mittoihin samanlaisten klusterien löytämiseksi.

Vasen kuva kuvaa perinteisempiä klusterointimenetelmiä, kuten K-Means, joissa ei oteta huomioon moniulotteisuutta. Oikea kuva osoittaa, kuinka DBSCAN pystyy kääntämään tiedot eri muotoihin ja mittoihin samanlaisten klusterien löytämiseksi. Oikeassa kuvassa huomataan myös, että tietojoukon ulkoreunaa pitkin olevia pisteitä ei ole luokiteltu, mikä viittaa siihen, että ne ovat poikkeavia datan joukossa.

DBSCAN: n edut:

  • Suorittaa erottaen korkean tiheyden klusterit verrattuna matalan tiheyden klustereihin tietyn tietojoukon sisällä.
  • On hienoa käsitellä poikkeavia tietoaineistossa.

DBSCAN: n haitat:

  • Ei toimi hyvin käsitellessä erikokoisilla klustereilla. Vaikka DBSCAN erottaa suuritiheyksiset klusterit pienitiheyksisistä klustereista, DBSCAN kamppailee saman tiheyden klusterien kanssa.
  • Kamppailee korkean ulottuvuuden datan kanssa. Tiedän, että koko tämä artikkeli, jonka olen sanonut, kuinka DBSCAN pystyy muotoamaan tiedot eri ulottuvuuksiin ja muotoihin. DBSCAN voi kuitenkin mennä vain niin pitkälle, jos sille annetaan tietoja, joilla on liian monia ulottuvuuksia, DBSCAN kärsii

Seuraavaksi olen sisällyttänyt kuinka toteuttaa DBSCAN Pythonissa, missä jälkeenpäin selitän mittareita ja arvioin DBSCAN-mallisi

DBSCAN-toteutus Pythonissa

1. Tietojen määrittäminen X-arvoihimme
Muista, että koska tämä on opiskelua ilman valvontaa, meillä ei ole mitään selkeitä y-arvoja, jotka asetettaisiin.
2. Käynnistetään DBSCAN-malli. Alla olevassa koodissa epsilon = 3 ja min_samples on minimimäärä pisteitä, joita tarvitaan klusterin muodostamiseksi.
3. DBSCAN: n muodostamien tarrojen tallentaminen
4. Niiden pisteiden tunnistaminen, jotka muodostavat ”ydinpisteemme”
5. Klusterien lukumäärän laskeminen
6. Siluettipisteiden laskeminen

Mitat DBSCAN: n suorituskyvyn mittaamiseksi:

Siluettipiste: Siluettipiste lasketaan käyttämällä klusterien keskimääräistä etäisyyttä pisteiden välillä ja keskimääräistä lähintä klusterietäisyyttä. Esimerkiksi klusterilla, jolla on paljon datapisteitä hyvin lähellä toisiaan (suuri tiheys) JA on kaukana seuraavasta lähimmästä klusterista (mikä viittaa siihen, että klusteri on hyvin ainutlaatuinen verrattuna seuraavaan lähimpään), sillä on vahva siluettipiste . Siluettipiste vaihtelee välillä -1 - 1, -1 on huonoin mahdollinen pisteet ja 1 on paras pisteet. Siluettipisteet 0 viittaavat päällekkäisiin klustereihin.

Inertia: Inertia mittaa neliöiden sisäisen klusterisumman (neliöiden summa on kaikkien jäännösten summa). Inertiaa käytetään mittaamaan, kuinka sukulaiset klusterit ovat keskenään, mitä matalampi inertiapiste on, sitä parempi. Kuitenkin on tärkeää huomata, että hitaus riippuu suuresti oletuksesta, että rypäleet ovat kuperat (pallomaiset). DBSCAN ei välttämättä jaa tietoja pallomaisiksi klustereiksi, joten hitaus ei ole hyvä mittari käyttää DBSCAN-mallien arviointiin (siksi en sisällyttänyt hitautta yllä olevaan koodiin). Inertiaa käytetään useammin muissa klusterointimenetelmissä, kuten K-keinot.

Muut lähteet:

Naftali Harrisin blogi on valtava lisäresurssi lisätietoon