Hierarchical Clustering (๊ณ์ธต์ ๊ตฐ์ง ๋ถ์)๋ Unsupervised Learning (๋น์ง๋ ํ์ต)
๊ณ์ธต์ ๊ตฐ์ง ๋ถ์์ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค ๊ฐ์ ์ ์ฌ๋๋ฅผ ๋ฐํ์ผ๋ก ๊ณ์ธต์ ์ธ ๊ตฐ์ง ๊ตฌ์กฐ๋ฅผ ํ์ฑํ๋ ๊ตฐ์งํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํํํ๋ฉฐ, ๋จ๊ณ๋ณ๋ก ๊ตฐ์งํ๋ฅผ ์งํํจ์ผ๋ก์จ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
Hierarchical Clustering (๊ณ์ธต์ ๊ตฐ์ง ๋ถ์)์ ์ ํ
๊ทธ๋ฌ๋ฉด, Hierarchical Clustering (๊ณ์ธต์ ๊ตฐ์ง ๋ถ์)์ ์ ํ์ ์ด๋ ํ ๊ฒ์ด ์์๊น์? ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ๋ณํฉ์ ๊ตฐ์งํ (Agglomerative Clustering)
- ๋ณํฉ์ ๊ตฐ์งํ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ตฐ์ง์ผ๋ก ์์ํ์ฌ, ๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฐ์ง๋ค์ ๋ฐ๋ณต์ ์ผ๋ก ๋ณํฉํด ๋๊ฐ๋ ๋ฐฉ์์ ๋๋ค. ์ต์ข ์ ์ผ๋ก ํ๋์ ๊ตฐ์ง์ด ํ์ฑ๋ ๋๊น์ง ๋ณํฉ ๊ณผ์ ์ด ๊ณ์๋ฉ๋๋ค.
- ์ด ๊ณผ์ ์ ํํฅ์ ์ ๊ทผ ๋ฐฉ์์ผ๋ก, ๋ง์ ์์ ๊ตฐ์ง๋ค์ด ์ ์ฐจ์ ์ผ๋ก ํฐ ๊ตฐ์ง์ผ๋ก ํฉ์ณ์ง๋ฉฐ, ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ์ฑํฉ๋๋ค.
- ์ต์ข ์ ์ผ๋ก ํ๋์ ๊ตฐ์ง์ด ํ์ฑ๋ ๋ ๊น์ง์ ๋ณํฉ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
2. ๋ถํ ์ ๊ตฐ์งํ (Divisive Clustering)
- ๋ถํ ์ ๊ตฐ์งํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ตฐ์ง์ผ๋ก ์์ํ๊ณ , ๊ทธ ๊ตฐ์ง์ ์ ์ฐจ์ ์ผ๋ก ๋ถํ ํด ๋๊ฐ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๊ณผ์ ์ ์ต์ข ์ ์ผ๋ก ๊ฐ ๋ฐ์ดํฐ๊ฐ ํ๋์ ๊ตฐ์ง์ ํ์ฑํ ๋๊น์ง ์งํ๋ฉ๋๋ค.
- ์ด ๋ฐฉ์์ ์ํฅ์ ์ ๊ทผ ๋ฐฉ์์ผ๋ก, ํฐ ๊ตฐ์ง์ด ์ ์ฐจ์ ์ผ๋ก ๋ ์์ ๊ตฐ์ง์ผ๋ก ๋๋์ด ๊ฐ๋ฉด์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ํ์ฑํฉ๋๋ค.
- ์ต์ข ์ ์ผ๋ก ๊ฐ ๋ฐ์ดํฐ๊ฐ ํ๋์ ๊ตฐ์ง์ ํ์ฑํ ๋ ๊น์ง์ ๋ถํ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
๊ฑฐ๋ฆฌ ์ธก์ (Distance Measurement)
๊ณ์ธต์ ๊ตฐ์ง ๋ถ์์์ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค ๊ฐ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๊ธฐ ์ํด ๊ฑฐ๋ฆฌ ์ธก์ ์ ์ฌ์ฉํฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋งจํดํผ ๊ฑฐ๋ฆฌ, ์ฝ์ฌ์ธ ์ ์ฌ๋ ๋ฑ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ฑฐ๋ฆฌ๋ ๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ์ฐจ์ด๋ฅผ ์์น์ ์ผ๋ก ํํํ๋ฉฐ, ๊ตฐ์งํ ๊ณผ์ ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๊ตฐ์ง ๊ฐ์ ๊ฑฐ๋ฆฌ ์ธก์ (Linkage Criteria)
๊ตฐ์ง ๊ฐ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๊ธฐ ์ํ ๋ค์ํ ๊ธฐ์ค์ด ์กด์ฌํฉ๋๋ค. ์ด๋ฌํ ์ฐ๊ฒฐ ๊ธฐ์ค์ ๊ตฐ์งํ์ ๊ฒฐ๊ณผ์ ์ค์ํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ๋จ์ผ ์ฐ๊ฒฐ (Single Linkage): ๋ ๊ตฐ์ง ๊ฐ์ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฐ์งํ๋ฅผ ์งํํฉ๋๋ค. ์ด๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๊ฑฐ๋ฆฌ์ ๊ธฐ๋ฐํฉ๋๋ค.
- ์์ ์ฐ๊ฒฐ (Complete Linkage): ๋ ๊ตฐ์ง ๊ฐ์ ์ต๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฐ์งํ๋ฅผ ์งํํฉ๋๋ค. ์ด๋ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๊ฑฐ๋ฆฌ์ ๊ธฐ๋ฐํฉ๋๋ค.
- ํ๊ท ์ฐ๊ฒฐ (Average Linkage): ๋ ๊ตฐ์ง ๊ฐ์ ํ๊ท ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฐ์งํ๋ฅผ ์งํํฉ๋๋ค. ์ด๋ ๋ชจ๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ํ๊ท ๊ฑฐ๋ฆฌ์ ๊ธฐ๋ฐํฉ๋๋ค.
- ์ค์ฌ ์ฐ๊ฒฐ (Centroid Linkage): ๊ฐ ๊ตฐ์ง์ ์ค์ฌ(centroid) ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฐ์งํ๋ฅผ ์งํํฉ๋๋ค. ์ค์ฌ์ ๊ตฐ์ง ๋ด ๋ชจ๋ ๋ฐ์ดํฐ ํฌ์ธํธ์ ํ๊ท ์์น์ ๋๋ค.
- ์๋ ์ฐ๊ฒฐ (Ward’s Linkage): ๊ตฐ์ง ๋ด ๋ถ์ฐ์ ์ฆ๊ฐ๋์ ์ต์ํํ๋ ๊ธฐ์ค์ผ๋ก ๊ตฐ์งํ๋ฅผ ์งํํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ตฐ์งํ ๊ณผ์ ์์ ๋ถ์ฐ์ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
๋ด๋๋ก๊ทธ๋จ (Dendrogram)
๋ด๋๋ก๊ทธ๋จ์ ๊ณ์ธต์ ๊ตฐ์งํ ๊ณผ์ ์ ์๊ฐ์ ์ผ๋ก ํํํ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋๋ค.
- ์ด ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๊ฐ ๋ ธ๋๋ ๊ตฐ์ง์ ๋ํ๋ด๋ฉฐ, ๋ ธ๋ ๊ฐ์ ๋์ด๋ ๊ตฐ์ง ๊ฐ์ ๊ฑฐ๋ฆฌ ๋๋ ์ ์ฌ๋๋ฅผ ๋ํ๋ ๋๋ค.
- ๋ด๋๋ก๊ทธ๋จ์ ํตํด ๊ตฐ์งํ์ ๊ณผ์ ์ ์๊ฐ์ ์ผ๋ก ๋ถ์ํ๊ณ , ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
Hierarchical Clustering (๊ณ์ธต์ ๊ตฐ์ง ๋ถ์)์ ๊ธฐ๋ณธ ์๋ฆฌ
๊ทธ๋ฌ๋ฉด Hierarchical Clustering (๊ณ์ธต์ ๊ตฐ์ง ๋ถ์)์ ๊ธฐ๋ณธ ์๋ฆฌ๋ ์ด๋ ํ ์ ๋ค์ด ์์๊น์?
1. ์ด๊ธฐํ (Initialization)
๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ตฐ์ง์ผ๋ก ์์ํฉ๋๋ค. ์ด๊ธฐ์๋ n ๊ฐ์ ๊ตฐ์ง์ด ์กด์ฌํ๋ฉฐ, ์ฌ๊ธฐ์ n ์ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
2. ๊ฑฐ๋ฆฌ ๊ณ์ฐ (Distance Calculation)
๋ชจ๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ด ๊ฑฐ๋ฆฌ๋ ๊ตฐ์งํ ๊ณผ์ ์์ ๋ ๊ตฐ์ง ๊ฐ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
3. ๊ตฐ์ง ๋ณํฉ (Cluster Merging)
๊ฐ์ฅ ๊ฐ๊น์ด ๋ ๊ตฐ์ง์ ๋ณํฉํฉ๋๋ค. ๋ณํฉ ํ ์๋ก์ด ๊ตฐ์ง ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ๊ณ์ฐํ์ฌ ๋ค์ ๋ณํฉ์ ์ค๋นํฉ๋๋ค.
4. ๋ฐ๋ณต (Iteration)
๊ตฐ์ง์ ์๊ฐ ํ๋๊ฐ ๋ ๋๊น์ง ๊ตฐ์ง ๋ณํฉ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๋ด๋๋ก๊ทธ๋จ์ ์์ฑํ๊ณ , ์ด๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ์ฌ ๋ถ์ํฉ๋๋ค.
๊ณ์ธต์ ๊ตฐ์ง ๋ถ์ (Hierarchical Clustering) ์ฅ, ๋จ์
๊ณ์ธต์ ๊ตฐ์ง ๋ถ์์ ์ฅ์
1. ๊ณ์ธต์ ๊ตฌ์กฐ ์๊ฐํ: ๋ด๋๋ก๊ทธ๋จ์ ํตํด ๋ฐ์ดํฐ์ ๊ตฐ์งํ ๊ณผ์ ์ ์๊ฐ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค.
2. ๊ตฐ์ง ์ ๊ฒฐ์ ๋ถํ์: ์ฌ์ ์ ๊ตฐ์ง ์๋ฅผ ๊ฒฐ์ ํ ํ์๊ฐ ์์ผ๋ฉฐ, ๋ด๋๋ก๊ทธ๋จ์ ํตํด ์ ์ ํ ๊ตฐ์ง ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์์ง ๋ชปํ ๋ ์ ์ฉํฉ๋๋ค.
3. ์ ์ฐ์ฑ: ๋ค์ํ ์ฐ๊ฒฐ ๊ธฐ์ค์ ์ฌ์ฉํ์ฌ ๊ตฐ์งํ๋ฅผ ์ํํ ์ ์์ด, ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ณ์ธต์ ๊ตฐ์ง ๋ถ์์ ๋จ์
1. ๊ณ์ฐ ๋น์ฉ: ๋ชจ๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ณ ์ ์ฅํด์ผ ํ๋ฏ๋ก, ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์๋ ๊ณ์ฐ ๋น์ฉ์ด ๋์์ง ์ ์์ต๋๋ค. ์ด๋ ๊ณ์ฐ ์์์ด ์ ํ์ ์ธ ํ๊ฒฝ์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
2. ๋ณํฉ ํ ์์ ๋ถ๊ฐ: ๋ณํฉ๋ ๊ตฐ์ง์ ๋ค์ ๋ถํ ํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด๊ธฐ ๋ณํฉ ๋จ๊ณ์์ ๋ฐ์ํ ์ค๋ฅ๊ฐ ์ต์ข ๊ฒฐ๊ณผ์ ์ง์์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์๋ชป๋ ๊ตฐ์งํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
3. ๋ ธ์ด์ฆ ๋ฏผ๊ฐ์ฑ: ๊ณ์ธต์ ๊ตฐ์ง ๋ถ์์ ์ด์์น๋ ๋ ธ์ด์ฆ ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ์ ๊ตฐ์งํ ๊ฒฐ๊ณผ๋ฅผ ์๊ณก์ํฌ ์ ์์ผ๋ฉฐ, ์ถ๊ฐ์ ์ธ ์ ์ฒ๋ฆฌ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค.
๊ณ์ธต์ ๊ตฐ์ง ๋ถ์ (Hierarchical Clustering) Example Code
!kaggle datasets download -d mlg-ulb/creditcardfraud
!unzip creditcardfraud.zip
# ๊ณ์ธต์ ๊ตฐ์ง ๋ถ์ ์์
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# ๋ฐ์ดํฐ์
๋ก๋
X = np.array([[5,3],
[10,15],
[15,12],
[24,10],
[30,30],
[85,70],
[71,80],
[60,78],
[70,55],
[80,91],])
labels = range(1, 11)
linked = linkage(X, 'single')
plt.figure(figsize=(10, 7))
dendrogram(linked,
orientation='top',
labels=labels,
distance_sort='descending',
show_leaf_counts=True)
plt.show()
'๐ Data Engineering > ๐ Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] Principal Component Analysis (PCA - ์ฃผ์ฑ๋ถ ๋ถ์) (0) | 2024.08.18 |
---|---|
[ML] DBSCAN (Density-Based Spatial Clustering of Applications with Noise) (0) | 2024.08.18 |
[ML] K-Means Clustering (K-ํ๊ท ํด๋ฌ์คํฐ๋ง) (0) | 2024.08.17 |
[ML] Unsupervised Learning (๋น์ง๋ ํ์ต) (0) | 2024.08.16 |
[ML] ์ ๊ฒฝ๋ง (Neural Network) - ๋ค์ธต ํผ์ ํธ๋ก (0) | 2024.08.16 |