[라이브 세션] 머신러닝 심화 2회차
🆚 01. 지도학습 vs 비지도학습(클러스터링)
본격적인 개념 파악에 앞서, 우리가 기존에 배웠던 지도학습과 무엇이 다른지 직관적으로 비교해 볼까요?
| 구분 | 지도학습 (Supervised) | 비지도학습 (Unsupervised) |
| 입력 데이터 | (x,y)입력 + 정답 | x만 (정답 없음) |
| 핵심 목표 | 새로운 데이터의 정답을 예측 | 데이터의 숨겨진 구조와 패턴 발견 |
| 대표 예시 | 스편 메일 분류, 불량품 판정 | 고객 행동별 그룹 묶기, 토픽 모델링 |
| 평가 방법 | 정확도(Accuracy), F1-Score 등 | 군집 품질 지표 (실루엣 스코어 등) |
🎯 02. 클러스터링(Clustering)이란?
"기준을 가지고 데이터의 숨은 구조를 발견해 이름표 달아주기"
클러스터링은 정답이 없어도 데이터끼리의 거리를 측정해서 자동으로 비슷한 것들끼리 그룹(군집)을 만드는 방법론입니다. 마치 마구잡이로 섞여 있는 구슬들을 색상이나 크기 같은 특성을 보고 끼리끼리 모아두는 것과 같습니다.
📐 좋은 군집을 나누는 수학적 기준
컴퓨터가 군집을 잘 나눴는지 판단할 때는 두 가지 거리를 계산합니다.
- Intra-cluster (군집 내 거리): 같은 그룹 안에 있는 데이터들끼리의 거리는 가까울수록 좋습니다. (응집도 높음)
- Inter-cluster (군집 간 거리): 서로 다른 그룹과 그룹 사이의 거리는 멀수록 좋습니다. (분리도 높음)
⚙️ 03. 프로세스 관점으로 보는 클러스터링 (QA/QC 적용 예시)
실무에서 클러스터링 프로젝트를 진행할 때는 다음과 같은 4단계 파이프라인을 거칩니다.
- 1단계: 문제 정의 ➡️ 무엇을 묶고 싶은가?
- (예시) 생산 공정 데이터 기반으로 발생하는 불량 유형들을 그룹화하고 싶다!
- 2단계: 특징 추출 ➡️ 어떤 데이터로 비교할까?
- 도메인 지식을 기반으로 필요한 변수를 고르고, 스케일링 및 차원 축소를 진행합니다.
- 3단계: 군집 수행 ➡️ 적절한 알고리즘 적용
- 데이터 특성에 맞춰 K-Means, DBSCAN 등의 알고리즘을 선택해 실행합니다.
- 4단계: 결과 해석 🌟 ➡️ 묶인 것들에 비즈니스 의미 부여
- "아하! 자동으로 묶인 1번 그룹 데이터들을 보니 '고온 환경에서 발생하는 불량'들이구나!" 하고 해석합니다.
📈 04. 클러스터링은 언제, 어떻게 활용되나요?
현업에서 클러스터링이 강력한 무기가 되는 대표적인 3가지 관점입니다.
① 데이터 요약 및 시각화 (Summarization)
방대한 양의 데이터를 몇 개의 핵심 그룹으로 묶어 전체적인 판세를 파악합니다.
- 예시: 1년간의 뉴스 데이터를 클러스터링하여 올해의 주요 핫이슈 트렌드 토픽 찾기
- 예시: 위·경도 데이터를 바탕으로 트위터(X) 유저들이 응원하는 야구팀 분포 시각화
② 데이터에 대한 깊은 이해 (Understanding)
레이블이 없는 데이터의 순수한 분포와 패턴을 발견합니다.
- 예시: 스포티파이(Spotify)에서 1년간 재생된 음악들의 특성을 분석해 음악 장르/무드 파악
- 예시: 신용카드 사용 패턴을 분석해 고객 세그먼트 분류 및 유전자 발현 패턴으로 질병 유형 분류
③ 실제 행동을 위한 전략 수립 (Strategy Planning)
분석 결과로부터 비즈니스 액션 아이템을 도출합니다. 현업에서 가장 가치 있게 쓰이는 영역입니다.
- 이상 탐지 (Anomaly Detection): 정상 데이터 군집의 중심에서 말도 안 되게 멀리 떨어진 데이터를 찾아내 고장이나 사기 거래(FDS) 징후로 포착합니다.
- 타겟 마케팅: 고객을 VIP 군집, 가격 민감 군집, 트렌드 추종 군집 등으로 세분화하여 그룹별 맞춤형 할인 쿠폰이나 마케팅 캠페인을 설계합니다.

