🐣python
군집
category
🐣python
URL
date
Feb 15, 2023
slug
clustering
author
status
Public
tags
Playdata_deep-learning & machine-learning
summary
군집,K-Means,기타 군집화 알고리즘
type
Post
thumbnail
updatedAt
Mar 2, 2023 03:00 AM
군집의 개요
군집 분석의 개념
- 데이터 클러스터 세트의 관측값이 가지고 있는 여러 속성을 분석하여 서로 비슷한 속성을 갖는 관측값끼리 같은 군집으로 묶는 알고리즘
군집의 목적
- 데이터로부터 유의미한 그룹들을 분리하는 것
분류 알고리즘과 차이
- 공통점
- 데이터를 비슷한 집단을 묶는다
- 차이점
- 분류는 소속 집단의 정보(정답)을 미리 알고 있는 상태에서 비슷한 집단으로 묶는 것
- 군집화란 소속집단의 정보가 없는 상태에서 비슷한 집단으로 묶는 방식(비지도 학습)
대표 알고리즘
- K-Means
- DBSCAN
- 계층적 군집 : 덴드로그램
군집의 기능
- 변수와 레코드가 아주 큰 상황인 경우 탐색적 데이터 분석의 연장으로 활용
- 콜드 스타드 문제에서 유용한 방법
- 모델을 훈련시킬 수 있는 응답 데이터를 초기에 가지고 있지 않은 경우 패턴이 비슷한 데이터들을 분류하여 학습 과정을 빨리 시작 할 수 있도록 함
- 군집의 결과로 얻은 그룹을 직접 사용할 수 있음
- 예측을 위한 회귀나 분류 모델의 입력 피쳐 또는 타켓 변수로 사용할 수 도 있다.
군집 분석의 활용
- 소비자 행동 패턴 그룹화
- 신용 카드 부정 사용 탐지, 구매 패턴 분석, 택배 배송 경로 개선
- 마케팅
- 시장 세분화, 고객 세분화
- 금융
- 포토폴리오 구축 세분화, 투자 정보 데이터, 재무 상황 등…
- 온라인 쇼핑몰
- 유사 상품을 탐색하거나 구매하는 고객들을 묶어 각 그룹이 보다 관심을 가질 만한 쇼핑 정보를 제공
K-Means
K-Means(K-평균)알고리즘
- 원리가 단순하고 직관적이고 성능이 좋은 군집 알고리즘
- 데이터 크기가 커져도 손쉽게 사용 가능
- 분활적 군집 분석(군집의 수를 미리 결정한 뒤 군집화 수행)
- 각 관측지는 K개 군집 중 하나에 무조건 속하며, 2개 이상의 군집에 속하지 않음
- 데이터 간 유사성을 측정하는 기준
- 각 군집(클러스트)의 중심까지의 거리(유클리드, 상관계수 거리, 코사인 거리)
- 데이터 정규화 필요성
- 정규화가 없는 경우 스케일이 가장 큰 변수가 군집 과정을 독점
- 몇 개의 군집으로 데이터를 구분할 것인가에 따라 모형의 성능이 달라짐
- 객체들을 대상으로 k개의 군집으로 분할을 수행
- 주어진 k에 선택한 분할 기준을 최적화할 수 있는 k개의 군집을 찾음
- 반복적으로 수많은 분할 수행 검토
- 각 군집은 중심점에 의해 표현됨
- 객체들이 어느 중심점에 가까운가에 따라 군집을 결
작동 방식

K-MEANS의 장단점
[장점]
- 일반적인 군집화에서 가장 많이 사용되는 알고리즘
- 알고리즘이 쉽고 간결
- 원형 클러스트를 구분하는데 뛰어남

[단점]
- 거리 기반 알고리즘으로 속성의 개수가 매우 많을 경우 군집화 정확도가 떨어짐
- 반복을 수행하는데 반복 횟수가 많은 경우 수행시간이 매우 느려짐
- 사전에 클러스트 개수 k를 지정
- K-means는 군집들이 다양성을 가질 때 효율적이지 못함
- 군집의 크기
- 군집의 밀도
- 비원형 형태의 군집
K-Means : 최적의 K 찾기
군집 개수 K를 결정하는 방법
- 군집분석이 정답이 없는 상태에서 데이터를 분석하는 비지도학습
- 최적의 군집의 개수 k를 결정하고 군집 결과를 평가하는 것이 다분히 주관적
- 사전에 산점도 등을 통해 데이터 특성 등을 확인하여 데이터가 뭉쳐 있는 그룹을 K로 선택하는 방법도 있음
- 변수의 숫자가 많은 경우 차원 축소 등의 방법을 이용해 변수의 수를 줄여 특성 파악
- 해당 업과 데이터에 대해서 잘 아는 SME의 지식과 경험, 활용 목적을 고려한 주관적인 의견을 반영하여 최종결정하는 것이 필요 및 중
군집형
array([[5.22409639, 3.1313253],
[6.61044776, 2.96567164]])


군집 평가
[실루엣 분석]
- 각 군집 간 거리가 얼마나 효율적으로 분리되었는지
- 클러스터 내 데이터들이 얼마나 조밀하게 모여있는지 측정하는 도구
- 다른 군집과 거리는 떨어져 있고 동일 군집끼리 데이터는 가깝게 잘 뭉쳐져 있어야 함
- 군집화가 잘 이루어질수록 개별 군집은 비슷한 정도의 여유공간을 가지고 떨어져 있다.
[실루엣 계수]
- 개별 데이터가 가지는 군집화 지표
- 150개 데이터가 있으면 150개 실루엣 개수를 받음
- 해당 데이터가 같은 군집 내의 데이터와 얼마나 가깝게 군집화되어 있고 다른 군집에 있는 데이터와는 얼마나 멀리 분리되어 있는지 나타내는 지표
실루엣 계수
- 개별 데이터가 가지는 군집화 지표
- 해당 데이터가 같은 군집 내의 데이터와 얼마나 가깝게 군집화되어 있고 다른 군집에 있는 데이터와는 얼마나 멀리 분리되어 있는지 나타내는 지표

사이킷런 실루엣 메소드
sklearn.metrics.silhoulette_samples()
sklearn.metrics.silhoulette_score()
[군집화 결과 판단 기준]
- 전체 실루엣 계수의 평균값(silhouette_score())이 0~1 사이의 값을 가지며, 1에 가까울수록 좋다.
- 개별 군집의 평균값의 차이가 작아야 함
- 개별 군집의 실루엣 계수 평균값이 전체 실루엣 계수의 평균값에서 크게 벗어나지 않는 것이 중요!
- 전체 실루엣 계수의 평균값은 높지만, 특정 군집의 실루엣 계수 평균값만 유난히 높고 다른 군집들의 실루엣 계수 평균값은 낮으면 좋은 군집이라고 할 수 없