ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Week #5 k-평균
    쿠다 4기/<혼공> 머신러닝& 딥러닝 2023. 8. 29. 10:39

    앞선 포스팅에서는 사과, 파인애플, 바나나 사진임을 미리 알고 있어서 각 과일의 픽셀 평균을 구할 수 있었지만 진짜 비지도 학습에서는 사진에 어떤 과일이 들어 있는지 알지 못한다. 이런 경우에는 k-평균 군집 알고리즘이 평균값을 자동으로 찾아준다. 

     

    k-평균 알고리즘

    작동 방식에 대해 먼저 알아보자.

    1. 무작위로 k개의 클러스터 중심을 정한다.

    2. 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정한다.

    3. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다.

    4. 클러스터 중심에 변화가 없을 때까지 2번으로 돌아가 반복한다.

     

    이제 실제로 과일 데이터에 적용해보자. 사이킷런의 k-평균 알고리즘은 sklearn.cluster모듈 아래 KMeans클래스에 구현되어 있다.

    군집된 결과는 KMeans 클래스 객체의 labels_속성에 저장된다. 클러스터 수가 3개이기 때문에 labels_에는 0,1,2의 값이 들어있다.

    이 함수를 이용해 레이블이 0 인 과일들을 모두 그려보겠다. km.labels_ == 0이면 km.labels_ 배열에서 값이 0인 위치는 True이고, 이 원소만 모두 추출한다. 

     

    레이블0으로 클러스터링된 91개의 이미지를 출력했다. 타깃 레이블을 전혀 제공안했음에도 비슷한 샘플들을 잘 모았다.

     

    클러스터 중심

     

    KMeans 클래스가 최종적으로 찾은 클러스터 중심은 clusters_centers_속성에 저장되어 있다. 이미지로 출력하기 위해 100x100크기의 2차원 배열로 바꾸자.

     

    훈련 데이터 샘플에서 클러스터 중심까지의 거리로 변환해주는 transform()메서드를 이용하자. 이제 인덱스가100인 샘플에 대해 각 클러스터 중심까지의 거리를 구하면 다음과 같다. 

    첫 번째 클러스터 중심 까지의 거리가 가장 작기 때문에 레이블 0에 속함을 알 수 있고, 그림으로 나타내면 파인애플임을 확인할 수 있다. 알고리즘이 최적의 클러스터를 찾을 때 까지 반복한 횟수는 4번이다.

     

    최적의 클러스터 개수(k)는 어떻게 정할까?

     

    대표적인 방법으로 엘보우 방법이 있다. k-평균 알고리즘은 클러스터 중심과 클러스터에 속한 샘플 사이의 거리를 잴 수 있는데 이 거리 제곱의 합을 이너셔라고 부른다. 이너셔는 클러스터에 속한 샘플이 얼마나 가깝게 모여 있는지를 나타낸다. 클러스터의 개수를 늘려가며 이너셔의 변화를 관찰하여 최적의 k를 찾는다.

    그림에서 x축이 약 3일때 꺾이는 부분이 발생했음을 알 수 있다. 따라서 최적의 k값은 3으로 보인다.

    '쿠다 4기 > <혼공> 머신러닝& 딥러닝' 카테고리의 다른 글

    Week#5 주성분 분석  (0) 2023.08.29
    Week#5 군집 알고리즘  (0) 2023.08.29
    Week #4 트리의 앙상블  (0) 2023.08.18
    Week#4 교차 검증과 그리드 서치  (0) 2023.08.18
    Week #4 결정 트리  (0) 2023.08.18
Designed by Tistory.