머신러닝 정리(3) - 클러스터링

hyun-jin·2025년 4월 14일

데이터 분석

목록 보기
42/100

데이터 분석 38일

- 세상엔 두 가지 머신러닝

방식특징예시
지도학습답(정답)이 있는 상태에서 배우기스팸메일인지 아닌지 알려주기
비지도학습답 없이 데이터끼리 스스로 규칙 찾기성격 비슷한 사람끼리 알아서 묶기

✅ 클러스터링

- 클러스터링 = 비지도학습 대표 선수
→ "군집화"라고도 불러.
→ 특징 비슷한 애들끼리 자동으로 묶어주는 기술!


1. 레이블이 없는 세상, 비지도 학습

고객의 나이, 구매 금액, 구매 주기 같은 정보가 쭉~ 들어 있는 데이터가 있다.
그런데 문제는... "누가 VIP인지, 누가 잠재고객인지 아무도 안 알려줌!"

👉 이런 상황에서는 '정답(레이블)' 없이 데이터 자체를 보고 그룹을 나누는 것이 중요. <- 이게 바로 비지도 학습!(unsupervised learning)


2. 그래서 그룹을 나눠보기! (Clustering)

  • 사람들이 어떤 공통점으로 묶일 수 있을까❓
    - 자주 사는 사람들끼리?
    - 한 번에 많이 사는 사람들끼리?

그렇다면, 비슷한 속성을 가진 사람들끼리 자동으로 묶어주는 알고리즘이 필요.
바로 그게 클러스터링(군집 분석)!


3. 클러스터링을 하는 순서

1) 데이터 준비: 결측값, 이상치 제거하고 스케일 조정!
2) 알고리즘 선택: 어떤 방식으로 그룹을 나눌까?
3) 파라미터 설정: 군집 수나 거리 기준 등을 정함
4) 결과 평가: 그룹이 잘 나뉘었는지 확인!
5) 비즈니스에 적용: 그룹별 맞춤 전략 실행!


4. 우리가 쓸 수 있는 3가지 대표 방법

✅ 1) K-Means (가장 많이 쓰이는 방식)

  • 미리 "몇 개 그룹으로 나눌지(K)"를 정해줘야 함
  • 각 그룹 중심을 기준으로 가장 가까운 데이터들끼리 묶음
  • 빠르고 단순하지만, 복잡한 구조나 이상치에는 약해

📦 예시:

  • 고객을 3그룹으로 나누자 → 저가상품 선호, 중간 가격대, 고가브랜드 선호

✅ 2) DBSCAN (밀도 기반 클러스터링)

  • 거리(eps)와 이웃 수(minPts)를 기준으로 데이터가 몰려 있는 곳을 그룹으로 인식
  • 군집 수를 미리 정하지 않아도 됨
  • 복잡한 모양, 이상치 처리에 강함

🗺️ 예시:

  • 지도에서 가게들이 몰려 있는 지역만 군집으로 인식 → 나머지는 '노이즈'

✅ 3) 계층적 클러스터링 (Hierarchical)

  • 처음엔 모든 점이 하나씩 군집이고 → 유사한 것부터 합쳐나감
  • 트리 모양으로 보여주는 덴드로그램(dendrogram)이 특징
  • 군집 수를 나중에 정할 수 있음

🌲 예시:

  • 유전자 데이터를 트리처럼 묶어서 비슷한 특성 가진 그룹 찾기

5. 잘 나눠졌는지 어떻게 알아?

라벨이 없으니 정확도 계산은 안 되고...
대신 내부 지표를 써야지!

📏 실루엣 계수(Silhouette Score)

  • 그룹 안에서는 서로 가까운지?
  • 다른 그룹과는 멀리 떨어져 있는지?
    → 1에 가까울수록 잘 나눠짐

📏 Davies-Bouldin Index

  • 군집끼리 덜 겹칠수록 좋은 점수
    → 값이 낮을수록 좋은 군집

6. 클러스터링 알고리즘 3대장

이름핵심 원리장점단점
K-means중심점을 기준으로 가까운 애들끼리 묶기빠르고 간단k 직접 정해야 함, 이상치에 약함
DBSCAN밀도가 높은 곳 기준으로 묶기이상치 자동 처리, k 필요 없음eps 값 설정이 중요
계층적 클러스터링유사한 애들끼리 차곡차곡 묶어 트리처럼 만듦덴드로그램 시각화 가능느림, 대규모 데이터에 비효율

📝 핵심 정리 한 줄씩

  • 클러스터링 = 데이터끼리 알아서 그룹 찾기
  • K-means = 가까운 친구끼리
  • DBSCAN = 모여있는 애들끼리
  • 계층적 클러스터링 = 차곡차곡 묶어서 트리처럼
  • 평가 = 실루엣 높고, Davies 낮으면 Good!

0개의 댓글