📐 1. 기하학적 거리 (공간 중심)
우리가 흔히 생각하는 공간상의 좌표를 기준으로 거리를 재는 가장 기본적이고 직관적인 방법들입니다.
① 유클리디안 거리 (Euclidean Distance) 👉 "가장 빠른 직선거리"
- 개념: 두 점을 자로 대고 직선으로 이은 길이입니다. 학창 시절 배운 '피타고라스 정리'와 똑같습니다.
- 특징: 가장 대중적이고 K-means 알고리즘의 기본값입니다. 다만, 이상치(Outlier)가 있으면 거리가 왜곡되기 쉽다는 단점이 있습니다.
- 추천 상황: 변수들의 스케일(단위)이 비슷하고 연속적인 수치 데이터일 때 (예: 키, 몸무게 기반 고객 세분화)

② 맨하탄 거리 (Manhattan Distance) 👉 "빌딩을 피해 가는 바둑판 거리"
- 개념: 뉴욕 맨하탄의 바둑판 모양 도로처럼 대각선 돌파가 불가능할 때, 가로 축 차이와 세로 축 차이의 절댓값을 더한 거리입니다. (Taxicab Distance라고도 부릅니다.)
- 특징: 제곱을 하지 않기 때문에 유클리디안보다 이상치에 훨씬 덜 민감하며, 고차원 데이터에서 효과적입니다.
- 추천 상황: GPS 위치 기반 배달 구역 설정, 격자형 공간 분석

③ 민코프스키 거리 (Minkowski Distance) 👉 "거리 계의 카멜레온"
- 개념: 유클리디안과 맨하탄 거리를 $p$라는 값 하나로 조절할 수 있도록 일반화한 범용 공식입니다.
- 특징: p=1이면 맨하탄 거리, p=2이면 유클리디안 거리로 변신합니다.

