일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JavaScript
- loop
- Python
- AI
- C++
- machine learning
- scss
- C#
- type
- nginx
- security
- generic
- var
- webpack
- 앙상블
- Clone
- BOJ
- npm
- git
- condition
- bash
- dotenv
- docker
- vuetify
- VUE
- 보안
- TypeScript
- leetcode
- property
- vue.js
- Today
- Total
ice rabbit programming
[AI] 군집(Clustering) - K-means, GMM, 평가 지표 본문
이전 글들에서 회귀, 분류 등 지도 학습을 다루었었다. 이번 포스팅부터는 정답이 없는 데이터가 주어지고, 숨겨진 구조를 파악하는 비지도 학습(Unsupervised Learning)에 대해서 다룰 것이다.
이번 글은 군집, 클러스터링에 대해 다룰 것이다. 클러스터링은 크게 두 가지로 나눌 수 있다.
- 하드 클러스터링 : 특정 개체가 집단에 포함되는지 여부(포함or미포함)
ex) K-means Clustering - 소프트 클러스터링 : 특정 개체가 얼마나 포함되는지 속하는 정도로 표현
ex) GMM
클러스터링의 목표는 군집 간 유사성 최소화, 군집 내 유사성 최대화라고 할 수 있다. 즉, 다른 군집 간 데이터끼니를 최대한 서로 비슷하지 않게 하고 같은 군집 내의 데이터끼리는 서로 비슷하게 하는 것이 목적이다.
K-means Clustering
K-means Clustering은 제공된 데이터를 K개로 군집화하는 기법이다. 여기서 K는 직접 설정해준다. 다음과 같은 절차를 거친다.
- Data Set 중 K개를 랜덤으로 뽑아 중심으로 잡는다.
-> 이는 초기화 단계에서만 진행한다. - 모든 데이터에 대해, 자신과 가장 가까운 중심의 클러스터를 저장한다.
- 각 클러스터에 할당된 데이터들의 중심을 계산하고, 새로운 중심으로 설정한다.
- 2, 3번을 중심이 변하지 않을 때까지 반복한다.
분할정복류 정렬 기법과 비슷하게, 몇 개를 찍어서 원하는 결과가 나올 때까지 반복하는 방법이다. K 값을 다양하게 시도해보며, Elbow Method로 선택한다. Elbow Method는 클러스터 수를 증가시켜도 성능의 변화가 크게 일어나지 않는 지점의 K를 선택하는, 말하자면 Cost Function의 변곡점을 선택하는 방법이다.
K-means Clustering의 경우 랜덤 초깃값 설정이기 때문에, 분포가 독특할 경우 결과가 잘 나오지 않을 수 있다. 반면에 시간 복잡도는 낮은 편에 속한다. 실제로 이 기법을 사용할 때에는 여러 번 클러스터링을 수행하고, 가장 빈번히 나오는 군집을 선택한다.
GMM(Gaussian Mixture Model)
GMM은 확률을 통해 데이터 유사성을 측정하는 기법이다. 즉, 클러스터에 속하는 정도를 표현한다.
전체 데이터의 확률 분포가 여러 개의 정규 분포의 조합으로 이루어져 있다고 가정하고, 각 분포에 속할 확률이 높은 데이터끼리 클러스터링 한다.
- 학습 데이터의 분포와 유사한 K개의 정규 분포 추출(K개의 클러스터가 된다)
- 개별 데이터가 어떤 정규 분포에 속하는지 결정
이를 단계별로 절차를 보면 다음과 같다.
- 각 클러스터마다 선택될 확률/평균/분산을 랜덤하게 초기화한다.
-> 확률 : 데이터가 어떤 클래스에 속하는지, 평균/분산 : 형태 - 변화가 없을 때까지 각 데이터를 확률/평균/분산에 맞춰 계산한다.
평가 지표
클러스터링 타당성 평가는 정답이 없으므로, 군집 간 거리/군집의 지름/군집의 분산 등을 종합적으로 고려하여 확인한다.
그 중 하나인 Dunn Index는 (군집 간 거리의 최솟값)/(군집 내 요소 간 거리의 최댓값)이다. 그러므로 자연히 클수록 높은 성능을 가지게 된다.
다음으로 실루엣 지표는 (a(i)-b(i)/max(a(i),b(i))로, 클러스터의 밀집 정도를 계산한다. -1부터 1 사이의 값을 가질 수 있으며 1에 가까울수록 높은 성능을 가진다고 볼 수 있다.
a(i) : i번째 데이터가 속한 군집과 가장 가까운 이웃 군집을 택해서 계산한 값
b(i) : i번째 데이터와 같은 군집에 속한 요소들 간 거리의 평균
'Development > Machine Learning' 카테고리의 다른 글
[AI] 의사 결정 트리(1) - 회귀, 분류, 앙상블 (0) | 2021.03.12 |
---|---|
[AI] 차원 축소(Dimensionality Reduction) (0) | 2021.02.13 |
[AI] 분류 - KNN, 평가 지표 (0) | 2021.01.18 |
[AI] 분류 - SVM, 나이브 베이즈 분류 (0) | 2021.01.13 |
[AI] 회귀분석 - 검증, 평가 (0) | 2021.01.12 |