머신러닝

머신러닝 기초 - 클러스터링: K-평균 알고리즘

move84 2025. 3. 3. 08:20
반응형

🧠 머신러닝(Machine Learning)은 데이터를 기반으로 학습하고 예측하는 인공지능의 한 분야이다. 클러스터링(Clustering)은 머신러닝의 비지도 학습(Unsupervised Learning) 기법 중 하나로, 데이터들을 유사한 특징을 가진 그룹으로 묶는 기술이다. 이 글에서는 클러스터링의 기본 개념과 대표적인 알고리즘인 K-평균(K-Means) 알고리즘에 대해 자세히 알아보겠다.


✨ 클러스터링은 데이터의 숨겨진 패턴을 찾아내고, 데이터를 의미 있는 그룹으로 분류하는 데 사용된다. 이는 고객 세분화, 이상치 탐지, 이미지 분할 등 다양한 분야에서 활용된다.

클러스터링의 종류 (Types of Clustering)

  • 분할 클러스터링 (Partitioning Clustering): 데이터를 미리 정해진 개수의 클러스터로 나누는 방법. K-평균 알고리즘이 대표적이다.
  • 계층적 클러스터링 (Hierarchical Clustering): 데이터를 계층적인 트리 구조로 묶어 클러스터를 형성한다. 덴드로그램(Dendrogram)을 통해 시각화할 수 있다.
  • 밀도 기반 클러스터링 (Density-based Clustering): 데이터 포인트의 밀도를 기반으로 클러스터를 형성한다. DBSCAN 알고리즘이 널리 사용된다.

K-평균 알고리즘 (K-Means Algorithm)

K-평균 알고리즘은 분할 클러스터링의 대표적인 방법으로, 다음과 같은 단계를 거쳐 작동한다.

  1. 초기화 (Initialization): K개의 중심점(centroid, 군집 중심)을 무작위로 선택한다. 여기서 K는 사용자가 미리 지정하는 클러스터의 개수이다.
  2. 할당 (Assignment): 각 데이터 포인트를 가장 가까운 중심점에 할당한다. 즉, 모든 데이터 포인트를 각 중심점까지의 거리를 계산하여 가장 가까운 클러스터에 속하게 한다.
  3. 업데이트 (Update): 각 클러스터에 속한 데이터 포인트들의 평균(mean)을 계산하여 새로운 중심점으로 설정한다.
  4. 반복 (Iteration): 2단계와 3단계를 중심점의 위치가 더 이상 크게 변하지 않거나, 미리 정해진 반복 횟수에 도달할 때까지 반복한다.

K-평균 알고리즘의 예시 (Example of K-Means Algorithm)

다음은 2차원 평면에 흩어져 있는 6개의 데이터 포인트를 K-평균 알고리즘을 사용하여 2개의 클러스터로 나누는 예시이다.

  1. 초기화: K=2로 설정하고, 2개의 중심점을 무작위로 선택한다. 예를 들어, C1=(1, 2), C2=(5, 6)으로 설정한다.
  2. 할당: 각 데이터 포인트와 두 중심점 간의 거리를 계산한다. 거리는 유클리드 거리(Euclidean distance)를 사용한다.
    • D1=(1,1) : C1과의 거리 = 1, C2와의 거리 = 5.09, -> C1에 할당
    • D2=(1,3) : C1과의 거리 = 1, C2와의 거리 = 4.47, -> C1에 할당
    • D3=(2,2) : C1과의 거리 = 1.41, C2와의 거리 = 4.24, -> C1에 할당
    • D4=(5,5) : C1과의 거리 = 5.66, C2와의 거리 = 1, -> C2에 할당
    • D5=(6,4) : C1과의 거리 = 5.09, C2와의 거리 = 1.41, -> C2에 할당
    • D6=(6,6) : C1과의 거리 = 6.32, C2와의 거리 = 0, -> C2에 할당
  3. 업데이트: 각 클러스터에 속한 데이터 포인트들의 평균을 계산하여 새로운 중심점을 설정한다.
    • C1 = (1, 1), (1, 3), (2, 2)의 평균 = (1.33, 2)
    • C2 = (5, 5), (6, 4), (6, 6)의 평균 = (5.67, 5)
  4. 반복: 2단계와 3단계를 반복한다. 중심점의 위치가 더 이상 크게 변하지 않을 때까지 반복하거나, 미리 정해진 반복 횟수에 도달하면 알고리즘을 종료한다.

Python 코드 예시 (Python Code Example)

from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성 (Data generation)
X = np.array([[1, 1], [1, 3], [2, 2], [5, 5], [6, 4], [6, 6]])

# K-평균 모델 생성 및 학습 (K-means model creation and training)
kmeans = KMeans(n_clusters=2, random_state=0, n_init=10) # n_init is a new parameter in sklearn version 1.2
kmeans.fit(X)

# 클러스터 중심점 (Cluster centroids)
print("클러스터 중심점:", kmeans.cluster_centers_)

# 각 데이터 포인트의 클러스터 할당 (Cluster assignment for each data point)
print("각 데이터 포인트의 클러스터 할당:", kmeans.labels_)

# 시각화 (Visualization)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', color='red')
plt.title('K-Means Clustering')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

K-평균 알고리즘의 장단점 (Pros and Cons of K-Means Algorithm)

  • 장점 (Pros):
    • 알고리즘이 간단하고 구현이 용이하다. (Simple and easy to implement)
    • 대규모 데이터셋에도 비교적 빠르게 작동한다. (Works relatively fast on large datasets)
    • 클러스터의 형태에 대한 가정을 하지 않으므로 다양한 데이터셋에 적용할 수 있다. (Doesn't make assumptions about the shape of clusters, so it can be applied to various datasets)
  • 단점 (Cons):
    • K 값을 미리 지정해야 한다. (Requires specifying the value of K in advance)
    • 초기 중심점의 선택에 따라 결과가 달라질 수 있다. (The result may vary depending on the initial selection of centroids)
    • 클러스터가 둥근 형태가 아닌 경우 성능이 저하될 수 있다. (Performance may degrade if the clusters are not round)
    • 이상치(outlier)에 민감하다. (Sensitive to outliers)

💡 핵심 용어 정리 (Key Terms Summary):

  • 머신러닝 (Machine Learning): 데이터를 기반으로 학습하고 예측하는 인공지능의 한 분야 (A field of artificial intelligence that learns and predicts based on data).
  • 클러스터링 (Clustering): 데이터를 유사한 특징을 가진 그룹으로 묶는 비지도 학습 기법 (An unsupervised learning technique that groups data into clusters with similar characteristics).
  • 비지도 학습 (Unsupervised Learning): 정답(label) 없이 데이터의 패턴을 학습하는 머신러닝 방법 (A machine learning method that learns patterns in data without labels).
  • K-평균 알고리즘 (K-Means Algorithm): 분할 클러스터링의 대표적인 알고리즘 (A representative algorithm of partitioning clustering).
  • 중심점 (Centroid): 각 클러스터의 중심을 나타내는 점 (A point representing the center of each cluster).
  • 유클리드 거리 (Euclidean Distance): 두 점 사이의 직선 거리를 계산하는 방법 (A method for calculating the straight-line distance between two points).
  • 이상치 (Outlier): 다른 데이터와 동떨어진 값을 갖는 데이터 포인트 (A data point that has a value far from other data).

🔑 관련 키워드 (Related Keywords):

  • 군집 분석
  • 비지도 학습
  • 데이터 마이닝
  • 머신러닝 기초
반응형