K įdiegimas reiškia „Crustering“ nusikalstamumo duomenų rinkinyje

JAV nusikalstamų veikų duomenų rinkinio „Kmeans“ grupių įgyvendinimas

Šiame tinklaraštyje suprasite, kas yra „K“ reiškia klasterius ir kaip tai galima pritaikyti įvairiose JAV valstijose surinktuose nusikalstamumo duomenyse. Duomenyse yra nusikaltimų, tokių kaip: užpuolimas, nužudymas ir išžaginimas areštuojant 100 000 gyventojų kiekvienoje iš 50 JAV valstijų 1973 m. Kartu su duomenų analize taip pat sužinosite apie:

    • Rasti optimalų grupių skaičių.
    • Minimalus iškraipymas
    • Alkūnės kreivės sukūrimas ir analizė.
  • Suprasti k reikšmės algoritmo mechanizmą.

Pradėkime nuo analizės. Duomenys atrodo taip:

dataset

Norėdami atsisiųsti šį duomenų rinkinį, spustelėkite paveikslėlį

Reikia šio duomenų rinkinio? Norėdami atsisiųsti, spustelėkite aukščiau esantį vaizdą.

Pirmiausia paruoškime duomenis analizei. Norėdami tai padaryti, turėtume pašalinti visas NA vertes, kurios gali būti duomenyse, ir konvertuoti duomenis į matricą.

> nusikalstamumas0 nusikaltimo str (nusikaltimas) num [1:50, 1: 4] 13,2 10 8,1 8,8 9 7,9 3,3 5,9 15,4 17,4 ... - attr (*, 'dimnames') = 2 sąrašas .. $: chr [1 : 50] 'Alabama' 'Aliaska' 'Arizona' 'Arkanzasas' ... .. $: chr [1: 4] 'Nužudymas' Assault '' UrbanPop '' Rapsi

Paimkime, kad klasterių skaičius bus 5. Kmeans () funkcija ima įvesties duomenis ir grupių, kuriose duomenys turi būti kaupiami, skaičių. Sintaksė yra tokia: kmeans (duomenys, k), kur k yra klasterių centrų skaičius.

> cl klasė (cl) [1] „kmeans“

Klasterių analizė:

> str (cl) 9 $ sankaupos sąrašas: Pavadinta int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'vardai') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ centers: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = 2 sąrašas .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Nužudymas' Užpuolimas '' UrbanPop '' Išžaginimas '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ total.withinss: num 28240 $ betweenss: num 327568 $ size: int [1: 5] 10 9 14 10 7 $ iter: int 3 $, jei numatytasis: int 0 - attr (*, 'class') = chr 'kmeans'

Funkcija str () suteikia kmeans struktūrą, apimančią įvairius parametrus, tokius kaip withinss, betweenss ir kt., Analizuodami, kuriuos galite sužinoti kmeans veikimą.

Betweenss: Tarp kvadratų sumos, t. y. vidinio klasterio panašumas

withinss: Kvadrato sumoje, t. y. tarp klasterių panašumas

totwithinss: visų klasterių visų ininsų suma, t. y. bendras klasterio vidaus panašumas

Geras klasteris turės mažesnę vynuogių vertę ir didesnę betwensų vertę, kuri priklauso nuo iš pradžių pasirinktų klasterių skaičiaus „k“. Pažiūrėkime, kaip galime rasti optimalią „k“ vertę.

Optimalios „k“ vertės nustatymas

Optimali „k“ reikšmė yra ta vertė, kuri mums suteikia sutelktą grupių rinkinį su minimaliu iškraipymu. Didesnis iškraipymas, blogesni bus suformuoti klasteriai.

Iškraipymas:

Iškraipymą galima apskaičiuoti atsižvelgiant į kiekvieno klasterio „withinss“. Mažesnė konkretaus klasterio „withinss“ vertė, ji bus tankiau apgyvendinta, taigi minimalus iškraipymas.

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

