K-i rakendamine tähendab kuritegevuse andmekogumi klastreerimist



Kmeesi klastrite rakendamine USA kuritegevuse andmekogumis

Selles ajaveebis saate aru, mis on K-tähega klasterdamine ja kuidas seda rakendada erinevates USA osariikides kogutud kriminaalsete andmete põhjal. Andmed sisaldavad kuritegusid, mis on toime pandud: kallaletung, mõrv ja vägistamine vahistamistes 100 000 elaniku kohta kõigis USA 50 osariigis 1973. aastal. Lisaks andmete analüüsimisele saate teada ka:

    • Optimaalse klastrite arvu leidmine.
    • Moonutuste minimeerimine
    • Küünarnukikõvera loomine ja analüüsimine.
  • K-keskmise algoritmi mehhanismi mõistmine.

Alustame analüüsist. Andmed näevad välja järgmised:





dataset

Selle andmekogumi allalaadimiseks klõpsake pilti

Kas vajate seda andmekogumit? Selle allalaadimiseks klõpsake ülaltoodud pildil.



Kõigepealt valmistame andmed analüüsi jaoks ette. Selleks peaksime eemaldama kõik andmetes esinevad NA väärtused ja teisendama andmed maatriksiks.

> kuritegu0 kuritegevuse str (kuritegu) arv [1:50, 1: 4] 13,2 10 8,1 8,8 9 7,9 3,3 5,9 15,4 17,4 ... - attr (*, 'hüüdnimed') = Nimekiri 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' '... .. $: chr [1: 4]' Mõrv '' Rünnak '' UrbanPop '' Vägistamine ''

Võtame klastrite arvuks 5. Funktsioon Kmeans () võtab sisendandmed ja klastrite arvu, kuhu andmed klastritakse. Süntaks on: kmeans (andmed, k), kus k on klastrikeskuste arv.

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

Klastrite analüüsimine:



> str (cl) 9 $ klastri loend: Nimega int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'nimed') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ keskused: num [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*,' dimnames ') = Nimekiri 2-st .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Mõrv' 'Rünnak' 'UrbanPop' 'Vägistamine '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ kokku. sees: num 28240 $ betweenss: num 327568 $ suurus: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ vaikimisi: int 0 - attr (*, 'klass') = chr 'kmeans'

Funktsioon str () annab kmeani struktuuri, mis sisaldab mitmesuguseid parameetreid, nagu withinss, betweenss jms, analüüsides, mille abil saate teada kmeanide toimivuse.

Betweenss: ruutude summa, s.o klastrisisese sarnasuse vahel

withinss: ruudu, s.o klastrite sarnasuse summa piires

totwithinss: kõigi klastrite kõigi sidumiste summa, st klastrisisene kogu sarnasus

Hea klastrite korral on madalam sisutekstide väärtus ja kõrgem betweensi väärtus, mis sõltub algselt valitud klastrite ‘k’ arvust. Vaatame, kuidas leiame ‘k’ optimaalse väärtuse.

„K” optimaalse väärtuse leidmine

Optimaalne väärtus k on väärtus, mis annab meile minimaalsete moonutustega ühendatud klastrite komplekti. Suurem moonutus, halvemad moodustuvad klastrid.

Moonutus:

Moonutusi saab arvutada “klappide” järgi igast klastrist. Konkreetse klastri „withinss“ väärtus on väiksem, see on tihedamalt asustatud, seega minimaalne moonutus.

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

See funktsioon võtab andmed ja k väärtuse ning tagastab selle eest 'km $ totwithinss'. ‘Km $ totwithinss’ on kogu klastrisisene ruutude summa, mis hõlmab ka kõigi loodud 5 klastri koosnemist, s.t.summa (koos sissekannetega). Mida suurem on km km totwithinss väärtus, seda suurem on moonutus.

Kui k = 5, on withinss 24417,02

maatriksi korrutamise programm javas
> kmeans.wss.k (kuritegu, 5) [1] 24417.02

Suurendame k väärtust 5-lt 10-le ja jälgime erinevust.

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

On näha, et kui K väärtus suureneb, siis moonutus väheneb.

Me võime välja võtta ‘km $ totwithinss’ erinevad väärtused ja need graafikusse joonistada, et leida seos moonutuse ja k väärtuse vahel. Järgmine funktsioon teeb seda meie jaoks:

> kmeans.dis maxk = 10> dis = kmeans.dis (kuritegevus, maxk)> joonis (1: maxk, dis, type = 'b', xlab = 'Klastrite arv', + ylab = 'Moonutus', + kol = 'sinine')

Ta Da !!! Seega on meil kuulus küünarnukikõver kaasas.

Küünarnuki kõver:

See on graafik k k, klastrite arvu ja totwithinssi (või moonutuse) vahel k iga väärtuse korral. Näete, kui klastrite arvu on vähem, moonutusi järk-järgult vähendatakse, kuid kui k väärtust suurendame, muutub moonutuste väärtuste vähenemise kiirus konstantseks.

See k väärtus, mille ületamisel moonutuste määr muutub konstantseks, on optimaalne väärtus. Siin k = 4.

Rakendagem animatsiooni, et mõista, kuidas R andis meile rühmitatud tulemused.

> raamatukogu (animatsioon)> kl<- kmeans.ani(crime, 4)

Kmeans klastrite algoritm:

Mõistkem algoritmi, mille alusel k-klastrid töötavad:

Samm 1. Kui k = 4, valime 4 juhuslikku punkti ja eeldame, et need on loodavate klastrite klastrikeskused.

2. samm. Võtame kosmosest juhusliku andmepunkti ja saame teada selle kauguse kõigist neljast klastrikeskusest. Kui andmepunkt on rohelisele klastrikeskusele kõige lähemal, on see roheline ja sarnaselt liigitatakse kõik punktid nelja klastri hulka.

3. samm. Nüüd arvutame kõigi roheliste punktide tsentroidi ja määrame selle punkti selle klastri klastrikeskuseks.

Samamoodi arvutame kõigi 4 värvilise (rühmitatud) punkti jaoks keskmised ja määrame kobarkeskmeteks uued tsentriidid.

4. samm. Sammud 2 ja 3 toimuvad iteratiivselt, välja arvatud juhul, kui klastri keskused koonduvad mingis punktis ja ei liigu enam.


Seega jõuame koondunud klastrite keskustesse.

On näha, et andmed on jagatud 4 klastriks. Klastrikeskused on:

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

Klaster-4 koos klastrikeskusega ‘New Mexico’ on samuti kõrgeima elanikkonnaga kuritegevuse määr.

Klaster-3 ja klaster-2 järgnevad.

Igale osariigile määratakse klaster, sõltuvalt sellest, millise kriminaalse asetuse saame nüüd ennustada. Väljund näeb välja järgmine:

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.

Seonduvad postitused: