통계적 이해 - k 평균 군집(k-means clustering)

2020. 8. 11. 17:56·데이터과학/ADSP
728x90

k-평균 군집(k-means clustering)


 k-평균 군집의 절차(알고리즘)

  1. 군집의 수만큼(k개) 초기값을 지정
  2. 각 개체를 가까운 초기값에 할당하여 군집을 형성
  3. 각 군집의 평균을 재계산하여 초기값을 갱신
  4. 갱신된 값에 대해 위의 할당 과정을 반복하여 k개의 최종 군집을 형성

 

  • k-평균 군집에서 군집의 수(k)는 미리 정해주어야 함
  • k-개의 초기 중심값은 임의로 선택, 자료값 중 무작위 선택
  • 초기 중심점들은 서로 멀리 떨어져 있는 것이 바람직
  • 초기값에 따라 군집 결과가 크게 달라질 수 있음
  • k-평균 군집은 군집의 매 단계마다 군집 중심으로부터 오차 제곱합을 최소화하는 방향으로 군집을 형성해나 가는(부분 최적화 수행하는) “탐욕적 알고리즘”으로 간주될 수 있으며, 안정된 군집은 보장하나 전체적으로 최적이라는 것은 보장하지 못함

[그림1] k-평균 군집 과정

k-평균 군집의 장점

  1. 알고리즘이 단순
  2. 빠르게 수행
  3. 계층적 군집보다 많은 양의 자료를 다룰 수 있음
  4. 모든 변수가 연속적이어야 함

 

k-평균 군집의 단점

  1. 잡음이나 이상값에 영향을 많이 받으며(군집 중심 계산 과정),
  2. 볼록한 형태가 아닌(non-convex) 군집(U-형태 군집)이 존재할 경우에는 성능이 떨어짐

이상값 자료에 민감한 k-평균 군집의 단점을 보완하는 방법
→ 매 단계마다 평균 대신 중앙값을 사용하는 k-중앙값 군집 사용, 탐색적 자료 분석을 통해 이상값을 미리 제
거하는 방법

 

 

예제)

 

# rattle 패키지에서 제공하는 178개의 이탈리안 와인에 대해 13가지 화학적 성분을 측정한 자료
install.packages("rattle") # rattle 패키지 install
library(rattle)
library(cluster)
data(wine)
head(wine) # type data포함
d <- scale(wine[-1]) # scale함수는 표준화를 해준다.
set.seed(1234) # set.seed를 이용해서 값을 고정시킨다. 이유는 초기값에 따라서 변동이 크기 때문에
fit.km <- kmeans(d,3,nstart=25) # 최적의 시작을 알기위해서 nstart = 25 25번중 최고의 결과만 보여준다.
fit.km
fit.km$center # 중심점에 대한 정보 확인
plot(d,col=fit.km$cluster) # 산점도
points(fit.km$center,col=1:3,pch=8,cex=1.5) # 산점도
clusplot(d,fit.km$cluster, color = TRUE, shade =TRUE, labels =2, lines = 1) # 군집 상세하게 보기
ct.km <- table(wine$Type,fit.km$cluster) # table을 이용하면 얼마나 정확한 군집을 다루는지 확인할 수 있다.
ct.km

 

[그림2] 사용할 패키지 가져오고 데이터 확인

 

[그림3] 25번중 최고의 결과만 확인 평균으로 

 

[그림4] 중심저에 대한 정보 확인하기

 

[그림5] 정확도 확인하기

 

[그림6] 결과 확인

 

 

 

출처 : 2020 전면 개정판 ADsP 데이터 분석 준전문가 DATAEDU

728x90
저작자표시 비영리 변경금지 (새창열림)
'데이터과학/ADSP' 카테고리의 다른 글
  • 통계적 이해 - 다차원 척도법(Multidimensional Scaling,MDS)
  • 통계적 이해 - 시계열 모형
  • 통계적 이해 - 군집 분석, 계측적 분석, 거리 측정 방법, 거리
  • 통계적 이해 - 시계열 자료
포장빵
포장빵
IT공부 및 프로그래밍
  • 포장빵
    포장빵의 IT
    포장빵
  • 전체
    오늘
    어제
    • AI 학습 노트 (113)
      • 기초 수학 (4)
        • 선형대수 (0)
        • 확률통계 (4)
        • 미적분 (0)
        • 최적화 이론 (0)
      • AI & 딥러닝 (1)
        • 이론 (0)
        • 컴퓨터 비전 (0)
        • 자연어 처리 (0)
        • 생성AI (0)
        • 강화학습 (0)
      • 데이터과학 (70)
        • R (47)
        • ADSP (21)
      • 연구 & 자료 (15)
        • 논문 (6)
        • 수료증 (3)
      • 프로그래밍 & 개발 환경 (22)
        • Python (22)
        • 개발도구 (0)
        • 알고리즘 (0)
      • 면접 자료 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      R 원 그래프 퍼센트
      지수분포
      다차원 척보법
      단순선형 회귀분석
      주성분 분석(PCA)
      Python Regular Expression Quick Guide
      확률 분포
      R 원 그래프
      k-means clustering
      시계열 모형
      자료의 종류
      python 주요 데이터 타입
      논문
      R 도수분포표
      k-평균 군집
      Coursera 1
      Coursera Python Data Structures
      통계량에 의한 자료 분석
      Python 크롤링 기초
      CV
      none타입
      상관분석
      yolov10
      stylegan2
      확률
      yolov9
      매핑형(딕셔너리)
      베르누이분포
      시퀀스형
      str lib
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    포장빵
    통계적 이해 - k 평균 군집(k-means clustering)
    상단으로

    티스토리툴바