DBSCAN: Što je to? Kada ga koristiti? Kako ga koristiti.

DBSCAN (Prostorno klasteriranje aplikacija zasnovanih na gustoći) popularna je nenadzirana metoda učenja koja se koristi u izradi modela i algoritama strojnog učenja. Prije nego što nastavimo dalje, trebamo definirati što je "nenadzirani" način učenja. Metode učenja bez nadzora su one kada ne postoji jasan cilj ili ishod koji želimo pronaći. Umjesto toga, podatke okupljamo na temelju sličnosti opažanja. Da biste pojasnili, uzmimo Netflix kao primjer. Na temelju prijašnjih emisija koje ste gledali u prošlosti, Netflix će vam preporučiti emisije koje ćete gledati u sljedećem. Svatko tko je ikad gledao ili bio na Netflixu vidio je donji ekran s preporukama (Da, ova slika je uzeta izravno s mog Netflix računa i ako nikad prije niste gledali Shameless, predlažem vam da dođete na taj ASAP).

Budući da sam gledao 'Besramno', Netflix preporučuje gledati još nekoliko sličnih emisija. Ali odakle Netflix prikuplja te preporuke? S obzirom na to da pokušava predvidjeti budućnost onom emisijom koju ću gledati sljedeće, Netflix nema na čemu predviđanja ili preporuke temeljiti (nema jasan definitivni cilj). Umjesto toga, Netflix promatra druge korisnike koji su također gledali "Besramno" u prošlosti i gleda što su ti korisnici gledali pored "Besramnog". Radeći to, Netflix grupira svoje korisnike na temelju sličnosti interesa. Upravo tako funkcionira nenadzirano učenje. Jednostavno grupiranje opažanja na temelju sličnosti, nadajući se donošenju točnih zaključaka na temelju klastera.

Povratak na DBSCAN. DBSCAN je metoda klasteriranja koja se koristi u strojnom učenju za odvajanje klastera visoke gustoće od klastera niske gustoće. S obzirom da je DBSCAN algoritam klasteriranja temeljen na gustoći, to čini sjajan posao pretraživanja područja u podacima koja imaju veliku gustoću opažanja, u odnosu na područja podataka koja nisu vrlo gusta s opažanjima. DBSCAN može poredati podatke i u klastere različitih oblika, što je još jedna velika prednost. DBSCAN djeluje kao takav:

  • Podijeli skup podataka na n dimenzija
  • Za svaku točku skupa podataka DBSCAN formira n dimenzionalni oblik oko te podatkovne točke, a zatim broji koliko podatkovnih točaka spada u taj oblik.
  • DBSCAN broji ovaj oblik kao klaster. DBSCAN iterativno proširuje klaster, prolazeći kroz svaku pojedinačnu točku unutar klastera i brojeći ostale podatkovne točke u blizini. Pogledajte primjer ispod:

Prolazeći kroz gore spomenuti postupak korak po korak, DBSCAN će započeti dijeljenjem podataka na n dimenzija. Nakon što DBSCAN to učini, startat će u slučajnoj točki (u ovom slučaju pretpostavimo da je to bila jedna od crvenih točaka), a brojat će se koliko je još točaka u blizini. DBSCAN će nastaviti ovaj proces sve dok se u blizini ne nalaze nijedne druge podatkovne točke, a zatim će tražiti da formira drugi klaster.

Kao što ste možda primijetili iz grafike, postoji nekoliko parametara i specifikacija kojima DBSCAN moramo dati prije nego što radi. Dva parametra koja trebamo navesti su kao takva:

Koji je minimalni broj podatkovnih točaka potreban za određivanje jednog klastera?
Koliko je udaljena jedna točka od sljedeće točke unutar istog klastera?

Pozivajući se na grafiku, epsilon je polumjer za ispitivanje udaljenosti između podataka. Ako jedna točka padne unutar epsilonske udaljenosti od druge točke, te dvije točke će biti u istom klasteru.

Nadalje, minimalni broj potrebnih bodova je postavljen na 4 u ovom scenariju. Prilikom prolaska kroz svaku podatkovnu točku, sve dok DBSCAN pronađe 4 točke unutar epsilonske udaljenosti jedna od druge, formira se klaster.

VAŽNO: Da bi se točka mogla smatrati "jezgrom", ona mora sadržavati minimalni broj bodova unutar epsilonske udaljenosti. Ergo, vizualizacija zapravo ima samo dvije osnovne točke. Pogledajte dokumentaciju ovdje i posebno pogledajte parametar min_samples.

Primijetit ćete i da plava točka na slici ne sadrži nijedan klaster. DBSCAN NE nužno kategorizira svaku točku podataka i stoga je sjajan pri rukovanju s outliersima u skupu podataka. Pogledajmo grafiku u nastavku:

Lijeva slika prikazuje tradicionalniju metodu grupiranja koja ne uzima u obzir višedimenzionalnost. Dok prava slika pokazuje kako DBSCAN može rasporediti podatke u različite oblike i dimenzije kako bi pronašao slične klastere.

Lijeva slika prikazuje tradicionalniju metodu klasteriranja, poput K-sredstava, koja ne uzima u obzir višedimenzionalnost. Dok prava slika pokazuje kako DBSCAN može rasporediti podatke u različite oblike i dimenzije kako bi pronašao slične klastere. Na pravoj slici također primjećujemo da točke duž vanjskog ruba skupa podataka nisu klasificirane, što sugerira da su među podacima neuobičajeni.

Prednosti DBSCAN:

  • Odličan je za razdvajanje klastera visoke gustoće naspram klastera niske gustoće unutar određenog skupa podataka.
  • Izvrsno je za rukovanje odmetnicima unutar skupa podataka.

Nedostaci DBSCAN-a:

  • Ne radi dobro kada se bave grozdovima različite gustoće. Dok je DBSCAN odličan u odvajanju klastera visoke gustoće od klastera niske gustoće, DBSCAN se bori s klasterima slične gustoće.
  • Bori se s podacima velike dimenzije. Znam da sam u ovom cijelom članku navela koliko je DBSCAN izvrstan u usklađivanju podataka u različite dimenzije i oblike. Međutim, DBSCAN može otići toliko daleko, ako imaju podatke s previše dimenzija, DBSCAN pati

Ispod sam uključio kako implementirati DBSCAN na Python, u kojem poslije objašnjavam metrike i ocjenjujem vaš DBSCAN model

Implementacija DBSCAN-a u Pythonu

1. Dodjeljivanje podataka kao X vrijednosti
Zapamtite, budući da je ovo nenadzirano učenje, nemamo jasne y vrijednosti koje treba postaviti.
2. Instantiranje našeg DBSCAN modela. U donjem kôdu, epsilon = 3 i min_samples najmanji je broj bodova potreban za stvaranje klastera.
3. Pohranjivanje naljepnica koje je formirao DBSCAN
4. Utvrđivanje točaka koji čine naše „ključne točke“
5. Izračunavanje broja klastera
6. Izračunavanje ocjene siluete

Mjerni podaci za mjerenje performansi DBSCAN-a:

Ocjena siluete: Rezultat siluete izračunava se koristeći srednju udaljenost unutar klastera između točaka i srednju udaljenost najbližeg klastera. Na primjer, klaster s puno točaka podataka vrlo blizu jedan drugom (velika gustoća) I je daleko od sljedećeg najbližeg klastera (sugerirajući da je klaster vrlo jedinstven u usporedbi sa sljedećim najbližim) imat će snažnu ocjenu siluete , Ocjena siluete kreće se od -1 do 1, pri čemu je -1 najniža moguća ocjena, a 1 najbolji. Ocjene siluete 0 sugeriraju preklapanje grozdova.

Inercija: Inercija mjeri interni zbroj kvadrata (zbroj kvadrata je zbroj svih zaostalih). Inercija se koristi za mjerenje kako su povezani klasteri među sobom, niži je rezultat inercije bolji. KAO, važno je napomenuti da se inercija uvelike oslanja na pretpostavku da su nakupine konveksne (sfernog oblika). DBSCAN ne mora nužno podijeliti podatke na sferne klastere, stoga inercija nije dobra metrička vrijednost za procjenu DBSCAN modela (zbog toga nisam uključio inerciju u gornji kod). Inercija se češće koristi u drugim metodama grupiranja, poput K-sredstava grupiranja.

Ostali resursi:

Blog Naftali Harris ogroman je dodatni resurs za više informacija