비지도 학습을 위한 K-평균 군집화를 탐구하세요. 이 알고리즘이 데이터를 어떻게 분할하고, AI 애플리케이션을 어떻게 향상시키며, Ultralytics 같은 모델에 어떻게 정보를 제공하는지 알아보세요.
K-평균 군집화는 비지도 학습 분야에서 널리 사용되는 기본 알고리즘으로, 라벨이 없는 데이터 내 숨겨진 구조를 발견하도록 설계되었습니다. 주요 목표는 데이터셋을 서로 다른 하위 그룹(군집)으로 분할하여 동일 그룹 내 데이터 포인트는 최대한 유사하게, 다른 그룹 간 데이터는 뚜렷이 구분되도록 하는 것입니다. 데이터 마이닝과 탐색적 분석의 초석으로서 K-평균은 데이터 과학자들이 사전 정의된 레이블이나 인간의 감독 없이도 복잡한 정보를 관리 가능한 범주로 자동으로 구성할 수 있도록 지원합니다.
K-평균법은 반복적으로 실행되며, 훈련 데이터의 최적 군집화를 결정하기 위해 거리 측정법을 활용합니다. 이 알고리즘은 항목들을 K개의 군집으로 구성하는 방식으로 작동하며, 각 항목은 가장 가까운 평균(중심점)을 가진 군집에 속하게 됩니다. 이 과정은 각 군집 내의 분산을 최소화합니다. 일반적인 작업 흐름은 다음과 같은 단계를 따릅니다:
이 알고리즘 사용 시 올바른 군집 수(K)를 결정하는 것은 매우 중요한 요소입니다. 실무자들은 종종 엘보우 방법과 같은 기법을 사용하거나 실루엣 점수를분석하여 결과 군집이 얼마나 잘 분리되었는지 평가합니다.
K-평균 군집화는 매우 다용도로 활용되며, 다양한 산업 분야에서 단순화와 데이터 전처리 목적으로 유용하게 사용됩니다.
Ultralytics 같은 딥 러닝 프레임워크가 복잡한 훈련 파이프라인을 처리하는 반면, K-평균법은 데이터셋 통계 분석에 자주 사용됩니다. 다음 Python 널리 사용되는 Scikit-learn 라이브러리를 활용해 2차원 좌표(객체 중심점을 시뮬레이션)를 클러스터링하는 방법을 보여줍니다.
import numpy as np
from sklearn.cluster import KMeans
# Simulated coordinates of detected objects (e.g., from YOLO26 inference)
points = np.array([[10, 10], [12, 11], [100, 100], [102, 101], [10, 12], [101, 102]])
# Initialize K-Means to find 2 distinct groups (clusters)
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(points)
# Output the cluster labels (0 or 1) for each point
print(f"Cluster Labels: {kmeans.labels_}")
# Output: [1 1 0 0 1 0] -> Points near (10,10) are Cluster 1, near (100,100) are Cluster 0
K-Means를 유사한 이름이나 기능을 가진 다른 알고리즘과 구분하는 것은 프로젝트에 적합한 도구를 선택하기 위해 중요합니다.