K-means란? AI에서 중심점을 반복 갱신해 비슷한 데이터를 묶는 방법
TL;DR
K-means는 정한 수의 중심점과 가장 가까운 사례를 연결하고, 각 묶음의 평균으로 중심점을 다시 계산하는 군집화 방법입니다. 처음 정한 K와 시작 중심점, 특징의 척도가 결과를 바꿉니다. 관성이 낮다는 이유만으로 군집이 타당하다고 결론 내리지 말고 사례와 분포를 같이 확인해야 합니다.
핵심 3줄 요약
- 핵심 1
중심점에 가까운 사례를 묶습니다. K개의 그룹을 먼저 정하고 각 표본을 가장 가까운 중심점에 배정합니다. - 핵심 2
배정과 평균 갱신을 반복합니다. 군집의 평균을 새 중심점으로 삼아 배정이 안정될 때까지 이어 갑니다. - 핵심 3
결과에는 검증이 필요합니다. 초기값·거리·특징의 척도와 군집 수에 따라 경계와 관성이 달라집니다.
이 글에서 다룰 내용
- K-means의 한 문장 정의
- 가상의 고객 데이터를 이용한 쉬운 예시
- AI 데이터 탐색에서 중요한 이유
- 중심점 초기화부터 배정·갱신까지의 순서
- K·관성·초기화와 군집 결과 읽는 법
- BIRCH·DBSCAN·GMM·KNN과의 차이
- 실전 사용처와 품질 점검
- 입력 척도·이상치·군집 수의 주의점
- 자주 묻는 질문
K-means를 한 문장으로 정의하면 무엇인가요?
K-means(K-평균)은 입력 표본을 미리 정한 K개 군집 중 가장 가까운 중심점에 배정하고, 각 군집에 속한 표본의 평균으로 중심점을 반복 갱신하는 비지도 군집화 알고리즘입니다.
목표는 각 표본에서 자신이 속한 중심점까지의 거리 제곱을 모두 더한 값, 즉 군집 내 제곱합을 작게 만드는 것입니다. scikit-learn은 이 값을 inertia 또는 관성으로 표시합니다. 중심점은 표본들의 평균이므로 실제 데이터의 어느 행과도 일치하지 않을 수 있습니다.
K-means의 출력은 각 표본의 군집 번호와 군집별 중심 좌표입니다. 번호 0이 번호 1보다 우수하다는 뜻은 아닙니다. 정답 라벨이 없는 자료를 탐색할 때 쓰지만, 나온 그룹 이름과 의미는 분석자가 실제 사례를 보고 붙여야 합니다.
한 줄 정리: K-means는 K개 중심점과의 거리 제곱합을 줄이며 비슷한 수치 표본을 묶는 방법입니다.
쉬운 예시로 이해해 볼까요?
고객 네 명을 구매 횟수와 구매 금액이라는 두 숫자로 표현했다고 가정해 보겠습니다. 횟수와 금액은 단위가 달라 그대로 비교하면 금액 축이 거리를 압도할 수 있으므로, 먼저 같은 기준으로 척도를 조정한 수치라고 생각하세요.
- A와 B는 횟수와 금액이 모두 낮아 서로 가깝습니다.
- C와 D는 두 값이 상대적으로 높아 서로 가깝습니다.
- K를 2로 두면 시작 중심점 둘을 놓고 네 명을 가까운 쪽에 나눕니다.
첫 배정에서 A·B와 C·D가 나뉘었다면 각각의 평균 좌표를 새 중심점으로 잡습니다. 이 중심점을 기준으로 거리를 다시 계산해 배정하고, 중심점 이동이 충분히 작아지거나 설정한 종료 조건에 이르면 멈춥니다. 다른 시작점이었다면 중간 배정과 최종 결과가 달라질 수 있습니다.
이 예시는 분리된 데이터의 작동 방식만 보여줍니다. 실제 고객이 할인 선호나 방문 주기에 따라 복잡하게 흩어져 있다면 두 그룹이 사업적으로 의미 있는 구분이라는 보장은 없습니다. 표본별 배정과 각 그룹의 실제 행동을 다시 확인해야 합니다.
쉬운 예시: 중심점을 놓고 가까운 사례를 배정한 뒤, 배정된 사례의 평균으로 중심점을 옮기는 과정을 반복합니다.
왜 AI에서 K-means가 중요한가요?
정답 라벨 없이 데이터 구조를 탐색합니다
고객 행동, 센서 측정값, 이미지에서 뽑은 특징처럼 라벨이 없는 수치 데이터도 유사한 묶음이 있는지 살펴볼 수 있습니다. 분류 모델처럼 미리 정한 정답 클래스를 예측하는 단계가 아니라, 측정한 특징과 거리를 기준으로 후보 묶음을 만드는 단계입니다.
이때 입력 특징을 바꾸면 가까움의 뜻이 함께 바뀝니다. 나이와 거래 횟수로 만든 군집을 소비 취향의 객관적 정답처럼 해석할 수 없습니다. K-means가 계산한 것은 입력 공간의 거리 기반 구분이라는 범위를 지켜야 합니다.
중심점으로 군집을 요약합니다
군집별 중심 좌표와 표본 수를 보면 각 묶음의 수치적 경향을 비교하기 쉽습니다. 다만 평균은 극단값의 영향을 받습니다. 중심점만 보지 말고 군집 안의 개별 표본과 값의 분포도 함께 봐야 대표적인 사례가 무엇인지 판단할 수 있습니다.
다른 군집화 방법의 기준점이 됩니다
K-means는 어떤 표본을 가장 가까운 중심점에 배정하는지와 관성이 얼마인지를 명시적으로 보여줍니다. 밀도 기반 DBSCAN이나 확률 모델 GMM, 요약 트리인 BIRCH의 결과를 비교할 때 입력 특징과 거리 기준을 맞춘 기준 결과로 삼을 수 있습니다.
핵심 인사이트: 군집 번호가 정답을 뜻하지 않습니다. 입력 특징, 거리, 각 묶음의 실제 사례를 대조해야 결과를 해석할 수 있습니다.
중심점은 어떤 순서로 정해지고 바뀌나요?
1. K와 초기 중심점을 정합니다
먼저 군집 수 K를 선택합니다. scikit-learn KMeans의 초기화 방법에는 k-means++와 무작위 선택 등이 있으며, k-means++는 관성을 고려해 시작점을 고릅니다. 한 번의 시작점으로 지역적으로 다른 해에 도달할 수 있으므로 초기화 방식과 반복 실행 설정을 결과와 함께 기록합니다.
2. 각 표본을 가장 가까운 중심점에 배정합니다
모든 표본과 K개 중심점 사이의 거리를 비교해 가장 가까운 쪽으로 라벨을 붙입니다. 기본 설명의 목적 함수는 유클리드 거리의 제곱합입니다. 범주 이름이나 원시 문장에 이 거리를 그대로 적용하기보다, 먼저 해당 데이터를 목적에 맞는 수치 특징으로 표현해야 합니다.
3. 군집마다 평균을 다시 구합니다
지금 배정된 표본의 좌표 평균을 계산해 그 군집의 새 중심점으로 삼습니다. 중심이 바뀌면 가까운 군집도 달라질 수 있어 다시 배정합니다. 이 배정과 평균 갱신이 Lloyd 방식의 핵심입니다.
4. 이동량이나 반복 한도를 보고 멈춥니다
중심점 이동이 설정한 허용치 안에 들어오거나 최대 반복 횟수에 이르면 실행을 종료합니다. 종료했다는 사실만으로 모든 시작점에서 같은 최저 관성을 찾았다는 뜻은 아닙니다. 실행 횟수와 시드, 관성, 군집별 크기를 함께 비교해야 합니다.
작동 순서: 초기화 → 가까운 중심점 배정 → 군집별 평균 갱신 → 재배정 순서로 진행합니다. 종료와 전역 최적해 보장은 다른 문제입니다.
K와 초기화, 관성은 어떻게 읽나요?
K는 만들 군집과 중심점의 개수입니다
K를 크게 잡으면 한 그룹에 들어갈 표본이 줄고 군집 내 제곱합은 대체로 작아집니다. 관성이 낮아졌다는 이유만으로 더 좋은 K라고 판단하지 않습니다. 군집별 표본 수, 실제 사례, 실루엣 그림, 업무 목적을 함께 살펴보세요.
초기화와 반복 실행은 결과를 바꿉니다
scikit-learn의 KMeans는 초기 중심점 생성 방법, 여러 시작점에서 재시도할 횟수, 최대 반복 횟수와 난수 시드를 설정할 수 있습니다. 같은 K라도 시작점을 다르게 주면 결과가 바뀔 수 있습니다. 재현성을 점검하려면 라이브러리 버전과 설정값을 함께 남깁니다.
관성은 군집 내 거리 제곱합입니다
관성은 표본이 자기 중심점에서 얼마나 떨어져 있는지 제곱해 더한 값입니다. 표본 수가 바뀌거나 특징을 재스케일하면 수치의 크기도 바뀌므로 서로 다른 입력 조건의 점수를 같은 잣대로 단순 비교하면 안 됩니다. 작은 값이 실제 라벨 품질이나 사업 가치를 증명하지도 않습니다.
결과 읽기: K·초기화·입력 척도를 함께 기록해야 관성과 군집 배정을 비교할 수 있습니다.
K-means와 헷갈리는 용어는 무엇이 다른가요?
클러스터링과 K-means의 차이
클러스터링은 비슷한 데이터를 묶는 작업 전체를 가리킵니다. K-means는 K개의 중심점과 거리 제곱합을 쓰는 한 가지 알고리즘입니다. 기존 클러스터링 글이 여러 방법을 소개한다면, 여기서는 K-means의 배정·평균 갱신·관성·초기화를 설명합니다.
BIRCH와 K-means의 차이
BIRCH는 많은 표본을 하위 군집의 통계로 요약해 CF 트리를 만드는 방법입니다. K-means는 입력 표본을 중심점에 배정하며 평균을 반복 갱신합니다. BIRCH에서 최종 군집화 방법으로 K-means 계열을 쓸 수 있지만, 트리 요약 자체가 K-means와 같은 연산은 아닙니다.
DBSCAN·GMM과 K-means의 차이
DBSCAN은 밀집된 곳에서 군집을 확장하고 노이즈를 구분합니다. K-means는 K를 미리 정하고 표본마다 가까운 중심점을 배정하므로 노이즈를 자동으로 따로 빼지 않습니다. GMM은 여러 확률분포 성분과 표본의 소속 확률을 추정합니다. 세 방식은 입력 가정과 출력 해석이 다릅니다.
KNN과 K-means의 차이
K-최근접 이웃(KNN)은 새 입력 주변의 라벨이 붙은 사례를 보고 분류하거나 수치를 예측합니다. K-means의 K는 만들 군집 수이며 정답 라벨 없이 중심점을 학습합니다. 이름에 K와 거리 비교가 공통으로 들어가지만 해결하는 질문부터 다릅니다.
비교 정리: K-means의 K는 군집 수, KNN의 K는 참고하는 이웃 수입니다. 목적도 군집화와 지도 예측으로 나뉩니다.
실전에서는 어디에 쓰이나요?
고객 행동의 탐색적 세분화
구매 횟수·방문 간격·장바구니 크기처럼 단위를 맞춘 특징으로 행동이 닮은 집단을 탐색합니다. 집단별 분포와 실제 사례를 대조한 뒤에만 이름을 붙입니다. 이 결과를 개인에 대한 성격 판정이나 자동적인 중요한 결정으로 바로 바꾸지 않습니다.
이미지·문서의 수치 특징 묶기
이미지에서 추출한 색상이나 모델의 표현 벡터를 입력해 가까운 사례의 후보 묶음을 만들 수 있습니다. 차원이 크거나 거리의 의미가 불분명할 때는 전처리와 표현을 다시 검토합니다. 묶인 문서의 주제가 항상 같은 것은 아니므로 표본 문서를 읽어 확인합니다.
탐색 결과의 기준선 만들기
다른 군집화 방법과 비교할 때 K-means의 군집별 크기, 관성과 대표 사례를 기준 결과로 남길 수 있습니다. 동일한 입력과 평가 조건에서만 비교가 의미 있습니다. 결과가 불안정하다면 다른 시드와 특징 조합, 다른 군집화 방법을 추가로 시험합니다.
실전 팁: 군집을 실제 업무에 쓰기 전, 중심점뿐 아니라 각 묶음의 원본 사례와 크기를 확인하세요.
K-means를 적용할 때 어떤 순서로 확인하나요?
1. 묶을 대상과 특징의 뜻을 정합니다
행 하나가 무엇인지, 숫자 특징이 무엇을 뜻하는지부터 적습니다. 누락값과 중복을 점검하고, 정답을 대신 알려주는 사후 정보가 끼어 있지 않은지도 봅니다. 고객, 문서, 이미지처럼 대상이 달라지면 가까움의 정의도 달라집니다.
2. 거리와 척도를 점검합니다
서로 다른 단위가 거리 계산을 지배하지 않도록 필요한 특징을 스케일링합니다. 학습·검증을 구분하는 실험이라면 전처리 통계를 학습 쪽에서만 추정해 누수를 막습니다. 표본 수와 특징의 차원, 이상치도 함께 살펴봅니다.
3. K와 초기화를 바꿔 비교합니다
서로 다른 K와 시드·초기화로 실행하고, 같은 입력에서 관성 변화 및 실루엣 결과를 비교합니다. 실루엣 점수도 숫자 하나만 보고 결론 내리지 말고 군집별 크기와 음수에 가까운 표본을 봅니다. 이미 분리된 것처럼 보이는 예시에만 맞춘 K가 아닌지 확인합니다.
4. 그룹별 사례를 보고 해석합니다
각 군집의 중심 좌표, 표본 수와 실제 데이터 몇 건을 함께 읽습니다. 한 군집이 지나치게 작거나 그룹마다 비슷한 사례가 뒤섞였다면 특징과 K를 다시 검토합니다. 실험 기록에는 입력 버전과 전처리·시드·설정값을 남겨 결과를 다시 만들 수 있게 합니다.
점검 순서: 대상·특징 확정 → 척도 점검 → K와 초기화 비교 → 군집별 원본 확인 순으로 진행합니다.
사용할 때 무엇을 주의해야 하나요?
첫째, K를 미리 정하는 방법입니다. 데이터에 자연스러운 군집이 몇 개인지 자동으로 알려주는 장치가 아닙니다. 서로 다른 K를 시험하되 관성만 낮아지는 방향으로 선택하지 마세요.
둘째, 이상치와 긴 모양의 집단에 취약할 수 있습니다. 평균이 극단값 쪽으로 끌리고 구부러진 영역도 가까운 중심점 기준으로 나뉩니다. scikit-learn의 가정 예시처럼 군집의 모양·밀도·규모가 다르면 실제 구조와 맞지 않을 수 있습니다.
셋째, 모든 표본에 군집 번호가 붙는다고 정상 표본이라는 뜻은 아닙니다. K-means는 DBSCAN처럼 노이즈에 자동으로 별도 라벨을 주는 방식이 아닙니다. 중심점에서 유난히 멀리 떨어진 사례와 작은 군집을 따로 살펴보세요.
넷째, 척도와 고차원 표현을 그대로 믿지 않습니다. 큰 숫자 범위의 특징 하나가 거리를 좌우할 수 있습니다. 차원이 많은 입력에서는 거리의 구분력이 약해질 수 있으므로 특징 선택이나 차원 축소를 검토하고 결과를 원본에 다시 연결해야 합니다.
다섯째, 군집은 원인이나 정답이 아닙니다. 데이터가 그룹으로 나뉘어도 그 이유와 사람에게 미칠 영향은 별도 검토 대상입니다. 군집 결과를 개인정보 처리나 중요한 의사결정에 쓴다면 목적과 접근 권한을 먼저 확인하세요.
주의: 군집 수, 시작점, 척도, 이상치가 달라지면 배정도 달라집니다. 결과 표를 읽기 전에 입력 조건부터 확인하세요.
자주 묻는 질문
Q1. K-means는 정답 라벨이 있어야 하나요?
아닙니다. 비지도 군집화라 미리 정한 정답 라벨 없이 입력 특징을 중심점과의 거리로 묶습니다. 결과를 해석하거나 비교하려면 별도의 검증 자료와 원본 사례가 도움이 됩니다.
Q2. K가 커지면 관성이 작아지니 언제나 좋은가요?
아닙니다. 군집 수를 늘리면 한 그룹 안의 거리 제곱합은 대체로 줄지만 세분화된 묶음이 실제 목적에 맞는다는 뜻은 아닙니다. 군집의 사례와 크기, 실루엣 그림을 함께 보세요.
Q3. 중심점은 반드시 실제 데이터 중 하나인가요?
아닙니다. 중심점은 그 군집에 배정된 표본 좌표의 평균입니다. 따라서 실제 입력 행에는 없는 좌표일 수 있습니다. 실제 대표 사례가 필요한지와 평균 좌표만 필요한지를 구분하세요.
Q4. K-means는 이상치를 자동으로 제거하나요?
그렇지 않습니다. 모든 입력은 가까운 중심점에 배정됩니다. 평균 중심점이 이상치에 끌릴 수 있으므로 극단값과 중심점에서 먼 사례를 별도로 점검해야 합니다.
Q5. KNN의 K와 K-means의 K는 같은 뜻인가요?
다릅니다. KNN의 K는 새 입력을 예측할 때 참고하는 가까운 학습 사례 수입니다. K-means의 K는 만들 중심점과 군집의 개수입니다.
출처
마무리
K-means는 가까운 중심점에 표본을 배정하고 군집의 평균으로 중심점을 바꿔, 정한 K개의 묶음을 만드는 방법입니다. 군집별 중심 좌표와 관성은 결과를 살펴보는 단서이지만, 그 값만으로 의미 있는 그룹이라고 판단할 수는 없습니다.
처음 적용한다면 K와 초기화를 달리해 실행하고, 입력 특징의 척도와 이상치를 확인하세요. 마지막에는 군집별 표본 수와 원본 사례를 직접 읽어야 합니다. 그렇게 해야 계산상 가까운 묶음이 실제로 설명할 만한 묶음인지 알 수 있습니다.