🧭 2. 방향과 패턴 중심 거리
값의 절대적인 크기(Scale)보다 '데이터가 향하는 방향이나 패턴'이 중요할 때 사용합니다.
① 코사인 거리 (Cosine Distance) 👉 "크기는 상관없어, 방향만 봐!"
- 개념: 두 벡터 사이의 '각도'를 이용해 유사도를 측정합니다. 두 데이터의 수치적 크기가 달라도 변화 추이나 패턴이 비슷하면 가깝다고 판정합니다.
- 특징: 0~2 사이의 값을 가집니다. (1 - 코사인 유사도)
- θ = 0° 는 두 값의 방향이 동일하므로 cosine_similarity = 1
- θ = 90°` 는 두 값의 방향이 직교하므로 `cosine_similarity = 0
- θ = 180°` 는 두 값의 방향이 반대이므로`cosine_similarity = -1
- 추천 상황: 고차원 텍스트 문서 유사도 분석, 추천 시스템, 센서 데이터의 변화 추이 분석
② 자카드 거리 (Jaccard Distance) 👉 "공통 원소의 비율"
- 개념: 두 집합이 얼마나 겹치는지(교집합/합집합 비율)를 기반으로 잰 자카드 유사도의 반대(보수) 개념입니다.
- 특징: 0과 1 사이의 값을 가지며, 범주형 데이터나 One-Hot 인코딩된 데이터에 매우 강력합니다.
- 추천 상황: 고객 구매 상품 바구니 유사도 분석, 유전자 서열 비교
📊 3. 통계적 / 특수 목적 거리
데이터의 분포 형태나 특수한 비즈니스 규칙을 반영해야 할 때 꺼내 드는 마스터 키입니다.
① 마할라노비스 거리 (Mahalanobis Distance) 👉 "데이터 분포 고려하기"
- 개념: 단순히 두 점 사이의 거리만 보지 않고, 데이터의 전체적인 분포 형태(공분산)를 고려합니다. "이 데이터가 전체 군집 뭉치 안에서 실제로 일어날 법한 위치에 있는가?"를 따집니다.
- 추천 상황: 변수 간 상관관계가 깊을 때, 이상치 탐지(Anomaly Detection) 및 불량 탐지
② 체비셰프 거리 (Chebychev Distance) 👉 "단 하나라도 어긋나면 불량!"
- 개념: 여러 차원의 차이 값 중 '가장 차이가 큰 단 하나의 최댓값'만을 거리로 봅니다. 체스판의 킹이 사방으로 움직일 때 드는 최소 턴 수와 같습니다.
- 수식: $d = \max(|x_1 - x_2|, |y_1 - y_2|)$
- 추천 상황: 단 하나의 기준이라도 한계치를 초과하면 안 되는 엄격한 품질 검사(QC)
③ 리벤슈테인 거리 (Levenshtein Distance) 👉 "글자 편집 거리"
- 개념: 수치가 아닌 '문자열' 사이의 거리를 측정합니다. 한 단어를 다른 단어로 바꾸기 위해 몇 번의 수정(삽입, 삭제, 교체)이 필요한지 횟수를 잰 것입니다.
- 추천 상황: 제품 일련번호/모델명 오타 분석, 공정 단계 코드의 유사성 비교
🎯 [한눈에 보는] 목적별 거리 추천 치트키 리스트
| 분석 상황 및 데이터 특징 | 추천 거리 알고리즘 | 한 줄 채택 이유 |
| 일반적인 숫자 데이터 (키, 몸무게 등) | 유클리디안 | 가장 직관적이며 K-means의 기본 패러다임 |
| 이상치(노이즈)의 영향을 줄이고 싶을 때 | 맨하탄 | 절댓값 기반 합산으로 극단값 왜곡에 강함 |
| 변수 간 상관관계 분석, 이상치 탐지 | 마할라노비스 | 데이터의 분포(공분산) 형태까지 똑똑하게 반영 |
| 단 하나라도 기준치를 초과하면 불량 처리할 때 | 체비셰프 | 차원 중 가장 큰 오차 하나만 골라내는 엄격함 |
| 문자열 오타 검사, 공정 코드 비교 | 리벤슈테인 | 편집 횟수(삽입/삭제) 기반의 문자열 전용 거리 |
| 데이터 크기보다 변화 패턴/추이가 중요할 때 | 코사인 | 벡터의 크기 스케일을 무시하고 오직 '방향'만 비교 |
| 구매 품목 리스트, 카테고리 집합 비교 | 자카드 | 교집합과 합집합 비율을 이용한 이진 데이터 최적화 |

