한빛미디어 도서 <혼자 공부하는 머신러닝+딥러닝>의 전개를 따른 내용이다.
챕터 6, 비지도 학습
* 타깃이 없는 데이터를 사용하는 비지도학습과 대표적인 알고리즘을 소개
* 대표적인 군집 알고리즘인 k-평균과 DBSCAN을 배우자
* 대표적인 차원 축소 알고리즘인 주성분 분석 (PCA)를 배우자
k-평균 알고리즘으로 3종의 과일을 군집화해보자.
과연.. 성공적으로 군집을 형성할 것인지!! >_<
◆ 그런데.. 학습목표에는 DBSCAN이 있는데 실습내용에는 없다.
흑흑.... 어떻게 된 거지?
개인적으로 DBSCAN은 데이터대회에서 사용한 핵심 알고리즘이었다.
그래서 다른 데이터셋으로도 꼭 실습하고 싶었는데 굉장히 아쉽다...!
[ 포스팅 내용 ]
1. K-평균 알고리즘
2. KMeans 모델 만들기
clustering 결과 확인
3. cluster center
cluster center까지의 거리
cluster center 재조정 횟수
4. 최적의 k 찾기
# K-평균 알고리즘 (k-means)
군집 알고리즘 중 하나로, 다음과 같은 알고리즘이다.
▶ 알고리즘
ⓐ cluster 개수 k를 미리 지정하면, 무작위로 cluster center를 정해준다.
ⓑ 각 데이터는 가장 가까운 cluster center의 cluster에 속하게 된다.
ⓒ cluster center 재조정 : 각 cluster에 속한 데이터의 평균으로 재조정
ⓓ cluster center에 변화가 없을 때까지 ⓑ~ⓒ 반복
아래 gif는 아래에서 다시 등장할 것이다.
실습데이터의 k-means 과정을 직접 만들어보았다.
▶ 유의점: cluster 개수 k를 미리 지정
ㄴ미리 알 수 없는 경우: 적절한 k를 찾는 도구 이용
과일(사과/바나나/파인애플) 이미지를 clustering 해보자.
[ 데이터 준비 ]
① 이미지 데이터 h x w
② 이미지 데이터를 1차원 배열로 reshape
# k-means 모델 만들기
k-means 알고리즘이 구현된 사이킷런 클래스 KMeans를 이용해보자.
◆ cluster의 개수 k를 미리 지정해야 한다.
ㄴ이 실습에서는 3종의 과일임을 알고 있으므로 k=3으로 지정한다.
ㄴ다만 cluster의 개수를 모를 경우 다른 방법을 써야 한다 (포스팅 맨 아래에 소개)
◆ KMeans 모델의 fit은 '1차원 배열'로 한다.
ㄴweight x height 픽셀을 1차원으로 늘여놓은 'fruits_2d' 배열을 전달했다.
+ clustering 결과 확인하기
이미지를 clustering한 결과를 다시 이미지로 확인해보자. 꽤 잘 되었다!
+
+
+ with PCA
PCA를 통해 10000차원을 2차원으로 축소한 데이터를 가지고 다시 clustering해보자.
∵ 2차원으로 축소하면 2차원 산점도로 각 cluster의 산점도를 평면에서 확인해볼 수 있다.
(PCA란? 머신러닝 | 주성분분석(PCA)을 이미지 데이터에 적용하여 픽셀 축소하기 )
주성분 분석을 통해 데이터를 잘 설명하는 특성을 2개 얻은 뒤 이렇게 시각화해보면 cluster를 2차원으로 바라볼 수 있다. cluster가 명확히 잘 보인다.
pineapple과 apple의 경계가 좀 가까워서 cluster가 모호할 수도 있겠다는 것을 확인가능하다!
+ plus
이 데이터를 가지고 k-means clustering 과정도 나타내보았다.
분명 원본은 10000픽셀짜리 이미지데이터지만, PCA를 통해 2차원으로 줄였기 때문에 clustering 과정을 직관적으로 확인할 수 있다.
# cluster center
데이터들은 가장 가까운 cluster center의 군집에 속해져간다.
그리고 cluster center를 재조정하가면서 군집의 특성을 점점 나타내간다.
그렇다면 cluster center는 같은 군집의 특징 공통점을 잘 나타내게 된다.
이미지를 clustering 할 경우, 동일 군집내 이미지 데이터들의 픽셀 중심값들이 cluster center에 담길 것이다.
(KMeans 모델의 cluster_centers_ 속성에 담긴다)
군집의 중심적인 특성을 잘 보여주는 cluster_centers_를 이미지로 확인해보자.
+ cluster center까지의 거리
이미지 데이터와 cluster center간 차이를 '거리'로 변환하는 함수가 존재한다
transform()
+ cluster center를 재조정한 횟수 확인
# 최적의 k 찾기
이번 실습처럼 군집이 3개(사과/바나나/파인애플)여야 한다는 것을 안다면 k=3으로 지정하겠지만, 사실 실전에서 날것의 데이터를 clustering할 때는 '군집이 몇개여야 하는가'를 모르는게 자연스럽다.
혼공머신 책에서는 이 k값을 찾는 대표적인 방법 하나를 소개하고 있다.
엘보우 (elbow)
cluster 개수를 늘려가며 이너셔의 변화를 관찰하여 최적의 클러스터 개수를 찾는 방법
* 이너셔(inertia) : 데이터와 cluster center 사이 거리의 제곱합
* cluster 수 증가 -> cluster 크기 감소 -> 이너셔 감소
cluster 개수에 따른 이너셔 변화를 그래프로 확인해보자.
(굽은 모양이 팔꿈치같다고 해서 엘보우라는 이름이 붙었다 한다.) (귀엽다ㅠㅠ)
cluster가 증가하는데도 inertia값이 감소하는 속도가 갑자기 작아지는 구간이 있다.
k=3지점! 그곳이 최적의 k 지점이다.
(그 cluster 개수보다 늘린다고 해도, 데이터가 cluster에 밀집된 정도가 잘 개선되지 않음)
이번 내용 정리
- 군집알고리즘 중 하나인 K-평균 알고리즘
- KMeans 모델을 통한 clustering 해보기
- cluster center 관찰하기
- 최적의 k를 찾는 방법중 하나 - elbow
이전 글:
머신러닝 | 픽셀 분포의 특징을 뽑아내어 clustering
다음 글:
머신러닝 | 주성분분석(PCA)을 이미지 데이터에 적용하여 픽셀 축소하기
'데이터분석과 머신러닝' 카테고리의 다른 글
혼공단 7기 5주차 미션인증 (0) | 2022.02.17 |
---|---|
머신러닝 | 주성분분석(PCA)을 이미지 데이터에 적용하여 픽셀 축소하기 (0) | 2022.02.17 |
머신러닝 | 픽셀 분포의 특징을 뽑아내어 clustering (0) | 2022.02.14 |
혼공단 7기 4주차 미션인증 (0) | 2022.02.13 |
머신러닝 | 트리의 앙상블 | sklearn 앙상블 모델 4종류 특징 비교 (0) | 2022.02.13 |