Pagpapatupad ng K-nangangahulugang Pag-cluster sa Crime Dataset



Pagpapatupad ng Kmeans clustering sa US crime dataset

Sa blog na ito, mauunawaan mo kung ano ang K-ibig sabihin ng clustering at kung paano ito maipapatupad sa kriminal na data na nakolekta sa iba't ibang mga estado ng US. Naglalaman ang data ng mga krimen na ginawa tulad ng: pag-atake, pagpatay, at panggagahasa sa pag-aresto bawat 100,000 residente sa bawat isa sa 50 estado ng US noong 1973. Kasabay ng pag-aralan ang data ay malalaman mo rin ang tungkol sa:

    • Paghanap ng pinakamainam na bilang ng mga kumpol.
    • Pinapaliit ang pagbaluktot
    • Lumilikha at pinag-aaralan ang kurba ng siko.
  • Pag-unawa sa mekanismo ng k-ibig sabihin ng algorithm.

Magsimula tayo sa pagsusuri. Ang data ay mukhang:





dataset

Mag-click sa imahe upang i-download ang dataset na ito

Kailangan mo ba ng dataset na ito? Mag-click sa imahe sa itaas upang ma-download ito.



Ihanda muna natin ang data para sa pagsusuri. Upang magawa ito, dapat naming alisin ang anumang mga halagang NA na maaaring naroroon sa data at i-convert ang data sa isang matrix.

> crime0 crime str (krimen) 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') = Listahan ng 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Murder' 'As assault' 'UrbanPop' 'Rape'

Kunin natin ang bilang ng mga kumpol upang maging 5. Ang Kmeans () na pag-andar ay kumukuha ng input data at ang bilang ng mga kumpol na kung saan ang data ay mai-cluster. Ang syntax ay: kmeans (data, k) kung saan ang k ay ang bilang ng mga cluster center.

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

Sinusuri ang Pag-cluster:



> str (cl) Listahan ng 9 $ cluster: Pinangalanang int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ center: num [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*,' dimnames ') = Listahan ng 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'pagpatay' 'Pag-atake' 'UrbanPop' 'Rape '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ tot.withinss: num 28240 $ betweenss: num 327568 $ size: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*, 'class') = chr 'kmeans'

Ang pag-andar ng str () ay nagbibigay ng istraktura ng mga kmeans na may kasamang iba't ibang mga parameter tulad ng mga inins, betweens, atbp, pag-aaral kung saan maaari mong malaman ang pagganap ng mga kmeans.

betweenss: Sa pagitan ng kabuuan ng mga parisukat ibig sabihin Intracluster pagkakapareho

withinss: Sa loob ng kabuuan ng parisukat ibig sabihin Intercluster pagkakapareho

totwithinss: Kabuuan ng lahat ng mga withinss ng lahat ng mga kumpol ibig sabihin. Kabuuang pagkakapareho ng intra-cluster

Ang isang mahusay na clustering, ay magkakaroon ng isang mas mababang halaga ng mga withins at mas mataas na halaga ng mga betweens na nakasalalay sa bilang ng mga kumpol na 'k' na napili nang una. Tingnan natin kung paano natin mahahanap ang pinakamainam na halaga ng 'k'.

Paghahanap ng pinakamainam na halaga ng 'k'

Ang isang pinakamainam na halaga ng 'k' ay ang halaga na nagbibigay sa amin ng isang nagtatag na hanay ng mga kumpol na may minimum na pagbaluktot. Mas malaki ang pagbaluktot, mas malala ang nabuo na mga kumpol.

Pagbaluktot:

Ang pagbaluktot ay maaaring kalkulahin sa mga tuntunin ng 'withinss' mula sa bawat isa sa mga kumpol. Mas maliit ang halaga ng 'withinss' ng isang partikular na kumpol, magiging mas siksik ito, sa gayon minimum na pagbaluktot.

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

Tumatagal ang pagpapaandar na ito ng data at ang halaga ng k at ibabalik ang 'km $ totwithinss' para dito. Ang 'km $ totwithinss' ay ang kabuuan ng loob ng-kumpol na mga parisukat, sa gayon kasama ang mga ininsin ng lahat ng 5 mga kumpol na nilikha iekabuuan (withinss). Mas mataas ang halaga ng 'km $ totwithinss', mas malaki ang pagbaluktot.

Para sa k = 5, ang mga withins ay 24417.02

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

Taasan natin ang halaga ng k mula 5 hanggang 10, at obserbahan ang pagkakaiba.

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

Makikita na habang tumataas ang halaga ng K, nababawasan ang pagbaluktot.

Maaari nating mailabas ang iba't ibang mga halaga ng 'km $ totwithinss' at balangkas ang mga ito sa isang grap upang malaman ang ugnayan sa pagitan ng pagbaluktot at ang halaga ng k. Ginagawa iyon ng sumusunod na pagpapaandar para sa amin:

> kmeans.dis maxk = 10> dis = kmeans.dis (krimen, maxk)> balangkas (1: maxk, dis, type = 'b', xlab = 'Bilang ng Mga Clusters', + ylab = 'Distortion', + col = 'asul')

Ta Da !!! Sa gayon mayroon kaming sikat na kurba ng siko sa amin.

i-convert ang decimal sa binary sa sawa

Elbow Curve:

Ito ang balangkas sa pagitan ng 'k', ang bilang ng mga kumpol at ang 'totwithinss' (o pagbaluktot) para sa bawat halaga ng k. Maaari mong makita kung ang bilang ng kumpol ay mas mababa, mayroong isang unti-unting pagbaba ng pagbaluktot ngunit sa patuloy naming pagtaas ng halaga ng k, ang rate ng pagbawas ng mga halaga ng pagbaluktot ay nagiging pare-pareho.

Ang halagang k na lampas kung saan ang rate ng pagbaluktot ay nagiging pare-pareho ay ang pinakamainam na halaga. Narito k = 4.

Maglapat kami ng ilang animasyon upang maunawaan kung paano kami binigyan ng R ng mga clustered na resulta.

> library (animasyon)> cl<- kmeans.ani(crime, 4)

Kmeans clustering Algorithm:

Ipaunawa sa amin ang algorithm kung saan gumagana ang k-ibig sabihin ng clustering:

Hakbang # 1. Kung k = 4, pipili kami ng 4 na mga random na puntos at ipalagay na ito ay mga sentro ng kumpol para malikha ang mga kumpol.

Hakbang # 2. Kumuha kami ng isang random na data point mula sa puwang at alamin ang distansya nito mula sa lahat ng 4 na mga sentro ng kumpol. Kung ang data point ay malapit sa berdeng cluster center, kulay berde ito at katulad ng lahat ng mga puntos ay ikinategorya sa 4 na mga kumpol.

Hakbang # 3. Kinakalkula namin ang centroid ng lahat ng mga berdeng puntos at italaga ang puntong iyon bilang sentro ng kumpol para sa kumpol na iyon.

Katulad nito, kinakalkula namin ang mga centroid para sa lahat ng 4 na may kulay (clustered) na mga puntos at italaga ang mga bagong centroids bilang mga cluster center.

Hakbang # 4. Ang Hakbang-2 at hakbang-3 ay pinapatakbo nang paulit-ulit, maliban kung ang mga sentro ng kumpol ay nagtagpo sa isang punto at hindi na gumagalaw.


Sa gayon, naabot namin ang mga nag-isang sentro ng kumpol.

Makikita na ang data ay nahahati sa 4 na kumpol. Ang mga cluster center ay:

> cl $ centres Murder As 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

Ang Cluster-4 na may 'New Mexico' bilang cluster center ay may isang malaking rate ng krimen na may pinakamataas na populasyon din.

Ang follow-up na Cluster-3 at Cluster-2.

Ang bawat estado ay nakatalaga ng isang kumpol, depende sa kung saan maaari na nating mahulaan ang ranggo ng krimen nito. Ang output ay mukhang:

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.

Mga Kaugnay na Post: