K-merkinnän toteuttaminen tarkoittaa klusterointia rikostietoaineistossa



Kmeans-klustereiden toteutus Yhdysvaltojen rikostietoaineistossa

Tässä blogissa ymmärrät, mikä on K-klusteri ja miten se voidaan toteuttaa Yhdysvaltojen eri osavaltioissa kerättyihin rikollisiin tietoihin. Tiedot sisältävät rikoksia, kuten: pahoinpitely, murha ja raiskaus pidätyksissä 100 000 asukasta kohden kussakin USA: n 50 osavaltiossa vuonna 1973. Tietojen analysoinnin lisäksi opit myös:

    • Optimaalisen klustereiden määrän löytäminen.
    • Minimoi vääristymät
    • Kyynärkäyrän luominen ja analysointi.
  • K-tarkoittaa algoritmin mekanismin ymmärtäminen.

Aloitetaan analyysistä. Tiedot näyttävät:





dataset

Napsauta kuvaa ladataksesi tämän tietojoukon

Tarvitsetko tätä tietoaineistoa? Napsauta yllä olevaa kuvaa ladataksesi sen.



Valmistellaan ensin tiedot analyysia varten. Tätä varten meidän tulisi poistaa kaikki tiedoissa mahdollisesti olevat NA-arvot ja muuntaa tiedot matriisiksi.

> rikos0 rikollinen str (rikos) numero [1:50, 1: 4] 13,2 10 8,1 8,8 9 7,9 3,3 5,9 15,4 17,4 ... - attr (*, 'dimnames') = Luettelo 2 .. : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' '... .. $: chr [1: 4]' Murha 'Assault' 'UrbanPop' 'raiskaus' '

Otetaan klustereiden lukumäärä 5. Kmeans () -funktio ottaa syötetiedot ja klustereiden lukumäärän, joihin data on tarkoitus ryhmitellä. Syntaksi on: kmeans (data, k), jossa k on klusterikeskusten lukumäärä.

> cl luokka (cl) [1] 'kmeans'

Klusterin analysointi:



> str (cl) Luettelo 9 $ -ryhmästä: Nimetty int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'nimet') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ keskukset: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = Luettelo 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Murha' 'Hyökkäys' 'UrbanPop' 'raiskaus '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ yhteensä. sisällä: num 28240 $ välillä: num 327568 $ koko: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*, 'luokka') = chr 'kmeans'

Funktio str () antaa kmeanien rakenteen, joka sisältää erilaisia ​​parametreja, kuten withinss, betweenss jne., Analysoimalla, jonka avulla voit selvittää kmeanin suorituskyvyn.

Betweenss: Neliöiden summan eli intracluster-samankaltaisuuden välillä

withinss: Neliön summan sisällä eli Intercluster-samankaltaisuus

totwithinss: Kaikkien klustereiden kaikkien sidosten summa eli klusterin sisäinen samankaltaisuus

Hyvällä klusteroinnilla on pienempi withinss-arvo ja suurempi betweenss-arvo, joka riippuu alun perin valittujen k-ryhmien lukumäärästä. Katsotaanpa, kuinka voimme löytää k: n optimaalisen arvon.

K: n optimaalisen arvon löytäminen

Optimaalinen ”k” -arvo on arvo, joka antaa meille yhdistetyn joukon klustereita mahdollisimman pienellä vääristymällä. Suuremmat vääristymät, pahemmat ovat muodostuneet klusterit.

Vääristymä:

Vääristymä voidaan laskea jokaisen klusterin 'withinss' -arvona. Pienempi tietyn klusterin ”withinss” -arvon arvo, tiheämmin asuttu se on, mikä vääristää mahdollisimman vähän.

kmeans.wss.k<- function(crime, k){ km = kmeans(crime, k) return (km$tot.withinss) }

