Yolo 비전 선전
선전
지금 참여하기
용어집

K-평균 군집화

비지도 학습을 위한 K-평균 군집화를 탐구하세요. 이 알고리즘이 데이터를 어떻게 분할하고, AI 애플리케이션을 어떻게 향상시키며, Ultralytics 같은 모델에 어떻게 정보를 제공하는지 알아보세요.

K-평균 군집화는 비지도 학습 분야에서 널리 사용되는 기본 알고리즘으로, 라벨이 없는 데이터 내 숨겨진 구조를 발견하도록 설계되었습니다. 주요 목표는 데이터셋을 서로 다른 하위 그룹(군집)으로 분할하여 동일 그룹 내 데이터 포인트는 최대한 유사하게, 다른 그룹 간 데이터는 뚜렷이 구분되도록 하는 것입니다. 데이터 마이닝과 탐색적 분석의 초석으로서 K-평균은 데이터 과학자들이 사전 정의된 레이블이나 인간의 감독 없이도 복잡한 정보를 관리 가능한 범주로 자동으로 구성할 수 있도록 지원합니다.

알고리즘 작동 방식

K-평균법은 반복적으로 실행되며, 훈련 데이터의 최적 군집화를 결정하기 위해 거리 측정법을 활용합니다. 이 알고리즘은 항목들을 K개의 군집으로 구성하는 방식으로 작동하며, 각 항목은 가장 가까운 평균(중심점)을 가진 군집에 속하게 됩니다. 이 과정은 각 군집 내의 분산을 최소화합니다. 일반적인 작업 흐름은 다음과 같은 단계를 따릅니다:

  1. 초기화: 알고리즘은 K개의 초기점을 중심점으로 선택합니다. 이 점들은 수렴 속도를 높이기 위해 무작위로 선택하거나 k-means++와 같은 최적화 기법을 통해 선택될 수 있습니다.
  2. 과제: 데이터셋 내 각 데이터 포인트는 특정 거리 측정법(가장 흔히 유클리드 거리)을 기반으로 가장 가까운 중심점에 할당됩니다.
  3. 업데이트: 중심점은 해당 클러스터에 할당된 모든 데이터 포인트의 평균(중간값)을 취하여 재계산됩니다.
  4. 반복: 단계 2와 3은 중심점이 더 이상 크게 움직이지 않거나 최대 반복 횟수에 도달할 때까지 반복됩니다.

이 알고리즘 사용 시 올바른 군집 수(K)를 결정하는 것은 매우 중요한 요소입니다. 실무자들은 종종 엘보우 방법과 같은 기법을 사용하거나 실루엣 점수를분석하여 결과 군집이 얼마나 잘 분리되었는지 평가합니다.

AI의 실제 적용 사례

K-평균 군집화는 매우 다용도로 활용되며, 다양한 산업 분야에서 단순화와 데이터 전처리 목적으로 유용하게 사용됩니다.

  • 이미지 압축 및 색상 양자화: 컴퓨터 비전(CV) 분야에서 K-평균 알고리즘은 픽셀 색상을 클러스터링하여 이미지 파일 크기를 줄이는 데 활용됩니다. 수천 가지 색상을 소수의 주요 색상 집합으로 그룹화함으로써, 이 알고리즘은 이미지의 시각적 구조를 유지하면서 효과적으로 차원 축소를 수행합니다. 이 기술은 고급 객체 탐지 모델 훈련 전에 입력 데이터를 정규화하기 위해 흔히 사용됩니다.
  • 고객 세분화: 기업들은 클러스터링을 활용해 구매 이력, 인구통계학적 특성 또는 웹사이트 행동을 기반으로 고객을 그룹화합니다. 이는 소매 AI 솔루션의 핵심 요소인 타겟 마케팅 전략을 가능하게 합니다. 고가치 고객이나 이탈 위험을 식별함으로써 기업은 효과적으로 메시지를 맞춤화할 수 있습니다.
  • 이상 탐지: 시스템은 "정상" 데이터 클러스터의 구조를 학습함으로써 어떤 중심점에서도 멀리 떨어진 이상값을 식별할 수 있습니다. 이는 금융 분야의 사기 탐지 및 네트워크 보안의 이상 탐지에 유용하며, 표준 패턴에서 벗어난 의심스러운 활동을 표시하는 데 도움을 줍니다.
  • 앵커 박스 생성: 역사적으로 구형 YOLO 같은 객체 탐지기는 훈련 데이터셋으로부터 최적의 앵커 박스를 계산하기 위해 K-평균을 활용했습니다. YOLOv26과 같은 현대적 모델은 고급 앵커 프리(anchor-free) 방법을 사용하지만, 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를 유사한 이름이나 기능을 가진 다른 알고리즘과 구분하는 것은 프로젝트에 적합한 도구를 선택하기 위해 중요합니다.

  • K-Means 대 K-최근접 이웃(KNN): 이름에 'K'가 들어간다는 이유로 종종 혼동됩니다. K-평균법은 라벨이 없는 데이터를 클러스터링하는 비지도 학습 알고리즘입니다. 반면, K-최근접 이웃법(KNN)이미지 분류 및 회귀에 사용되는 지도 학습 알고리즘으로, 라벨이 지정된 데이터를 기반으로 이웃의 다수 클래스에 따라 예측을 수행합니다.
  • K-Means 대 DBSCAN: 둘 다 데이터를 클러스터링하지만, K-Means는 클러스터가 구형이라고 가정하며 사전에 클러스터 수를 정의해야 합니다. DBSCAN은 밀도를 기반으로 데이터를 그룹화하며, 임의의 형태의 클러스터를 찾을 수 있고 잡음을 더 잘 처리합니다. 이로 인해 DBSCAN은 클러스터 수가 알려지지 않은 불규칙한 구조의 데이터셋에서 발견되는 복잡한 공간 데이터에 더 적합합니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기