Implementering af K-betyder klyngedannelse på kriminalitetsdatasættet



Implementering af Kmeans-klynger i det amerikanske kriminalitetsdatasæt

I denne blog vil du forstå, hvad der er K-betyder klynger, og hvordan det kan implementeres på de kriminelle data, der er indsamlet i forskellige amerikanske stater. Dataene indeholder forbrydelser begået som: overfald, mord og voldtægt ved arrestationer pr. 100.000 indbyggere i hver af de 50 amerikanske stater i 1973. Sammen med analysen af ​​dataene vil du også lære om:

    • Find det optimale antal klynger.
    • Minimering af forvrængning
    • Oprettelse og analyse af albue-kurven.
  • Forståelse af mekanismen for k-betyder algoritme.

Lad os starte med analysen. Dataene ser ud som:





dataset

Klik på billedet for at downloade dette datasæt

Brug for dette datasæt? Klik på ovenstående billede for at downloade det.



Lad os først forberede dataene til analysen. For at gøre det skal vi fjerne eventuelle NA-værdier, der måtte være til stede i dataene, og konvertere dataene til en matrix.

> forbrydelse0 forbrydelse str (forbrydelse) 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') = Liste over 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Mord' 'Assault' 'UrbanPop' 'Voldtægt'

Lad os tage antallet af klynger til at være 5. Kmeans () -funktionen tager inputdataene og antallet af klynger, hvor dataene skal grupperes. Syntaksen er: kmeans (data, k) hvor k er antallet af klyngecentre.

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

Analyse af klyngen:



> str (cl) Liste over 9 $ klynge: Navngivet int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ centre: num [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*,' dimnames ') = Liste over 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Mord' 'Overfald' 'UrbanPop' 'Voldtægt '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ tot.withinss: num 28240 $ betweenss: num 327568 $ størrelse: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*, 'klasse') = chr 'kmeans'

Str () -funktionen giver strukturen på kmeans, som inkluderer forskellige parametre som withinss, betweenss osv., Analyserer som du kan finde ud af kmeans performance.

betweenss: Mellem summen af ​​firkanter dvs. Intracluster lighed

withinss: Inden for summen af ​​kvadratet, dvs. intercluster-lighed

totwithinss: Summen af ​​alle withinss af alle klynger, dvs. total lighed inden for klyngen

En god klyngedannelse har en lavere værdi på withinss og en højere værdi af mellemværker, hvilket afhænger af antallet af klynger 'k', der blev valgt oprindeligt. Lad os se, hvordan vi kan finde den optimale værdi af 'k'.

Find den optimale værdi af 'k'

En optimal værdi af 'k' er den værdi, der giver os et konvergeret sæt klynger med minimal forvrængning. Jo større forvrængning, værre vil klyngerne dannes.

Forvrængning:

Forvrængningen kan beregnes i form af 'withinss' fra hver af klyngerne. Mindre værdien af ​​'withinss' af en bestemt klynge, mere tætbefolket vil den være, og dermed minimal forvrængning.

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

Denne funktion optager dataene og værdien af ​​k og returnerer 'km $ totwithinss' for den. 'Km $ totwithinss' er den samlede sum af firkanter inden for klyngen, inklusive inkl. Af alle de 5 oprettede klynger, dvs.sum (withinss). Jo højere værdien af ​​'km $ totwithinss', desto større vil forvrængningen være.

For k = 5 er withinss 24417.02

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

Lad os øge værdien af ​​k fra 5 til 10 og observere forskellen.

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

Det kan ses, at når værdien af ​​K stiger, falder forvrængning.

Vi kan tage de forskellige værdier af 'km $ totwithinss' ud og plotte dem i en graf for at finde sammenhængen mellem forvrængning og værdien af ​​k. Følgende funktion gør det for os:

> kmeans.dis maxk = 10> dis = kmeans.dis (forbrydelse, maxk)> plot (1: maxk, dis, type = 'b', xlab = 'Antal klynger', + ylab = 'Distortion', + col = 'blå')

Ta Da !!! Således har vi den berømte albue kurve med os.

Albue kurve:

Dette er plottet mellem 'k', antallet af klynger og 'totwithinss' (eller forvrængning) for hver værdi af k. Du kan se, når antallet af klynger er mindre, der er et gradvist fald i forvrængning, men når vi fortsætter med at øge værdien af ​​k, bliver hastigheden for reduktion af forvrængningsværdier konstant.

Denne værdi af k ud over hvilken forvrængningshastigheden bliver konstant er den optimale værdi. Her er k = 4.

Lad os anvende nogle animationer for at forstå, hvordan R gav os de klyngede resultater.

> bibliotek (animation)> kl<- kmeans.ani(crime, 4)

Kmeans klyngealgoritme:

Lad os forstå algoritmen, hvorpå k-betyder klyngedannelse fungerer:

Trin 1. Hvis k = 4, vælger vi 4 tilfældige punkter og antager, at de er klyngecentre for klyngerne, der skal oprettes.

Trin 2. Vi tager et tilfældigt datapunkt fra rummet og finder ud af dets afstand fra alle de 4 klyngecentre. Hvis datapunktet er tættest på det grønne klyngecenter, farves det grønt, og på samme måde er alle punkter kategoriseret blandt de 4 klynger.

Trin # 3. Nu beregner vi centroid for alle de grønne punkter og tildeler det punkt som klyngecenter for den klynge.

På samme måde beregner vi centroider for alle de 4 farvede (klyngede) punkter og tildeler de nye centroider som klyngecentrene.

Trin # 4. Trin 2 og trin 3 køres iterat, medmindre klyngecentrene konvergerer på et punkt og ikke længere bevæger sig.

forskellen mellem overbelastning og tilsidesættelse i c ++


Således når vi de konvergerede klyngecentre.

Det kan ses, at dataene er opdelt i 4 klynger. Klyngecentrene er:

> cl $ centre 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

Klynge-4 med 'New Mexico' som klyngecenter har en enorm kriminalitetsrate med også den højeste befolkning.

Klynge-3 og Klynge-2 følger op.

Hver stat tildeles en klynge, afhængigt af hvilken vi nu kan forudsige dens kriminalitetsrangering. Outputtet ser ud som:

Har du et spørgsmål til os? Nævn det i kommentarfeltet, og vi vender tilbage til dig.

Relaterede indlæg: