Chapter 10 Clutering (W10)

10.1 군집이란 무엇인가?

군집

Figure 10.1: 군집

군집(clustering) vs 분류(classification)

  • 분류(Classification)는 아래의 정보를 이미 아는 경우 (레이블이 있다)
    • Supervised learning(지도학습)
    • 범주의 수
    • 각 객체의 범주정보
    • Y값이 있다
    • K-NN (K-Nearest Neighbor), 근접 이웃기법
  • 군집(Clustering)은 아래의 정보를 이미 모르는 경우 사용 (레이블이 없다)
    • Unsupervised learning (비지도학습)
    • 군집의 수
    • Y값이 없다
    • K-means
  • 즉 동물원과 밀림/사파리의 차이?
    • 분류: 동물원에는 동물별로 나누어 키운다. 원숭이는 원숭이끼리, 사자는 사자끼리. (규칙과 기준이 있다)
    • 군집: 밀림/사파리에서는 동물들이 자유롭게 풀어져 있다. 하지만 자기들끼리 알아서 끼리끼리 군집화되여 모여 산다 (규칙과 기준이 없다)

군집화(Clustering)란 무엇인가?

  • 예측을 하는 것이 아니다. (지금까지 배웠던 회귀분석, 의사결정나무는 예측을 한다)
  • 탐색과 발견을 하는 것이다 (이렇게 묶일 수가 있겠구나)

군집화가 잘 된 경우는?

  • 같은 군집 (비슷한 애들)은 가깝게 붙어있고, 다른 군집(다른 애들)과는 멀리 떨어져야 한다

10.2 K-means 예제

  • K-means로 군집을 해보자
  • iris (붓꽃) 데이터를 사용
  • iris 꽃은 3가지 종(species)가 있다.
  • 데이터를
  • 사용할 함수
    • scale(): 표준화 함수
    • kmeans(): K-means 함수
head(iris)

iris

plot(iris)


scale()로 표준화를 한다

  • (-5)는 5번째 컬럼(Species)을 뺀다는 의미
  • 왜 5번째 컬럼을 빼는가?
    • 비지도학습이므로, 우리는 iris꽃의 종류를 모르는 것으로 가정을 해야함
    • 5번째 컬럼이 Species로 iris꽃의 종류에 대한 정보를 가짐 (3가지 종류가 있음)
    • head()를 사용해 데이터의 맨위 6개만 출력해봄 (선택)
    • summary()데이터를 살펴봄 (선택)
MyIrisScale <- scale(iris[-5])
head(MyIrisScale)

summary(MyIrisScale)

kmeans() 함수

  • centers: 군집수 (붓꽃은 3가지 종류이므로 3으로 설정)
  • nstart: 몇번 시행할 것인가? (임의적)
MyIrisKmeans <- kmeans(MyIrisScale, centers = 3, nstart = 5)
MyIrisKmeans

  • 위의 결과 출력을 보면 9개의 components가 있다 (cluster, centers, totss,…)
  • cluster로 아래처럼 그래프를 그려보자

그래프 그리기 전에 cluster에 뭐가 있는지 보자

  • 53개, 47개, 50개이다
MyIrisKmeans$cluster

그래프 그리기

  • 3가지 색깔로 군집이 된것이 보인다.
  • plot()
    • pch: 그래프에서 점의 모양, 세가지로 표현하기 위해 MyIrisKmeans$cluster를 사용 (1,2,3을 각각 적용하기 위해, 세모, 동그라미, 십자)
    • col: 색깔, 이것 또한 세가지로 표현하기 위해 MyIrisKmeans$cluster를 사용 (1,2,3을 각각 적용하기 위해, 검정, 빨강, 초록)
    • MyIrisKmeans$cluster는 위에 보면 1,2,3으로 이루어져있다.
plot(iris[-5], pch = MyIrisKmeans$cluster, col = MyIrisKmeans$cluster)


군집이 제대로 되었는지 보자

  • iris의 원래 데이터 Species 컬럼이 있는것을 출력
  • 원래 데이터에는 3가지 종류가 있었음 (setosa, versicolor, virginica)
  • control+F를 눌러서 원래 각각의 종류가 몇개 였는지 세보아라 (setosa = 50개, versicolor = 50, virginica = 50)
  • 즉, 군집분석으로 53, 47, 50개의 결과인데, 실제 데이터는 50, 50, 50개 이다.
  • 군집이 100% 정확하지 않다. 왜 그런지 데이터를 보고 생각해 보라.
iris