Search

군집 분석

1. Kmeans

1-1. 개념

K개의 평균으로부터 거리를 계산하고,
가까운 평균으로 묶어
cluster를 나누는 방식

1-2. 절차

클러스터 개수 지정(K)
그룹의 중심 점(mean)이 무작위로 선택
임의로 선택된 중심 점과 각 점 간의 거리를 계산 → 가장 가까운 중심점의 그룹으로 선택됨
선택된 그룹의 점들을 기준으로 중심점을 계산해서 찾고
위 3 ~ 4단계를 반복(중심점의 변화가 거의 없을 때까지)

1-3. 문법

n_clusters : k 개수
n_init
옵션
초기값 무작위 지정
지정된 회수만큼 수행
auto’ : 데이터 크기와 군집 수에 맞게 적절하게 지정(default)
학습과 예측 모두 x만
예측 결과는 지정한 클러스트 개수 내에서 구분
# 학습 model = KMeans(n_clusters=2) model.fit(x) # 예측 pred = model.predict(x)
Python
복사

1-4. 적정 K값 찾기

클러스터 개수를 어떻게 지정하는 것이 좋을지 결정해 줄 수 있는 기준을 알아본다.

1-4-1. inertia

군집화가 된 후, 각 중심점에서 군집의 데이터 간의 거리를 합산한 값
아무래도 K 가 적절할수록 군집의 중심점과 각 군집별 데이터들간의 거리는 줄어들 것이다.
값이 작을수록 군집화가 잘됐다고 볼 수 있다.
HOW
→ 클러스터 개수(K)를 증가시키면서
→ Inertia value 값의 변화가 거의 없는 구간의 K값을 찾는다(Elbow Method)
시각화로 확인(Elbow Method 지점을 확인한다!)

1-4-2. 실루엣 점수

클러스터링 결과의 품질 측정 지표다.
-1 ~ 1 사이의 값을 가진다.
1에 근접 : 클러스터간 거리는 멀고, 클러스터내 거리는 가깝다(좋음)
0에 근접 : 클러스터간 거리와 클러스터내 거리 비슷(클러스터가 중첩)
-1에 근접 : 클러스터링 결과가 부적절
실루엣 점수를 구하려면 적어도 K ≥ 2 여야 한다.
HOW
k 개수를 증가시키면서
→ 실루엣 점수가 1에 근접하는 구간의 k값을 확인한다.
시각화로 확인
보통 적정 KMeans 함수에서 적절한 K값을 찾아나갈 때 inertia 값과 실루엣 점수를 모두 살펴보고 적절한 값을 정하는 것이 일반적이다.

1-5. Kmeans 단점

중심점에서의 거리로 군집화를 하기 때문에 데이터가 원형 형태로 있는 경우에만 군집이 잘 형성된다.
이런 단점을 보완한 알고리즘이 DBSCAN 모델이다.

2. DBSCAN

연쇄적으로 근처의 데이터들을 클러스터 안에 포함시키는 특징이 있다.
데이터의 분포가 덩어리 형태가 아니어도 군집을 만들 수 있다.
연쇄적으로 묶을 반경(epsilon)을 수동으로 정해줘야 한다.

2-1. 절차

임의의 한 점으로부터 시작
반경 범위내(epsilon)최소 포인트 수(n)가 존재하는지 확인
존재한다면 각 포인트를 중심으로 다시 원을 그어 최소 포인트 수 확인
위의 2 ~ 3을 반복수행
존재하지 않으면, 군집에 포함되지 않는 점으로 이동해 1 ~ 4를 반복수행
어느 군집에도 포함되지 않는 점이상치로 간주

2-2. 적정 epsilon, n 찾기

KNN 알고리즘으로부터
각 점과 근처 n개 점과의 평균 거리 계산
거리 순으로 정렬해 그래프 그리기
급격히 멀어지기 시작하는 거리 구간을 찾아 eps 값으로 적용(Elbow method)
시각화로 확인