데이터를 클러스터로 그룹화하는 핵심 비지도 학습 알고리즘인 K-평균 군집화에 대해 알아보세요. K-평균 군집화의 프로세스, 응용 분야 및 비교를 살펴보세요!
K-평균 클러스터링은 비지도 학습 분야에서 널리 사용되는 알고리즘으로 비지도 학습 분야에서 널리 사용되는 알고리즘입니다. 데이터 세트를 서로 겹치지 않는 별개의 하위 그룹으로 분할하도록 설계된 알고리즘입니다. 더 넓은 맥락에서 보면 머신 러닝(ML)에서 이 방법은 필수적입니다. 레이블이 없는 데이터 내에서 숨겨진 패턴과 구조를 발견하는 데 필수적입니다. 이 알고리즘은 데이터 포인트를 구성하는 방식으로 작동합니다. 를 $K$ 수의 클러스터로 구성하고, 각 포인트는 가장 가까운 평균을 가진 클러스터에 속하며, 이 클러스터는 그룹. 이 접근 방식은 각 클러스터 내의 분산을 최소화하는 데 도움이 되며, 동일한 그룹의 데이터 포인트가 가능한 한 유사하도록 보장합니다. 그룹의 데이터 포인트가 가능한 한 유사하면서도 다른 그룹은 구별되도록 합니다.
K-평균 프로세스는 반복적이며 클러스터의 중심 역할을 하는 $K$ 초기 중심을 선택하는 것으로 시작됩니다. 포인트 역할을 하는 $K$ 초기 중심점을 선택하는 것으로 시작됩니다. 이러한 중심은 무작위로 선택하거나 다음과 같은 더 스마트한 초기화 기법을 통해 선택할 수 있습니다. k-means++ 초기화 와 같은 보다 스마트한 초기화 기법을 통해 선택될 수 있습니다. 그런 다음 알고리즘은 결과가 안정화될 때까지 두 가지 기본 단계를 거칩니다:
이 주기는 중심이 더 이상 크게 움직이지 않을 때까지 반복되며, 이는 알고리즘이 수렴했음을 나타냅니다. 최적의 클러스터 수를 결정하는 것은 프로세스의 중요한 부분이며, 종종 다음과 같은 기술을 사용하여 달성합니다. 엘보 방법 와 같은 기법을 사용하거나 실루엣 점수 를 분석하여 결과 클러스터 간의 이격 거리를 측정합니다.
K-Means 클러스터링은 다양한 산업 분야에서 다음과 같은 용도로 활용되고 있습니다. 데이터 마이닝 및 분석 작업.
다음과 같은 최신 물체 감지기는 Ultralytics YOLO11 와 같은 고급 회귀 기법이나 앵커 프리 헤드를 활용하는 경우가 많지만, K-Means는 탐지 모델의 진화에서 중요한 역할을 했습니다. YOLOv2부터 YOLOv5 초기 반복에서는 COCO 데이터 세트의 경계 상자에서 K-평균 클러스터링을 사용하여 차원에 K-Means 클러스터링을 사용하여 최적의 앵커 박스를 결정했습니다. 이렇게 미리 계산된 앵커를 통해 모델에 물체 모양 예측을 위한 더 나은 사전 예측을 제공하여 학습 안정성과 회상률을 크게 향상시켰습니다.
K-Means를 다음과 혼동하는 경우가 많습니다. 가장 가까운 이웃(KNN)과 혼동하는 경우가 많지만, 이 둘은 근본적으로 다른 용도로 사용됩니다.
또 다른 관련 개념은 중심점으로부터의 거리가 아닌 밀도를 기준으로 클러스터링하는 DBSCAN이 있습니다. K-Means와 달리 DBSCAN은 클러스터 수를 미리 지정할 필요가 없으며 이상값을 처리하는 데 더 효과적입니다.
다음 Python 예제는 K-Means를 사용하여 픽셀 색상을 클러스터링하는 방법을 보여 줍니다. 데이터 전처리 단계인 픽셀 색상을 클러스터링하는 방법을 보여줍니다.
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")