범죄 데이터 세트에 K- 평균 클러스터링 구현



미국 범죄 데이터 세트에 Kmeans 클러스터링 구현

이 블로그에서는 K- 평균 클러스터링이 무엇이며 미국 여러 주에서 수집 된 범죄 데이터에 대해 어떻게 구현할 수 있는지 이해합니다. 이 데이터에는 1973 년 미국 50 개 주에서 100,000 명당 체포 된 폭행, 살인 및 강간과 같은 범죄가 포함됩니다. 데이터를 분석하는 것과 함께 다음 사항에 대해서도 알아 봅니다.

    • 최적의 클러스터 수 찾기.
    • 왜곡 최소화
    • 팔꿈치 곡선 생성 및 분석.
  • k- 평균 알고리즘의 메커니즘 이해.

분석부터 시작하겠습니다. 데이터는 다음과 같습니다.





dataset

이 데이터 세트를 다운로드하려면 이미지를 클릭하세요.

이 데이터 세트가 필요하십니까? 위의 이미지를 클릭하여 다운로드하십시오.



먼저 분석 할 데이터를 준비하겠습니다. 이렇게하려면 데이터에있을 수있는 모든 NA 값을 제거하고 데이터를 행렬로 변환해야합니다.

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

클러스터의 수를 5로합시다. Kmeans () 함수는 입력 데이터와 데이터가 클러스터링 될 클러스터의 수를받습니다. 구문은 다음과 같습니다. kmeans (data, k) 여기서 k는 군집 중심의 수입니다.

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

클러스터링 분석 :



> str (cl) 9 개의 $ cluster 목록 : Named int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = 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 .. .. $ : chr [1 : 5] '1' '2' '3' '4'... .. .. $ : chr [1 : 4] '살인' '폭행' '어반 팝' '강간 '$ 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'

str () 함수는 withinss, betweenss 등과 같은 다양한 매개 변수를 포함하는 kmeans의 구조를 제공하여 kmeans의 성능을 찾을 수있는 것을 분석합니다.

betweenss : 제곱합 사이, 즉 군집 내 유사성

withinss : 제곱합 이내 즉 군집 간 유사성

totwithinss : 모든 군집의 모든 내부의 합, 즉 전체 군집 내 유사성

좋은 클러스터링은 처음에 선택한 클러스터 'k'의 수에 따라 더 낮은 withinss 값과 더 높은 betweenss 값을 갖습니다. 'k'의 최적 값을 어떻게 찾을 수 있는지 살펴 보겠습니다.

'k'의 최적 값 찾기

'k'의 최적 값은 왜곡이 최소화 된 수렴 된 클러스터 집합을 제공하는 값입니다. 왜곡이 클수록 클러스터가 형성됩니다.

왜곡:

왜곡은 각 클러스터의 '내부'로 계산할 수 있습니다. 특정 클러스터의 '내부'값이 적을수록 밀도가 높아져 왜곡이 최소화됩니다.

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

이 함수는 데이터와 k 값을 가져 와서 'km $ totwithinss'를 반환합니다. 'km $ totwithinss'는 클러스터 내 총 제곱합으로, 생성 된 5 개 클러스터 모두의 범위 내를 포함합니다.합계 (군내). ‘km $ totwithinss’값이 높을수록 왜곡이 커집니다.

k = 5의 경우 withinss는 24417.02입니다.

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

k 값을 5에서 10으로 늘리고 그 차이를 살펴 보겠습니다.

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

K 값이 증가할수록 왜곡이 감소 함을 알 수 있습니다.

'km $ totwithinss'의 다른 값을 꺼내 그래프로 플로팅하여 왜곡과 k 값 사이의 관계를 찾을 수 있습니다. 다음 함수는 우리를 위해 그것을합니다 :

> kmeans.dis maxk = 10> dis = kmeans.dis (crime, maxk)> plot (1 : maxk, dis, type = 'b', xlab = 'Number of Clusters', + ylab = 'Distortion', + col = '파란색')

따다 !!! 따라서 우리는 유명한 팔꿈치 곡선을 가지고 있습니다.

팔꿈치 곡선 :

이것은 k의 각 값에 대한 'k', 군집 수 및 'totwithinss'(또는 왜곡) 사이의 플롯입니다. 클러스터 수가 적을 때 왜곡이 점차 감소하지만 k 값을 계속 증가 시키면 왜곡 값 감소율이 일정 해집니다.

왜곡률이 일정 해지는이 k 값이 최적 값입니다. 여기서 k = 4.

초보자를위한 informatica 자습서 pdf

R이 어떻게 클러스터링 된 결과를 제공했는지 이해하기 위해 애니메이션을 적용 해 보겠습니다.

> 도서관 (애니메이션)> cl<- kmeans.ani(crime, 4)

Kmeans 클러스터링 알고리즘 :

k- 평균 클러스터링이 작동하는 알고리즘을 이해하겠습니다.

1 단계. k = 4이면 4 개의 임의의 점을 선택하고 클러스터가 생성 될 클러스터 중심으로 가정합니다.

2 단계. 우리는 공간에서 임의의 데이터 포인트를 가져와 4 개의 클러스터 중심으로부터의 거리를 알아냅니다. 데이터 포인트가 녹색 군집 중심에 가장 가까운 경우 녹색으로 표시되고 마찬가지로 모든 점이 4 개의 군집으로 분류됩니다.

3 단계. 이제 모든 녹색 점의 중심을 계산하고 해당 점을 해당 클러스터의 클러스터 중심으로 할당합니다.

유사하게, 우리는 4 개의 컬러 (클러스터) 포인트 모두에 대한 중심을 계산하고 새로운 중심을 클러스터 중심으로 할당합니다.

4 단계. 2 단계와 3 단계는 클러스터 중심이 한 지점에서 수렴하여 더 이상 움직이지 않는 한 반복적으로 실행됩니다.


따라서 우리는 수렴 된 클러스터 센터에 도달합니다.

데이터가 4 개의 군집으로 나뉘어 진 것을 볼 수 있습니다. 클러스터 센터는 다음과 같습니다.

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

'뉴 멕시코'가 클러스터 센터 인 4 번 클러스터는 범죄율이 높고 인구가 가장 많습니다.

클러스터 -3 및 클러스터 -2 후속 조치.

이제 범죄 순위를 예측할 수있는 상태에 따라 각 주에 클러스터가 할당됩니다. 출력은 다음과 같습니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.

관련 게시물: