본문 바로가기
Deep Learning

[DL] 클러스터링

by 우직한 사람 2024. 4. 25.
반응형

 

클러스터링과 분류의 차이

클러스터링 : 레이블 없음, 비지도 학습

분류 : 레이블 있음, 지도학습

클러스터링 응용 분야

고객분할

검색엔진

이미지 분할

차원 축소 : 인스턴스와 클러스터의 유사성 측정 → 인스턴스 피처 벡터를 → 유사성 벡터로 대체

클러스터의 정의

보편적인 정의는 없음 맥락 에 따라 결정

클러스터링 알고리즘에 따른 종류

  • 특정 포인트 중심으로 유클리디안 거리 - Kmeans
  • 밀집되어있는 인스턴스들의 연속된 영영 - DBSCAN
  • 계층적인 클러스터 (HC)

KMeans

빠르고 효율적으로 클러스터링 가능한 알고리즘

Lloyd가 제안

각 덩이의 중심을 찾고 인스턴스를 가까운 덩이에 배정

  • 클러스터의 개수를 지정해줘야 함
  • 인스턴스의 레이블과 클러스터의 인덱스 혼동 주의!!! (비지도 학습)
  • 하드클러스터링 : 인스턴스를 단 하나의 클러스터로 배정하는 방법
  • 소프트 클러스터링 : 클러스터 마다 <점수>를 부여 ex) 거리 or 가우시안과 같은 유사도 점수

Kmeans 알고리즘

  1. 임의의 centroid를 가정
  2. 인스턴스 레이블 작업(centroid와의 거리)
  3. 레이블 된 인스턴스들의 평균 좌표를 계산하여 새로운 centroid 찾기
  4. 업데이트 된 centroid 이용하여 다시 레이블 작업

→ 중심점이 움직이지 않을 때까지 반복

Kmeans의 계산 복잡도

인스턴스 수, 클러스터 수, 차원수 에 선형관계

하지만, 클러스터링 구조의 데이터가 아니면 인스턴스 수의 지수적으로 복잡도 증가

Kmeans 알고리즘의 문제

  • 지역 최저점(Local minimum)에 수렴할 수 있음
  • Centroid Initialization에 영향을 많이 받음

중심점 초기화 방법 1

전제 : 이미 다른 클러스터링 알고리즘을 수행했다면

init을 중심값들을 포함하는 배열로 지정

n_init을 1로 설정

 

중심점 초기화 방법 2

전제 : 중심점 정보가 전혀 없을 떄

무작위 초기화 → 최적의 솔루션 선택 → <모델 관성> 이라는 성능지표 (낮을 수록 good)

init = ‘random’

n_init 를 파라미터 반복수로 지정

 

중심점 초기화 방법 3

Kmeans ++

중심점이 서로 멀리 떨어지도록 지정

  1. 균등한 무작위로 C1 하나 선택
  2. 특정 활률을 갖는 인스턴스 X(i)를 골라 C(i)로 선택
  3. 멀리 떨어진 인스턴스들이 높은 확률로 중심으로 선택됨

init = ‘k-means++’ ← default 파라미터

 

최적의 클러스터 수 찾기

가장 낮은 관성 모델이 항상 최선은 아님

클러스터 수가 늘어나면 당연히 관성이 줄어 듬 → 너무 클러스터 수가 많으면 오히려 안좋음

정확한 클러스터 수 결정하기

  1. 관성 - 클러스터 수 그래프 살펴보기
  2. 변곡점 찾기 (관성 감소가 느려지는 구간)

실루엣 점수

한 인스턴스의 실루엣 계수 = (b-a)/max(a,b)

a : 같은 클러스터 내 인스턴스들과의 평균 거리

b : 그 다음 가까운 클러스터 내 인스턴스들과의 평균 거리

실루엣 계수는 -1 ~1 사이

실루엣 계수 1 : good

실루엣 계수 0 : 경계

실루엣 계수 -1 : bad

실루엣 다이어그램

나이프 높이 : 클러스터에 속한 인스턴스 개수

나이프 너비 : 인스턴스의 실루엣 계수

중요

나이프 너비가 파선들을 다 넘어야 함

나이프 높이가 비슷해야함

Kmeans 한계점

여러번 실행해야한다 (local minimum 방지)

클러스터 수를 알려줘야 함

클러스터의 크기, 분포, 모양에 영향을 많이 받음 (타원형은 가우시안 혼합 모델로 해결 가능)

Kmeans은 입력 특성 스케일링이 중요하다!

반응형