데이터 중에는 레이블이 없는 데이터가 매우 많다. 이러한 데이터를 처리하는 방법으로 차원 축소, 클러스터링, 이상치 탐지, 밀도 추정 등이 있다. 이러한 강법들을 비지도 학습이라고 한다.

클러스터링

비슷한 샘플을 구별하여 하나의 클러스터(군집)으로 만드는 것을 의미한다. 군집은 여러 상황에 사용되는데 고객 분류, 데이터 분석, 차원 축소, 이상치 탐지 등에 사용된다.

k-means

레이블이 없는 데이터셋을 생각해보자. k-means 알고리즘은 이를 반복을 통해 클러스터로 묶어내는 것이다.

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

X, y = make_blobs(n_samples=500, centers=3, cluster_std=0.8)

k = 3
kmeans = KMeans(n_clusters=k)
y_pred = kmeans.fit_predict(X)

label = kmeans.labels_

f, ax = plt.subplots(1, 2, figsize=(12, 5))
ax[0].set_title("Before")
ax[1].set_title("After")

ax[0].scatter(X[:, 0], X[:, 1], marker=".")
for k, c in zip(range(3), ["red", "blue", "green"]):
  means = (label == k)
  ax[1].scatter(X[means, 0], X[means, 1], color=c)
plt.show()

Untitled

<aside> 💡 상세한 반복의 과정이 궁금하다면 인터넷을 찾아보도록 하자!!

</aside>

이후 딥러닝 부분에서 image segmentation 분야가 있을 것이다. 이 분야도 비지도 학습의 일종이다.

Semi-Supervised Learning

지도학습과 비지도 학습의 혼합이다.

이는 이후에 다룰 기회가 있을테니 궁금하다면 다음의 논문을 참고하도록 하자.


Colab 정답 노트북

Google Colaboratory