🧭 클러스터링 문제해결 6단계 가이드북
정답이 없는 비지도학습인 만큼, 각 단계마다 나침반 역할을 해줄 주의사항을 함께 체크하는 것이 핵심입니다.
| 단계 | 데이터 엔지니어가 해야 할 일 | ⚠️ 반드시 체크해야 할 주의사항 |
| 1. 문제 정의 | "왜 이 군집을 찾으려 하는가?"에 대한 비즈니스 목표를 명확히 세웁니다. | "군집을 몇 개로 나눌까?"라는 기술적 수치보다 분석의 목적이 언제나 먼저여야 합니다. |
| 2. 데이터 전처리 | 수집된 데이터의 결측치를 처리하고, 범위를 맞추는 스케일링(Scaling)을 수행합니다. | 클러스터링은 '거리' 기반 알고리즘이기 때문에 데이터의 스케일에 매우 민감합니다. |
| 3. 알고리즘 선택 | 데이터의 모양(원형인지, 밀집 형태인지), 크기, 목적에 맞는 최적의 알고리즘을 선택합니다. | 데이터의 분포 특성에 따라 K-Means, DBSCAN 등 궁합이 맞는 알고리즘이 다릅니다. |
| 4. 학습 & K 결정 | 선택한 모델을 학습시키고, 최적의 군집 수(K)를 탐색합니다. | 엘보우 방법(Elbow Method)이나 실루엣 분석(Silhouette) 같은 시각적·통계적 도구를 활용합니다. |
| 5. 군집 평가 | 나뉜 군집들이 통계적으로 의미 있게 잘 분리되었는지 품질을 검증합니다. | 지도학습과 달리 정답 시험지가 없으므로, 군집 내부 응집도와 군집 간 분리도를 상대적으로 비교해야 합니다. |
| 6. 해석 및 활용 🌟 | 완성된 각 군집의 특성을 분석하여 비즈니스에 적용할 액션 아이템(Action Item)을 도출합니다. | 여기에 현업의 도메인 지식이 결합되어야 비로소 인공지능 기술이 진짜 돈이 되는 가치를 발휘합니다. |
🌲 01. 계층적 군집화(Hierarchical Clustering)란?
"가장 비슷한 것 두 개를 묶고, 또 비슷한 것끼리 묶고… 이 과정을 나무처럼 기록하자."
계층적 군집화는 데이터 간의 거리를 계산하여 나무 모양의 계층 구조(Dendrogram)를 만들어가는 방식입니다. 처음부터 "3개로 쪼개줘!"라고 요구하는 것이 아니라, 데이터를 밑바닥부터 혹은 꼭대기부터 차근차근 연결해 나가며 전체적인 지도를 그리는 방법론입니다.
📊 02. 계층적 군집화의 치트키, '덴드로그램(Dendrogram)'
계층적 군집화 결과물을 시각화한 나무 모양의 도표를 '덴드로그램'이라고 부릅니다.
- 사후에 K를 결정하는 유일한 구조 ✂️: 덴드로그램의 가장 강력한 장점입니다. 처음엔 군집 개수를 몰랐더라도, 완성된 나무 그림을 본 뒤 "어떤 높이(거리)에서 가로로 자르느냐"에 따라 최종 군집 개수를 분석가가 나중에 자유롭게 결정할 수 있습니다.
⚙️ 03. 계층적 군집화의 2가지 방향 (동작 과정)
데이터를 묶어나가는 방향에 따라 크게 두 가지 방식으로 나뉩니다. 실무에서는 보통 밑바닥부터 합쳐 나가는 상향식(Bottom-up) 방식이 가장 널리 쓰입니다.
① 통합 계층 군집화 (Agglomerative, 상향식) ⭐
- Step 1 (맨 아래): 모든 데이터 포인트가 각자 1개짜리 독립된 군집으로 시작합니다. (데이터가 100개면 군집도 100개)
- Step 2: 가장 거리가 가까운(비슷한) 두 군집을 찾아서 하나로 병합합니다.
- Step 3: 모든 데이터가 거대한 하나의 군집(맨 위)으로 뭉칠 때까지 이 과정을 반복하며 연결된 높이(거리)를 기록합니다.
- Step 4: 분석가가 원하는 군집 수가 되는 최적의 높이에서 싹둑 잘라 최종 그룹을 얻습니다.

② 분할 계층 군집화 (Divisive, 하향식)
- 개념: 통합 계층과 정확히 반대로 작동합니다. 처음에는 전체 데이터를 하나의 커다란 군집(맨 위)으로 파악한 뒤, 아래로 내려가며 가장 이질적인 데이터들을 쪼개어 결국 개별 포인트(맨 아래)로 끝이 납니다.

