머신러닝
머신러닝 기초 - 클러스터링: 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-평균 알고리즘은 분할 클러스터링의 대표적인 방법으로, 다음과 같은 단계를 거쳐 작동한다.
- 초기화 (Initialization): K개의 중심점(centroid, 군집 중심)을 무작위로 선택한다. 여기서 K는 사용자가 미리 지정하는 클러스터의 개수이다.
- 할당 (Assignment): 각 데이터 포인트를 가장 가까운 중심점에 할당한다. 즉, 모든 데이터 포인트를 각 중심점까지의 거리를 계산하여 가장 가까운 클러스터에 속하게 한다.
- 업데이트 (Update): 각 클러스터에 속한 데이터 포인트들의 평균(mean)을 계산하여 새로운 중심점으로 설정한다.
- 반복 (Iteration): 2단계와 3단계를 중심점의 위치가 더 이상 크게 변하지 않거나, 미리 정해진 반복 횟수에 도달할 때까지 반복한다.
K-평균 알고리즘의 예시 (Example of K-Means Algorithm)
다음은 2차원 평면에 흩어져 있는 6개의 데이터 포인트를 K-평균 알고리즘을 사용하여 2개의 클러스터로 나누는 예시이다.
- 초기화: K=2로 설정하고, 2개의 중심점을 무작위로 선택한다. 예를 들어, C1=(1, 2), C2=(5, 6)으로 설정한다.
- 할당: 각 데이터 포인트와 두 중심점 간의 거리를 계산한다. 거리는 유클리드 거리(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에 할당
- 업데이트: 각 클러스터에 속한 데이터 포인트들의 평균을 계산하여 새로운 중심점을 설정한다.
- C1 = (1, 1), (1, 3), (2, 2)의 평균 = (1.33, 2)
- C2 = (5, 5), (6, 4), (6, 6)의 평균 = (5.67, 5)
- 반복: 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):
- 군집 분석
- 비지도 학습
- 데이터 마이닝
- 머신러닝 기초
반응형