์์ ๊ธ์์ ๋น์ง๋ํ์ต์ ๊ธฐ๋ฒ๋ค์ ๋ฐํ์ฌ ์์๋ณด์์ต๋๋ค.
์ด๋ฒ์๋ ๊ทธ ์ค ํ๋์ธ K-Means Clustering (K-ํ๊ท ํด๋ฌ์คํฐ๋ง)์ ๋ฐํ์ฌ ์์๋ณด๊ฒ ์ต๋๋ค.
K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๋ฐ์ดํฐ๋ฅผ K๊ฐ์ ๊ตฐ์ง์ผ๋ก ๋๋์ด ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ ์ฌํ ํน์ฑ์ ๊ฐ์ง ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๋ ๊ตฐ์งํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค.
K-Means Clustering์ ํน์ง
K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ํน์ง์ ์ฌ๋ฌ๊ฐ๊ฐ ์์ต๋๋ค. ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ๊ตฐ์ง ์ K: ์ฌ์ฉ์๊ฐ ๊ตฐ์ง ์ K๋ฅผ ์ฌ์ ์ ์ ์ํด์ผ ํ๋ฉฐ, ์ด ๊ฐ์ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ง๊ฒฐ๋๋ ์ค์ํ ํ์ดํผํ๋ผ๋ฏธํฐ์ ๋๋ค.
- ์ ์ ํ K๋ฅผ ์ ํํ๋ ๊ฒ์ด ๊ตฐ์งํ์ ์ฑ๊ณต ์ฌ๋ถ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
2. ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ: K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ(Euclidean Distance)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ์ ์ฌ์ฑ์ ์ธก์ ํฉ๋๋ค.
- ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฐ์ง ์ค์ฌ(centroid)์ผ๋ก ํ ๋น๋ฉ๋๋ค.
3. ํ๊ท ์ค์ฌ: ๊ฐ ๊ตฐ์ง์ ์ค์ฌ์ ํด๋น ๊ตฐ์ง์ ์ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ ํ๊ท ๊ฐ์ผ๋ก ์ ์๋ฉ๋๋ค.
- ์ด๋ ๊ตฐ์ง์ ๋ํ ๊ฐ์ ๋ํ๋ด๋ฉฐ, ์ดํ ๋จ๊ณ์์ ๊ตฐ์ง ํ ๋น์ ๊ธฐ์ค์ ์ด ๋ฉ๋๋ค.
4. ๋ฐ๋ณต์ ๊ณผ์ : K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๊ตฐ์ง ํ ๋น๊ณผ ์ค์ฌ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ณตํ์ฌ ์ต์ ์ ๊ตฐ์ง์ ์ฐพ์ต๋๋ค.
- ์ด ๊ณผ์ ์ ๊ตฐ์ง ์ค์ฌ์ด ๋ ์ด์ ๋ณํ์ง ์๊ฑฐ๋ ์ง์ ๋ ๋ฐ๋ณต ํ์์ ๋๋ฌํ ๋๊น์ง ์ํ๋ฉ๋๋ค.
5. ๊ณ์ฐ ํจ์จ์ฑ: K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๋น๊ต์ ๊ณ์ฐ ํจ์จ์ฑ์ด ๋์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์๋ ๋น ๋ฅด๊ฒ ๋์ํฉ๋๋ค.
- ์ด๋ ์ค์๊ฐ ์ฒ๋ฆฌ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ถ์์ ์ ๋ฆฌํฉ๋๋ค.
K-Means Clustering์ ๊ธฐ๋ณธ ์๋ฆฌ
๊ทธ๋ฌ๋ฉด K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๊ธฐ๋ณธ ์๋ฆฌ์๋ ์ด๋ ํ ๊ฒ๋ค์ด ์์๊น์?
1. ์ด๊ธฐํ: K๊ฐ์ ๊ตฐ์ง ์ค์ฌ์ ์ด๊ธฐํํฉ๋๋ค. ์ด๊ธฐ ์ค์ฌ์ ์์๋ก ์ ํ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ์ด ๋ฉ๋๋ค.
2. ํ ๋น ๋จ๊ณ: ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฐ์ง ์ค์ฌ์ ํ ๋นํฉ๋๋ค.
- ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๊ตฐ์ง ์ค์ฌ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ณ , ์ต์ ๊ฑฐ๋ฆฌ์ ์ค์ฌ์ ํด๋น ํฌ์ธํธ๋ฅผ ํ ๋นํฉ๋๋ค.
3. ์ ๋ฐ์ดํธ ๋จ๊ณ: ๊ฐ ๊ตฐ์ง์ ์ค์ฌ์ ํด๋น ๊ตฐ์ง์ ์ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ ํ๊ท ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ด ๊ณผ์ ์ ์๋ก์ด ์ค์ฌ์ ๊ณ์ฐํ๋ ๊ฒ์ด๋ฉฐ, ์ด์ ๋จ๊ณ์์์ ํ ๋น ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ํ๋ฉ๋๋ค.
- cj๋ ๊ตฐ์ง j์ ์๋ก์ด ์ค์ฌ, Cj๋ ๊ตฐ์ง j์ ์ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ ์งํฉ์ ๋๋ค.
4. ๋ฐ๋ณต: ํ ๋น ๋จ๊ณ์ ์ ๋ฐ์ดํธ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- ์ด ๊ณผ์ ์ ๊ตฐ์ง ์ค์ฌ์ด ๋ ์ด์ ๋ณํ์ง ์๊ฑฐ๋, ์ง์ ๋ ๋ฐ๋ณต ํ์์ ๋๋ฌํ ๋๊น์ง ์ํ๋ฉ๋๋ค.
- ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ ์ต์ ์ ๊ตฐ์ง์ผ๋ก ํ ๋น๋ฉ๋๋ค.
K-Means Clustering์ ์์
- ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ: ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ (xi)์ ๊ตฐ์ง ์ค์ฌ (cj) ๊ฐ์ ๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค.
- ๊ตฐ์ง ์ค์ฌ ์ ๋ฐ์ดํธ: ๊ตฐ์ง (Cj)์ ์๋ก์ด ์ค์ฌ (cj)๋ ํด๋น ๊ตฐ์ง์ ์ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ ํ๊ท ๊ฐ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
- ๋ชฉ์ ํจ์: K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๊ตฐ์ง ๋ด ๋ฐ์ดํฐ ํฌ์ธํธ์ ๊ตฐ์ง ์ค์ฌ ๊ฐ์ ์ด ๊ฑฐ๋ฆฌ ์ ๊ณฑํฉ์ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ์๋ํฉ๋๋ค. ๋ชฉ์ ํจ์ (J)๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
- J๋ ๋ชฉ์ ํจ์ ๊ฐ, K๋ ๊ตฐ์ง์ ์, Cj๋ ๊ตฐ์ง j์ ์ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ ์งํฉ์ ๋๋ค.
K-Mean Clustering์ ์ฅ,๋จ์
K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ์ฅ์
1. ๊ฐ๋จํ๊ณ ๋น ๋ฆ: K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๊ตฌํ์ด ๊ฐ๋จํ๋ฉฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์๋ ๋น ๋ฅด๊ฒ ์๋ํฉ๋๋ค. ์ด๋ก ์ธํด ๋ง์ ์ค์ ์์ฉ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
2. ํด์ ์ฉ์ด: ๊ฒฐ๊ณผ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฌ์ฐ๋ฉฐ, ๋ฐ์ดํฐ์ ๊ทธ๋ฃนํ ์ํ๋ฅผ ์ฝ๊ฒ ํด์ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ์๊ฐํ๊ฐ ์ค์ํ ๋ฐ์ดํฐ ๋ถ์์์ ์ ์ฉํฉ๋๋ค.
3. ํ์ฅ์ฑ: ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ํด ํจ์จ์ ์ผ๋ก ์๋ํ๋ฉฐ, ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๋จ์
1. K์ ๊ฒฐ์ ์ด๋ ค์: ์ ์ ํ ๊ตฐ์ง ์ K๋ฅผ ์ฌ์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๋ค. ์๋ชป๋ K๋ฅผ ์ ํํ ๊ฒฝ์ฐ, ๊ตฐ์งํ ์ฑ๋ฅ์ด ํฌ๊ฒ ์ ํ๋ ์ ์์ต๋๋ค.
2. ์ด๊ธฐ ์ค์ฌ์ ๋ฏผ๊ฐ: ์ด๊ธฐ ๊ตฐ์ง ์ค์ฌ์ ์ ํ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค์ํ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ์ ์๋๊ณ ์์ต๋๋ค.
3. ๊ตฌํ ๊ตฐ์ง๋ง ์ฐพ์: K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๊ตฐ์ง์ ๋ชจ์์ด ๊ตฌํ(spherical)์ ๊ฐ๊น๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ณต์กํ ํํ์ ๊ตฐ์ง์ ์ฐพ๋ ๋ฐ๋ ํ๊ณ๊ฐ ์์ต๋๋ค.
4. ๋ ธ์ด์ฆ์ ์ด์์น์ ๋ฏผ๊ฐ: K-ํ๊ท ํด๋ฌ์คํฐ๋ง์ ๋ ธ์ด์ฆ์ ์ด์์น์ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๊ตฐ์งํ ๊ฒฐ๊ณผ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
K-Mean Clustering์ ๊ฐ์ ๋ฐฉ๋ฒ
๊ทธ๋ฌ๋ฉด, K-ํ๊ท Clustering์ ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น์? ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. K-Means++ ์ด๊ธฐํ: ์ด๊ธฐ ๊ตฐ์ง ์ค์ฌ์ ๋ ์ ์คํ๊ฒ ์ ํํ์ฌ, ์๋ ด ์๋๋ฅผ ๋์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ์ฒซ ๋ฒ์งธ ์ค์ฌ์ ๋ฌด์์๋ก ์ ํํ ํ, ๋๋จธ์ง ์ค์ฌ์ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ฌ ์ ํํฉ๋๋ค.
2. ์๋ณด์ฐ ๋ฐฉ๋ฒ (Elbow Method): ์ต์ ์ ๊ตฐ์ง ์ K๋ฅผ ์ ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋๋ค.
- ๋ชฉ์ ํจ์ J์ ๊ฐ์์จ์ด ๊ธ๊ฒฉํ ์ค์ด๋๋ ์ง์ (์๋ณด์ฐ ํฌ์ธํธ)์ ์ฐพ์ ์ต์ ์ K๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
3. ์ค๋ฃจ์ฃ ๋ถ์ (Silhouette Analysis): ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์ผ๋ง๋ ์ ๊ตฐ์งํ๋์๋์ง๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ค๋ฃจ์ฃ ๊ฐ์ -1์์ 1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ๊ฐ์ด ํด์๋ก ๋ ์ ๊ตฐ์งํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ตฐ์ง์ ํ์ง์ ํ๊ฐํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
K-Mean Clustering Example Code
!kaggle datasets download -d mlg-ulb/creditcardfraud
!unzip creditcardfraud.zip
# K-ํ๊ท ํด๋ฌ์คํฐ๋ง ์์
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# ๋ฐ์ดํฐ์
๋ก๋
data = pd.read_csv('/content/creditcard.csv')
data.head()
# ํ์ํ ํน์ฑ ์ ํ
X = data.drop(['Time', 'Class'], axis=1)
# ๋ฐ์ดํฐ ํ์คํ
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# K-ํ๊ท ํด๋ฌ์คํฐ๋ง ๋ชจ๋ธ ์์ฑ ๋ฐ ํ์ต
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X_scaled)
# ํด๋ฌ์คํฐ๋ง ๊ฒฐ๊ณผ ์๊ฐํ (PCA๋ฅผ ์ฌ์ฉํ์ฌ 2์ฐจ์์ผ๋ก ์ถ์)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
plt.figure(figsize=(10, 7))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', marker='X')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('K-Means Clustering of Credit Card Fraud Dataset')
plt.show()
'๐ Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] DBSCAN (Density-Based Spatial Clustering of Applications with Noise) (0) | 2024.08.18 |
---|---|
[ML] Hierarchical Clustering (๊ณ์ธต์ ๊ตฐ์ง ๋ถ์) (0) | 2024.08.17 |
[ML] Unsupervised Learning (๋น์ง๋ ํ์ต) (0) | 2024.08.16 |
[ML] ์ ๊ฒฝ๋ง (Neural Network) - ๋ค์ธต ํผ์ ํธ๋ก (0) | 2024.08.16 |
[ML] Random Forest (๋๋ค ํฌ๋ ์คํธ) (0) | 2024.08.12 |