🔗 04. 군집을 묶는 4가지 주요 연
결 방식 (Linkage)
계층적 군집화에서는 점과 점 사이의 거리뿐만 아니라, '이미 만들어진 군집과 군집 사이의 거리'를 어떻게 측정하느냐에 따라 나무의 모양과 결과가 완전히 달라집니다. 대표적인 4가지 연결 방식이 있습니다.
- 단일 연결법 (Single Linkage): 두 군집의 멤버 중 가장 가까운 점들 사이의 거리를 기준으로 병합 (사슬 모양으로 길게 늘어지는 경향이 있음)
- 완전 연결법 (Complete Linkage): 두 군집의 멤버 중 가장 먼 점들 사이의 거리를 기준으로 병합 (둥글고 촘촘한 군집이 형성됨)
- 평균 연결법 (Average Linkage): 두 군집 내의 모든 점 사이의 거리 평균을 기준으로 병합 (이상치에 비교적 강건함)
- 와드 연결법 (Ward's Linkage): 군집을 합쳤을 때 군집 내부의 오차 제곱합(Variance)이 가장 최소가 되는 방향으로 병합 (크기가 균등한 군집을 만드는 데 탁월하여 실무에서 선호)

🏃 01. K-means 알고리즘이란?
K-means는 데이터를 중심점(Centroid)과의 평균 거리를 기반으로 K개의 군집으로 나누는 대표적인 분리형 군집화 방법입니다.
- 철저한 분리형: 어떤 데이터 포인트도 두 개 이상의 클러스터에 동시에 속할 수 없습니다. (무조건 한 팀에만 소속)
- 인간의 개입(K): 몇 개의 그룹으로 나눌지 뜻하는 $K$는 사용자가 직접 지정해 주어야 하는 하이퍼파라미터입니다.
- 알고리즘의 목적: 최적의 중심점(Centroid) 위치를 찾고, 각 데이터를 가장 알맞은 군집에 할당(Membership 최적화)하는 것입니다.

⚙️ 02. K-means 작동 원리 5단계
작동 방식을 초등학교 '운동회 팀 나누기'에 비유해 보면 아주 쉽습니다.
- Step 1: 군집 개수(K) 설정 ➡️ 데이터를 몇 개로 쪼갤지 결정합니다. (예: $K=3$)
- Step 2: 초기 중심점(Centroid) 설정 ➡️ 공간 상에 무작위 혹은 수동으로 $K$개의 임의의 중심점을 뿌립니다.
- Step 3: 데이터를 군집에 할당 ➡️ 모든 데이터 포인트는 자신과 가장 가까운 거리(유클리디안 거리 기준)에 있는 중심점의 군집으로 소속됩니다.
- Step 4: 중심점 재설정(갱신) ➡️ 소속이 완료되면, 각 군집에 모인 데이터들의 평균값(무게중심)을 계산해 중심점을 그 위치로 새로 이동시킵니다.
- Step 5: 수렴할 때까지 반복 ➡️ 데이터의 소속이 바뀌지 않고, 중심점의 이동이 멈출 때까지 Step 3과 Step 4를 끊임없이 반복합니다.
📐 03. 최적의 군집 개수(K)를 찾는 2가지 치트키
K-means를 쓸 때 가장 고심하게 되는 "$K$를 몇으로 해야 하지?"라는 질문은 아래 두 가지 수학적 도구로 명쾌하게 해결할 수 있습니다.
① 엘보우 방법 (Elbow Method) 👉 "꺾이는 팔꿈치를 찾아라"
- 원리: K를 1부터 차례대로 늘려가며 군집 내 거리 제곱합(Inertia 또는 WCSS)을 측정합니다.
- 해석: K가 커질수록 오차는 당연히 줄어들지만, 어느 순간부터는 K를 늘려도 오차가 별로 안 줄어드는 급격한 꺾임 지점(팔꿈치 모양)이 나타납니다. 그 지점이 가장 효율적인 최적의 K입니다.
② 실루엣 분석 (Silhouette Score) 👉 "얼마나 군집끼리 잘 떨어져 있나"
- 원리: 내가 속한 군집 안의 데이터들과는 얼마나 가깝고, 이웃한 다른 군집의 데이터들과는 얼마나 멀리 떨어져 있는지를 수치화합니다.
- 해석: -1에서 1 사이의 값을 가지며, 1에 가까울수록 군집화가 완벽하게 잘 분리되었다는 뜻입니다. 실루엣 점수가 가장 높은 K를 선택합니다.
⚖️ K-means 알고리즘의 장점과 한계
👍 확실한 장점 (왜 실무에서 가장 먼저 쓸까?)
- 압도적인 속도와 효율성: 계산 비용(시간과 메모리)이 적게 들어 대용량 데이터나 고차원 데이터도 순식간에 클러스터링합니다.
- 단순함: 구조가 아주 직관적이고 간단하여 빠르게 구현하고 결과를 해석하기에 좋습니다.
👎 명확한 한계 (이럴 땐 쓰면 안 돼요!)
- 사전 K 지정의 한계: 데이터 특성을 모르면 적절한 $K$값을 잡기 어렵습니다.
- 초기 값에 대한 민감도: 처음에 주장을 무작위로 어디에 세우느냐에 따라 최종 클러스터링 결과가 판이하게 달라질 수 있습니다.
- 형태의 제약: 유클리디안 거리(직선거리) 기반으로 균등하게 동그라미를 그리며 묶기 때문에, 데이터가 길쭉하거나, 초승달 모양이거나, 군집별 밀도가 다르면 엉망으로 묶어버립니다.
- 이상치(Outlier)에 취약: 평균값을 기반으로 중심을 이동하므로, 저 멀리 뜬금없는 외딴섬 데이터(이상치) 하나 때문에 중심점이 엉뚱한 곳으로 끌려갈 수 있습니다.

⚡ 01. DBSCAN이란?
DBSCAN은 데이터 포인트가 밀집된 영역을 감지하여 클러스터로 정의하는 알고리즘입니다. 즉, 데이터가 가깝게 모여 있는 빽빽한 지역은 하나의 그룹으로 묶고, 텅 빈 지역에 외롭게 떨어져 있는 점들은 과감하게 '노이즈(소음/쓰레기 데이터)'로 분류해 버립니다.
📊 K-means vs DBSCAN 한눈에 비교하기
| 특성 | K-means | DBSCAN |
| 클러스터 개수 (K) | 사람이 미리 지정해야 함 | 데이터 밀도에 따라 자동으로 결정 |
| 클러스터 형태 | 구형(동그라미)만 가능 | 임의의 기하학적 형태 모두 가능 |
| 노이즈(이상치) 처리 | 불가능 (중심점이 노이즈에 끌려감) | 탁월함 (노이즈는 그룹에서 아예 배제) |
| 하이퍼파라미터 | 군집 개수(k) | 반지름(eps), 최소 이웃 수(min_samples) |
⚙️ 02. DBSCAN의 핵심 뼈대: 2대 파라미터와 3대 포인트
DBSCAN을 돌리기 위해 인간이 지정해 주어야 하는 핵심 설정값(하이퍼파라미터)은 딱 두 가지입니다.
- eps (Epsilon): "내 주변을 반지름 몇 m 안까지 탐색할까?" ➡️ 이 반경 안에 들어와야 이웃으로 인정합니다.
- min_samples: "이웃이 최소 몇 명 이상 모여 있어야 '우리 무리(군집)'로 인정할까?"
이 두 가지 기준을 가지고 컴퓨터는 데이터 공간 내의 모든 점을 딱 3가지 신분으로 분류합니다.
- 코어 포인트 (Core Point)
- 내 주변(반지름 eps 안)에 이웃 데이터가 min_samples 개수 이상으로 빽빽하게 찬 완벽한 중심점입니다.
- 보더 포인트 (Border Point)
- 내 주변에는 이웃이 기준치만큼 많지는 않지만, 내 이웃 중에 코어 포인트가 살고 있어서 슬쩍 같은 그룹으로 인정받는 언저리 점입니다.
- 노이즈 포인트 (Noise Point)
- 코어 포인트도 아니고, 그렇다고 주변에 코어 포인트가 살지도 않아서 어떤 군집에도 속하지 못하고 혼자 덩그러니 남겨진 이상치입니다.
🏃 03. DBSCAN은 어떻게 작동할까요? (진행 과정)
- 공간 내에서 임의의 데이터 포인트를 하나 콕 집습니다.
- 그 점을 중심으로 반지름 eps 만큼 원을 그려 이웃이 몇 개인지 셉니다.
- 만약 이웃 수가 min_samples 이상이면 그 점을 '코어 포인트'로 승격시키고 첫 번째 클러스터를 생성합니다. (만약 기준 미달이면 일단 노이즈 포인트로 둡니다.)
- 새로 만든 클러스터에 포함된 이웃 점들을 방문해 똑같이 원을 그립니다. 거기서 또 코어 포인트가 발견되면 그 이웃들의 무리까지 전부 하나의 거대한 클러스터로 강제 통합(릴레이 확장)합니다.
- 이 군집의 확장이 끝날 때까지 2~4번 과정을 계속 반복하며 촉수를 뻗어나갑니다.
- 모든 데이터 포인트가 코어, 보더, 노이즈 중 하나의 신분을 얻을 때까지 이 전체 과정을 반복합니다.

⚖️ DBSCAN의 명확한 장점과 한계
👍 이럴 때 쓰면 치트키입니다
- 클러스터 개수를 전혀 감 잡을 수 없을 때
- 데이터가 초승달 모양이나 둥근 고리 모양 등 불규칙하고 복잡한 기하학적 형태를 띨 때
- 데이터에 이상치나 결측치, 노이즈가 유난히 많아 정제가 피곤할 때
👎 이런 데이터에선 힘을 못 씁니다
- 밀도가 들쭉날쭉한 데이터: 어떤 군집은 엄청 조밀하고, 어떤 군집은 엄청 느슨하게 퍼져 있다면 eps 단 하나로 두 군집을 동시에 잡아낼 수 없어 성능이 처참해집니다.
- 파라미터 설정의 늪: eps 값을 너무 작게 주면 온 세상 점이 다 노이즈가 되고, 너무 크게 주면 모든 데이터가 거대한 하나의 덩어리로 묶입니다. 적정 수준을 찾는 데 시행착오와 도메인 지식이 꽤 필요합니다.
