공부하게 된 이유
때는 바야흐로 포트폴리오 내용을 속속들히 공부하고자, 포트폴리오의 부분들을 익혀가고 있던 때였다. 이 때, 고객id와, 재구매 주기만을 가지고 클러스터링을 했던 부분에 맞닥뜨렸는데... (팀원이 진행했던 부분)
여기서 생성된 질문은
1. 고객 id랑 재구매주기만 있는데 이걸 클러스터링까지 했네? 이유가 뭐였을까?
2. K-means 사용했네, 다른 것도 사용할 수 있을까?
이렇게 시작된 클러스터링 방법 찾기 대모험✨
데이터셋(가정, 가볍게)
| 고객 id | 재구매주기 |
| 1 | 52일 |
| 2 | 205일 |
| ... | ... |
이 데이터를 K-means를 돌려서 재구매주기별로 고객을 세 군으로 나누고, 각 군 별로 마케팅 계획을 세운 상황.
질문
1. 데이터가 매우 가벼운데 이걸 머신러닝까지 해야할까?
2. K-means vs. DBSCAN vs. 계층적 - 어떤걸 선택해야할까?
1. 데이터가 매우 가벼운데 이걸 머신러닝까지 해야할까?
정답: 필요하다면 진행한다. 필요한 경우 = 고객군을 정확히 어디서 나눠야할지 모르겠을 때.
먼저 데이터를 EDA 한다.


위 그림들 처럼 분포가 굉장히 다양할 수 있다. 근데 왼쪽 그림도, 정확히 어디서 잘라야, 고객들을 분류할 수 있을지 모르겠다는 생각이 들 수 있다. 오른쪽 그림도 상황에 따라 분류가 굉장히 곤란할 수 있다.
분포를 확인하고 군을 나누려고 했는데 기준 세우기가 어렵다. 나름 내부 지표를 참고해봐도 영 기준이 잘 안세워지는 경우가 있다. 따라서 고객의 군을 꼭 나눠야한다면, 데이터가 단순하더라도 클러스터링을 진행해 '고객군을 나누는 기준을 세울 때 참고하는 보조 지표'로서 클러스터링 결과를 사용할 수 있다.
2. K-means vs. DBSCAN vs. 계층적 - 어떤걸 선택해야할까?
정답: 세그먼트를 나누기 위해서는 K-means, 이상치 확인을 위해서는 DBSCAN, 계층 확인을 위해서는 계층적 클러스터링.
먼저 계층적 클러스터링은 K-means와 DBSCAN과는 다른 특징이 있다. 바로 계층을 나타낼때 쓴다는 것.
결과물은 덴드로그램으로 이해하면 된다.

계층적 클러스터링은
- 개별 데이터를 군집이라 생각하고, 가까이 있는 군집부터 모아모아 차근차근 합치는 방식이다. 따라서 일반적으로 상향식이며, 하향식은 보통 절반씩 쪼개면서 세분화하면서 진행한다.
- 군집개수를 미리 정할 필요가 없으며, 결과를 바탕으로 몇개의 군집으로 최종 정할것인지 정리할 수 있다(cutting).
그렇다면 K-means vs. DBSCAN 둘 중에는 어떻게 택하면 될까?
일단 K-means는 거리 기반, DBSCAN은 밀도기반이라는 점에서 차이가 있는데, 이 점은 뭘 사용할 지 정할 때 도움이 별로 되지 않는다. 예시로 알아보자.

데이터가 이런 그래프를 보인다고 하고, 빨간 사각형 안에 있는 값 처럼, 일부 특이값이 있다고하자.
이런 경우,
- 이 값을 여전히 어딘가의 클러스터에 넣을거라면 => K-means
- 이 값은 제외하고 나머지를 클러스터링 해볼거라면 => DBSCAN
왜 이러냐고? DBSCAN은 결과가 클러스터1, 클러스터2, 노이즈 이렇게 결과가 나올 수 있기 때문이다. 노이즈는 클러스터에 속하지 않는 값이기 때문에, DBSCAN은 이상치 탐지용으로 사용되는 것이다.
결론
거리 기반 + 모든 데이터를 클러스터에 넣어서 군집화할 것 = K-means
밀도 기반 + 모든 데이터를 클러스터에 넣지 않아도 된다(OR 이상치 확인이 필요하다) = DBSCAN
계층 구조가 있는 듯 하다 + 세그먼트를 어떻게/몇개로 나눠야하는지 모르겠다 = 계층적 클러스터링
+) 추가적으로 GMM(가우시안 믹스쳐 모델) 은 클러스터 경계가 흐릿한 데이터인 경우, 대상 A가 클러스터1에 속할 확률이 70%, 2에 속할 확률이 30%와 같이 결론 내는 것이 필요할때(=soft clustering) 진행한다.
'Python_Wiki > 머신러닝' 카테고리의 다른 글
| (포폴 다시 공부하기) 인스타카트 예측: 새제품 추천, 재구매제품 예측, 구매주기 예측 (0) | 2026.02.11 |
|---|---|
| K-means vs. DBSCAN 순서 알아보기(feat. k찾기 / eps 설정) (0) | 2026.02.10 |