Tämä toiminto vie k: n tiedot ja arvon ja palauttaa sille km $ totwithinss. ’Km $ totwithinss’ on klusterin sisäinen neliöiden summa, joka sisältää kaikkien luotujen viiden klusterin sis.summa (withinss). Mitä korkeampi ”km $ totwithinss” -arvo, sitä suurempi on vääristymä.

Kun k = 5, withinss on 24417,02

> kmeans.wss.k (rikollisuus, 5) [1] 24417.02

Lisätään k: n arvoa 5: stä 10: een ja havaitaan ero.

> kmeans.wss.k (rikos, 10) [1] 11083.04

Voidaan nähdä, että kun K: n arvo kasvaa, vääristymä pienenee.

Voimme ottaa pois ”km $ totwithinss” -arvot ja piirtää ne kaavioon löytääksesi vääristymän ja k-arvon välisen suhteen. Seuraava toiminto tekee sen meille:

> kmeans.dis maxk = 10> dis = kmeans.dis (rikos, maxk)> juoni (1: maxk, dis, type = 'b', xlab = 'Klustereiden lukumäärä', + ylab = 'Vääristymä', + kol = 'sininen')

Ta Da !!! Siten meillä on kuuluisa kyynärkäyrä kanssamme.

Kyynärpääkäyrä:

Tämä on juoni k: n, klustereiden lukumäärän ja totwithinsien (tai vääristymien) välillä k: n jokaiselle arvolle. Näet, kun klustereita on vähemmän, vääristymät vähenevät asteittain, mutta kun k-arvoa kasvatetaan jatkuvasti, vääristymien arvojen pienentymisnopeus muuttuu vakiona.

kirjoittamalla tulkin java

Tämä k: n arvo, jonka yli vääristymisnopeus muuttuu vakiona, on optimaalinen arvo. Tässä k = 4.

Sovelletaan animaatiota ymmärtämään, kuinka R antoi meille klustereita.

> kirjasto (animaatio)> cl<- kmeans.ani(crime, 4)

Kmeans klusterointialgoritmi:

Ymmärretään algoritmi, jolla k-tarkoittaa klusterointia:

Vaihe 1. Jos k = 4, valitsemme 4 satunnaispistettä ja oletamme niiden olevan klusterikeskuksia luotaville klustereille.

Vaihe # 2. Otamme avaruudesta satunnaisen datapisteen ja selvitämme sen etäisyyden kaikista 4 klusterikeskuksesta. Jos datapiste on lähinnä vihreää klusterikeskusta, se on väriltään vihreä ja samalla tavalla kaikki pisteet luokitellaan neljän klusterin joukkoon.

Vaihe # 3. Lasketaan nyt kaikkien vihreiden pisteiden sentroidi ja määritetään piste kyseisen klusterin klusterikeskukseksi.

Vastaavasti laskemme kaikkien neljän värillisen (klusteroidun) pisteen keskiosat ja määritämme uudet keskiosat klusterikeskuksiksi.

Vaihe # 4. Vaiheet 2 ja 3 suoritetaan iteratiivisesti, paitsi jos klusterikeskukset yhtyvät yhteen kohtaan eivätkä enää liiku.


Siten pääsemme yhdentyneisiin klusterikeskuksiin.

Voidaan nähdä, että data on jaettu 4 klusteriin. Klusterikeskukset ovat:

> cl $ -keskukset Murder Assault UrbanPop Rape Texas 4.740741 104.8519 62.96296 16.10 Louisiana 10.907143 219.9286 71.71429 25.95 South Carolina 13.375000 284.5000 46.25000 25.05 New Mexico 11.040000 298.0000 77.60000 32.68

Cluster-4: ssä, jossa ”New Mexico” on klusterikeskuksena, on myös valtava rikollisuusaste ja väkirikkain väestö.

Cluster-3 ja Cluster-2 seuraavat.

Jokaiselle valtiolle on osoitettu klusteri sen mukaan, mistä voimme nyt ennustaa sen rikollisuuden sijoituksen. Tuotos näyttää:

miten kloonata objekti Java

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.

Aiheeseen liittyvät julkaisut: