BuNa_
IT Story
BuNa_
전체 방문자
오늘
어제
  • 분류 전체보기 (117)
    • CS (14)
      • 운영체제 (8)
      • 네트워크 (0)
      • Design Pattern (1)
      • OOP (4)
    • 대외활동 (24)
      • 우아한테크코스 (14)
      • DND 동아리 (4)
      • UMC 동아리 (5)
      • 해커톤 (1)
    • Android (29)
      • MVVM (2)
      • 스터디 (11)
      • Compose (3)
      • Unit Test (1)
    • Project (5)
      • 어따세워 (5)
      • DnD 과외 서비스 (0)
    • Programming (11)
      • Kotlin (4)
      • 파이썬 (7)
    • Git (1)
    • 인공지능 (22)
    • 백준 (8)
    • 기타 (3)
      • IntelliJ (1)
      • 일상 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 외부 단편화
  • 안드로이드
  • 다이나믹 프로그래밍
  • 백준
  • 딥러닝
  • 선형회귀
  • 객체지향 생활체조
  • 우테코 프리코스
  • k-means++
  • Baekjoon
  • UMC
  • 우테코 5기
  • MVVM
  • 어따세워
  • Android
  • Compose
  • 컴공선배
  • 운영체제
  • ViewModel
  • 인공지능
  • External fragmentation
  • 우아한테크코스
  • Ai
  • K-means
  • 파이썬
  • 원시값 포장
  • RecyclerView
  • 우테코
  • 셀레니움
  • 인공지능 분류

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BuNa_

IT Story

[인공지능][개념] K-평균(K-means) 알고리즘과 군집화(Clustering) + 이너셔(Inertia) 이해하기
인공지능

[인공지능][개념] K-평균(K-means) 알고리즘과 군집화(Clustering) + 이너셔(Inertia) 이해하기

2021. 5. 21. 15:17

 

K-평균 (K-means)


 

 

 

K-평균(K-means) 알고리즘은 데이터를 k개의 클러스터로 묶는 알고리즘이다.

K-평균 알고리즘의 목적은 각 클러스터와의 거리 차이 분산을 최소화하여 데이터를 분류(Classification)하는 데에 있다.

 

클러스터(Cluster)라는 명칭이 생소하게 느껴질 수 있지만, 그룹이라는 단어같이 어떠한 요소들을 묶어놓은 단위체라는 뜻이며,

추가적으로 어떠한 요소들을 묶는 행위를 클러스터링(Clustering)이라고 부른다.

 

K-평균 군집 알고리즘은 특정 데이터에서 평균값을 자동으로 찾아주는데,

이 평균값이 클러스터의 중심에 위치하기 때문에 클러스터 중심 또는 센트로이드(Centroid)라고도 부른다.

특히, 데이터 특징(feature)을 분석했을 때, 정답 역할을 하는 타겟(target) 데이터가 필요 없이

자동으로 학습을 하여 정답을 찾아주기 때문에 K-평균은 비지도 학습이라고 할 수 있다.

 

그렇다면, K-평균 알고리즘은 어떻게 작동하는지 그 방식을 알아보자.

 

 


 

 

K-평균 알고리즘의 작동 방식

 

 

1. 무작위로 k개의 클러스터 중심을 정한다.

2. 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정한다.

3. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다.

4. 클러스터 중심에 변화가 없을 때까지, 2번으로 돌아가 해당 과정을 반복한다.

 

 

K-평균(K-means) 알고리즘의 시각화

 

이 과정을 시각화하면 위 그림처럼 보인다.

다소 이해가 안 될 수 있어 다시 풀어 설명해보자면,

 

만약 위의 그래프에서처럼, 클러스터(Cluster)를 3개로 지정한다면, 모델은 임의(Random)의 장소에 위치한 데이터를 랜덤으로 센트로이드로 삼아 3개의 클러스터 중심을 만들어낼 것이다.

넓게 퍼져있는 데이터들은 센트로이드(Centroid)를 중심으로 군집화가 이루어진다.

그 후에는, 이 데이터 그룹의 평균을 구하여 클러스터 중심을 평균값으로 이동시킨다.

만약 중심이 바뀌었다면, 평균 쪽으로 이동한 센트로이드를 기준으로 다시 주변 데이터를 모아 군집화를 이루고,

또다시 새로운 그룹의 클러스터 중심을 군집의 평균값으로 이동시킨다.

이 과정을 중심이 변경되지 않을 때까지 무한 반복하여 3개로 분류된 그룹을 만들게 된다.

 

 


 

 

최적의 K 찾기

 

 

문제는 몇 개의 k를 지정해야 하는가이다.

이전 글의 지도 학습 예제들처럼, 생선이나 와인을 분류하고 싶을 때 타겟(target) 데이터로 어떤 정답들이 있는지 미리 모델에게 알려주고 훈련을 시켰다.

하지만 K-Means 알고리즘은 비지도 학습이기 때문에 정답으로 무엇이 있는지 전혀 알지 못한다.

그렇기 때문에 K-Means는 데이터의 평균으로 '대략 이 A라는 데이터는 옆에 있는 데이터 B(센트로이드)와 같은 걸 거야!'

라고 추측하여 분류하는 셈이다.

 

이런 문제를 해결하기 위해 등장한 것이 바로 엘보우(Elbow)이다.

 

 

Elbow는 한국어로  '팔꿈치' 라는 뜻이다.

 

k-평균 알고리즘은 클러스터 중심과 클러스터에 속한 샘플 사이의 거리를 잴 수 있는데,

이 거리의 제곱 합을 이너셔(intertia)라고 부른다.

이너셔는 클러스터에 속한 샘플이 얼마나 가깝게 모여 있는지를 나타내는 값이라고 생각할 수 있다.

일반적으로 클러스터의 개수가 늘어나면 클러스터 개개의 크기는 줄어들기 때문에, 이너셔 또한 함께 줄어든다.

 

엘보우 방법은 클러스터 개수를 늘려가면서 이너셔(intertia)의 변화를 관찰하여 최적의 클러스터 개수를 찾는 방법이다.

클러스터 개수를 증가 시켜서 이너셔를 그래프로 그리면 감소하는 속도가 꺾이는 지점이 있다.

 

 

클러스터 개수 k에 따른 이너셔(inertia)의 감소 그래프

 

위 그래프의 빨간색 지점이 바로 최적의 클러스터 개수라고 할 수 있다.

이 지점 이후로는 클러스터 개수를 늘려도 클러스터에 밀집된 정도가 크게 개선되지 않으며,

오히려 클러스터가 많으면 의미 없이 여러 개의 그룹으로 분류되기 때문에 모델의 효율이 크게 떨어진다.

해당 그래프에서는 클러스터의 개수가 3일 때 이너셔가 크게 줄어들지 않는 것으로 보아

모델의 k를 3으로 설정하는 것이 가장 적절하다고 말할 수 있다.

 

 

다음 글에서는 K-평균(K-means) 알고리즘을 직접 코드로 구현해보고, 이너셔(Intertia)의 감소 그래프를 그려보며 최적의 클러스터를 찾는 엘보우를 직접 실습해보자.

 

 

 

 

(이해가 다소 힘들거나, 틀린 부분이 있다면 댓글 부탁드리겠습니다! 😊)

💖댓글과 공감은 큰 힘이 됩니다!💖

저작자표시 비영리 변경금지 (새창열림)

'인공지능' 카테고리의 다른 글

[인공지능][개념] K-Means 알고리즘의 문제점과 'K-Means++ 클러스터링'을 통해 개선하기  (0) 2021.05.24
[인공지능][실습] K-평균(K-Means) 알고리즘으로 과일(fruits) 사진을 분류해보고 엘보우(Elbow) 방법을 통해 최적의 k값을 찾아보자  (2) 2021.05.23
[인공지능][개념&실습] 트리의 앙상블(Ensemble)[2] - 엑스트라 트리(Random Forest)와 (+ 히스토그램 기반) 그레이디언트 부스팅  (2) 2021.05.20
[인공지능][개념&실습] 트리의 앙상블(Ensemble)[1] - 랜덤 포레스트(Random Forest)  (3) 2021.05.19
[인공지능][실습] 결정 트리(Decision Tree) 모델로 와인(Wine) 데이터셋을 분류하고 교차 검증(Cross Validation)과 그리드 서치(Grid Search)로 최적의 하이퍼 파라미터를 찾아보자!  (0) 2021.05.18
    '인공지능' 카테고리의 다른 글
    • [인공지능][개념] K-Means 알고리즘의 문제점과 'K-Means++ 클러스터링'을 통해 개선하기
    • [인공지능][실습] K-평균(K-Means) 알고리즘으로 과일(fruits) 사진을 분류해보고 엘보우(Elbow) 방법을 통해 최적의 k값을 찾아보자
    • [인공지능][개념&실습] 트리의 앙상블(Ensemble)[2] - 엑스트라 트리(Random Forest)와 (+ 히스토그램 기반) 그레이디언트 부스팅
    • [인공지능][개념&실습] 트리의 앙상블(Ensemble)[1] - 랜덤 포레스트(Random Forest)
    BuNa_
    BuNa_
    안드로이드 개발자를 향해 달리고 있는 공대생입니다! 🧑 Android, Kotlin, Java, Python 등 학습하고 있는 내용과 프로젝트를 주로 업로드하고 있습니다. 지적과 조언은 언제나 환영입니다!😊 github : https://github.com/tmdgh1592

    티스토리툴바