: 정답(label)없이 데이터의 구조, 패턴, 관계를 학습하는 방법
| 구분 | 지도학습 | 비지도학습 |
|---|---|---|
| 정답(y) | 있음 | 없음 |
| 목표 | 예측 | 구조 발견 |
| 평가 | 정확도, RMSE 등 | 명확하지 않음 |
| 예시 | 분류, 회귀 | 군집, 차원축소 |
: 비슷한 데이터끼리 자동으로 묶는 것
정답은 없지만 데이터 내부의 자연스러운 그룹 구조를 찾는 것이 목적!
: 각 클러스터의 중심(centroid)을 기준으로 데이터를 나누는 모델


: 데이터를 트리 구조로 묶는 모델

Agglomerative(Bottom-up) -> 실무에서 주로 사용
Divisive(Top-down)
거리 기준(Linkage 방식)
K를 미리 정하지 않아도 되고 덴드로그램으로 시각화 가능

계산량이 크고 큰 데이터에 비효율적임
데이터가 많지 않고 계층 구조를 보고 싶을 때 주로 사용
: 밀도가 높은 영역을 하나의 클러스터로 보는 모델

ε (입실론): 반경, MinPts: 최소 이웃 개수
Core point: 이웃이 충분히 많음, Border point: 코어 근처, Noise: 어디에도 속하지 않음

클러스터 개수 자동 결정, 이상치 자동 탐지, 비구형 클러스터 가능
입실론 선택 어려우며 밀도 차이가 큰 데이터에 약함
이상치 탐지가 중요할 때와 클러스터 모양이 복잡할 때 주로 사용
: 각 클러스터가 "가우시안 분포"라고 가정

K-Means는 "딱 잘라 나누는"방식이라면 GMM은 각 점이 각 클러스터에 속할 확률을 가짐 -> soft assignment(확률 기반 소속)
| 알고리즘 | 기준 | K 필요 | 이상치 처리 | 모양 |
|---|---|---|---|---|
| K-Means | 거리 | O | 약함 | 원형 |
| Hierarchical | 거리 | 선택적 | 약함 | 다양 |
| DBSCAN | 밀도 | X | 강함 | 자유 |
| GMM | 확률 | O | 보통 | 타원형 |
: 데이터를 가장 많이 퍼져있는 방향(분산 최대)로 회전시켜, 중요한 축부터 남기는 선형 차원축소

: 가까운 점은 2D에서도 가깝게 만들도록, 국소 이웃 구조를 보존하는 시각화 특화 비선형 차원축소

: t-SNE처럼 이웃 구조를 보존하면서도, 더 빠르고 전역 구조도 어느 정도 유지하는 비선형 차원축소

| 항목 | t-SNE | UMAP |
|---|---|---|
| 속도 | 느림 | 빠름 |
| 전역 구조 | 약함 | 조금 더 유지 |
| transform | 약함 | 지원 좋음 |
| 실무 활용 | 시각화 중심 | 임베딩/클러스터링 |
: 신경망으로 입력 -> 압축 -> 복원을 학습해서, 압축 공간(latent)을 차원축소 표현으로 쓰는 방식
입력 x -> Encoder -> 압축된 표현 z(latent) -> Decoder -> 복원
| 항목 | PCA | AutoEncoder |
|---|---|---|
| 구조 | 선형 | 비선형 가능 |
| 학습 | 고유값분해 | 신경망 학습 |
| 복잡성 | 낮음 | 높음 |
| 데이터 요구량 | 적어도 됨 | 많을수록 좋음 |
| 방법 | 선형 | 목적 | 빠름 | 시각화 | 전처리 |
|---|---|---|---|---|---|
| PCA | O | 압축 | 매우 빠름 | 보통 | 좋음 |
| t-SNE | X | 시각화 | 느림 | 매우 좋음 | 거의 안 씀 |
| UMAP | X | 시각화/임베딩 | 빠름 | 매우 좋음 | 가능 |
| AutoEncoder | X | 압축/임베딩 | 느림 | 보통 | 가능 |
이상치 탐지란?
: 데이터의 일반적인 패턴에서 벗어난 "비정상적인 관측치"를 찾는 문제
정상 데이터는 뭉쳐있고 랜덤하게 분기해도 쉽게 혼자 남지 않는 반면, 이상치는 외딴 곳에 있고 몇 번만 나눠도 혼자 떨어짐 -> 분리 경로가 짧음
: "정상 데이터만 감싸는 경계를 학습하고 그 밖은 이상치다."
: "내 주변보다 밀도가 낮으면 이상치" -> 로컬 밀도 비교
| 항목 | Isolation Forest | One-Class SVM | LOF |
|---|---|---|---|
| 철학 | 고립 | 경계 | 밀도 |
| 속도 | 빠름 | 느림 | 중간 |
| 대규모 | 가능 | 어려움 | 어려움 |
| 고차원 | 비교적 강함 | 민감 | 약함 |
| 이상치 종류 | 전역 | 경계 밖 | 로컬 |
| baseline 추천 | ⭐⭐⭐ | ⭐ | ⭐⭐ |
: 거래(transaction) 데이터에서 "A가 있으면 B도 같이 있다" 같은 패턴을 찾는 것
| 거래 ID | 상품 목록 |
|---|---|
| T1 | {우유, 빵, 버터} |
| T2 | {우유, 기저귀} |
| T3 | {빵, 버터} |
| T4 | {우유, 빵} |
이렇게 집합 형태가 기본 구조임



: 자주 등장하는 아이템셋의 부분집합도 자주 등장

: 후보를 만들지 않고 거래를 트리 구조로 압축해 빈발 패턴을 찾는 과정

Apriori는 후보를 생성하고 후보 하나하나 support 검사를 하는 반면, FP-Growth는 전체 거래를 FP-tree로 압축하고 공통 prefix를 공유하고 후보 폭발을 줄임
| Apriori (후보 만들고 검사) | FP-Growth (압축해서 탐색) |
|---|---|
| 1️⃣ 1개짜리부터 개수 세기 | 1️⃣ 1개짜리 개수 세기 (같음) |
| 우유4, 빵4, 버터2, 기저귀2 | 우유4, 빵4, 버터2, 기저귀2 |
| -------------------------------- | -------------------------------- |
| 2️⃣ 2개 조합 전부 만들기 | 2️⃣ 거래를 빈도순으로 정렬 |
| 우유-빵, 우유-버터, 우유-기저귀, 빵-버터, 빵-기저귀… | 예: 우유→빵→버터 |
| -------------------------------- | -------------------------------- |
| 3️⃣ 각 조합마다 등장 횟수 전부 다시 계산 | 3️⃣ 공통 prefix를 하나의 경로로 압축 |
| 우유-빵(3) ✔ | 우유(4) |
| 우유-기저귀(2) ✔ | └─ 빵(3) |
| 빵-버터(2) ✔ | ├─ 버터(1) |
| 나머지 탈락 | └─ 기저귀(1) |
| -------------------------------- | -------------------------------- |
| 4️⃣ 3개 조합 다시 생성하고 검사 | 4️⃣ 트리에서 조건부 패턴 바로 추출 |
| 우유-빵-기저귀(1) 탈락 | 우유-빵(3), 우유-기저귀(2), 빵-버터(2) 바로 계산 |
| -------------------------------- | -------------------------------- |
| 핵심: 후보를 계속 만들어서 검사 | 핵심: 트리로 압축해서 후보 폭발 방지 |
| 항목 | Apriori | FP-Growth |
|---|---|---|
| 방식 | 후보 생성 후 검사 | 트리 압축 |
| 속도 | 느릴 수 있음 | 빠름 |
| 후보 폭발 | 있음 | 거의 없음 |
| 구현 난이도 | 쉬움 | 어려움 |
| 실무 사용 | 적음 | 많음 |
연관규칙의 한계
인과관계가 아니고 단순 동시 발생 패턴일 뿐임!
lift 해석 주의가 필요하고 너무 낮은 support는 노이즈일 수 있음!