Ši funkcija paima duomenis ir k reikšmę ir grąžina už tai „km $ totwithinss“. ‘Km $ totwithinss’ yra bendra klasterių viduje esanti kvadratų suma, taigi įtraukiama visų sukurtų 5 klasterių kombinacija, t.y.suma (su įkainiais). Didesnė „km $ totwithinss“ vertė, tuo didesnis bus iškraipymas.

kokios funkcijos yra sql

Jei k = 5, naudojimas yra 24417,02

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

Padidinkime k reikšmę nuo 5 iki 10 ir stebėkime skirtumą.

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

Galima pastebėti, kad didėjant K vertei, iškraipymai mažėja.

Mes galime išimti skirtingas „km $ totwithinss“ reikšmes ir pavaizduoti jas diagramoje, kad rastume ryšį tarp iškraipymo ir k vertės. Ši funkcija atliekama mums:

> kmeans.dis maxk = 10> dis = kmeans.dis (nusikalstamumas, maxk)> siužetas (1: maxk, dis, type = 'b', xlab = 'Clusters skaičius', + ylab = 'Distortion', + col = „mėlyna“)

Ta Da !!! Taigi su savimi turime garsiąją alkūnės kreivę.

Alkūnės kreivė:

Tai yra kiekvieno k vertės reikšmė tarp „k“, grupių skaičiaus ir „totwithinss“ (arba iškraipymų). Galite pamatyti, kai klasterių skaičius yra mažesnis, iškraipymai palaipsniui mažėja, tačiau, kai mes nuolat didiname k reikšmę, iškraipymo verčių mažėjimo greitis tampa pastovus.

Ši k reikšmė, kurią viršijus iškraipymo greitis tampa pastovus, yra optimali reikšmė. Čia k = 4.

Pritaikykime šiek tiek animacijos, kad suprastume, kaip R davė mums grupinius rezultatus.

> biblioteka (animacija)> kl<- kmeans.ani(crime, 4)

Kmeanso grupavimo algoritmas:

Supraskime algoritmą, kuriame veikia k reikšmės klasteriai:

1 žingsnis. Jei k = 4, mes pasirenkame 4 atsitiktinius taškus ir laikome, kad jie bus kuriamų klasterių centrai.

2 žingsnis. Mes paimame atsitiktinį duomenų tašką iš kosmoso ir sužinome jo atstumą nuo visų 4 grupių centrų. Jei duomenų taškas yra arčiausiai žalio sankaupos centro, jis yra žalios spalvos ir panašiai visi taškai priskiriami 4 grupėms.

Pagrindinis skirtumas tarp įsilaužėlio ir etiško įsilaužėlio yra:

3 žingsnis. Dabar apskaičiuojame visų žaliųjų taškų centroidą ir priskiriame tą tašką kaip tos grupės sankaupos centrą.

Panašiai apskaičiuojame visų 4 spalvotų (grupuotų) taškų centroidus ir naujus centroidus priskiriame grupių centrams.

4 žingsnis. 2-as ir 3-as žingsniai vykdomi iteratyviai, nebent klasterio centrai susikaupia taške ir nebejuda.


Taigi mes pasiekiame sutelktus klasterių centrus.

Galima pastebėti, kad duomenys yra suskirstyti į 4 grupes. Klasterių centrai yra:

> cl $ centrai „Murder Assault UrbanPop Rapse 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

Klasteris-4 su „Naująja Meksika“, kaip klasterių centru, taip pat turi didžiulį nusikalstamumą, kuriame gyvena daugiausia gyventojų.

„Cluster-3“ ir „Cluster-2“ tęsinys.

Kiekvienai valstybei priskiriamas klasteris, priklausomai nuo kurio dabar galime nuspėti jos nusikalstamumo reitingą. Rezultatas atrodo taip:

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.

Susijusios žinutės: