AI/이론

136. [Python] [Machine Learning] : 비지도 학습(Unsupervised Learning)의 알고리즘 종류

천재단미 2025. 1. 31. 20:10
728x90
반응형

반응형

 

 

 

🎯 1. 비지도 학습(Unsupervised Learning)이란?

  • *비지도 학습(Unsupervised Learning)**은 라벨(정답) 없이 데이터의 패턴을 학습하는 머신러닝 방식입니다.
  • 목적: 데이터의 숨겨진 패턴과 구조를 발견하는 것
  • 특징: 사전에 정해진 정답(라벨)이 없으며, 데이터를 스스로 그룹화하거나 차원을 줄이는 방식으로 학습
  • 응용 분야: 고객 세분화, 이상 탐지, 이미지 압축, 데이터 시각화 등

📌 비지도 학습은 주어진 데이터에서 패턴을 찾아 새로운 인사이트를 제공하는 강력한 도구입니다!

 


 

🎯 2. 비지도 학습의 주요 알고리즘 종류

🔹 1) 군집화(Clustering) 알고리즘

군집화 알고리즘은 유사한 특성을 가진 데이터를 자동으로 그룹화하는 기법입니다.

✅ (1) K-Means Clustering

  • 데이터를 K개의 클러스터(그룹)로 자동 분류하는 알고리즘
  • 각 데이터 포인트를 가장 가까운 중심점(centroid)에 할당하며, 중심점을 계속 업데이트하는 방식

📌 실습 예제 (K-Means 적용)

from sklearn.cluster import KMeans
import numpy as np

# 임의의 데이터 생성
data = np.array([[1, 2], [2, 3], [3, 4], [10, 10], [11, 12], [12, 14]])

# K-Means 알고리즘 적용 (2개의 클러스터로 분류)
kmeans = KMeans(n_clusters=2)
kmeans.fit(data)

print("클러스터 할당 결과:", kmeans.labels_)


 

✅ (2) 계층적 군집 분석(Hierarchical Clustering)

  • 데이터를 트리 형태(덴드로그램, Dendrogram)로 계층적으로 그룹화
  • K-Means처럼 클러스터 개수를 미리 지정하지 않아도 됨
  • *병합(Agglomerative)**과 분할(Divisive) 방식이 있음

📌 실습 예제 (계층적 군집화 시각화)

from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt

# 계층적 군집화 수행
linked = linkage(data, method='ward')

# 덴드로그램 시각화
plt.figure(figsize=(8,5))
dendrogram(linked)
plt.title("Dendrogram of Hierarchical Clustering")
plt.show()

 


 

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

  • 밀집된 데이터 그룹을 찾는 방식 (K-Means와 다르게 클러스터 개수를 미리 설정할 필요 없음)
  • 이상치(Outlier)를 효과적으로 처리할 수 있음

📌 실습 예제 (DBSCAN 적용)

from sklearn.cluster import DBSCAN

# DBSCAN 적용
dbscan = DBSCAN(eps=3, min_samples=2)
dbscan.fit(data)

print("DBSCAN 클러스터 할당 결과:", dbscan.labels_)

 

 


 

🔹 2) 차원 축소(Dimensionality Reduction) 알고리즘

차원 축소 알고리즘은 데이터의 중요한 특성을 유지하면서 차원을 줄이는 방식입니다.

고차원 데이터를 2D 또는 3D로 축소하여 시각화할 때도 많이 사용됩니다.

✅ (1) 주성분 분석(PCA, Principal Component Analysis)

  • 데이터의 가장 중요한 축(Principal Component)을 찾아 차원을 줄이는 기법
  • 데이터의 분산을 최대한 유지하면서 차원을 축소

📌 실습 예제 (PCA 적용)

from sklearn.decomposition import PCA

# PCA를 사용하여 차원 축소 (2차원으로 변환)
pca = PCA(n_components=2)
data_pca = pca.fit_transform(data)

print("PCA 변환 결과:", data_pca)

 

 

 

 


 

✅ (2) 커널 PCA(Kernel PCA)

  • PCA를 비선형 데이터에 적용할 수 있도록 확장한 기법
  • 커널 트릭을 활용하여 비선형 데이터를 저차원에서 표현 가능

📌 실습 예제

from sklearn.decomposition import KernelPCA

# 커널 PCA 적용
kpca = KernelPCA(n_components=2, kernel='rbf')
data_kpca = kpca.fit_transform(data)

print("Kernel PCA 변환 결과:", data_kpca)

 

 


 

✅ (3) t-SNE (t-distributed Stochastic Neighbor Embedding)

  • 고차원 데이터를 2D, 3D로 시각화할 때 많이 사용
  • 특히 이미지 데이터, 텍스트 데이터 등에서 많이 활용됨

📌 실습 예제 (t-SNE 적용)

from sklearn.manifold import TSNE

# t-SNE 변환
tsne = TSNE(n_components=2, perplexity=5, random_state=42)
data_tsne = tsne.fit_transform(data)

print("t-SNE 변환 결과:", data_tsne)

 

 


 

🔹 3) 연관 규칙 학습(Association Rule Learning) 알고리즘

연관 규칙 학습은 데이터에서 항목 간의 관계를 찾는 기법으로, 주로 **장바구니 분석(Market Basket Analysis)**에 사용됩니다.

✅ (1) 어프라이어리(Apriori)

  • 데이터에서 자주 발생하는 항목 집합을 찾아 연관 규칙을 도출
  • 예: "빵을 구매한 사람은 버터도 살 확률이 높다"

📌 실습 예제 (Apriori 적용)

from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd

# 예제 데이터 생성
data = pd.DataFrame({'빵': [1, 0, 1, 1, 0], '버터': [1, 1, 1, 0, 1], '우유': [0, 1, 1, 1, 1]})

# Apriori 적용
frequent_itemsets = apriori(data, min_support=0.5, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1.0)

print("연관 규칙:", rules)

 


 

✅ (2) 이클렛(Eclat)

  • Apriori와 비슷하지만, 트랜잭션을 기반으로 연관 규칙을 찾는 방식
  • 데이터셋이 크지 않을 때 빠르게 적용 가능

📌 실습 예제

# Eclat은 Apriori와 유사한 방식으로 동작
print("Eclat은 Apriori와 비슷한 원리로 동작합니다.")

 

 

 


 

🎯 3. 비지도 학습 알고리즘 비교

알고리즘 종류 설명 활용 분야

K-Means 데이터를 K개의 그룹으로 나눔 고객 세분화, 이미지 분류
HCA 계층적으로 데이터를 군집화 생물학적 분류, 유전자 분석
DBSCAN 밀도 기반 군집화 이상 탐지, 데이터 분류
PCA 데이터의 중요한 특성을 유지하며 차원 축소 데이터 시각화, 노이즈 제거
t-SNE 데이터 시각화에 특화 고차원 데이터 시각화
Apriori 항목 간 연관 관계 분석 장바구니 분석, 추천 시스템

728x90
반응형
home top bottom
}