[ML] 비지도 학습 - 군집분석

최윤진·2023년 3월 27일
0

ML

목록 보기
9/12
post-thumbnail

비지도 학습이란?
레이블이 없는, 정답이 없는 데이터를 분류하는 것!
비지도 학습의 종류?
군집화, 차원 축소

📍 군집분석

서로 유사한 정도에 따라 다수의 개체를 군집으로 나누는 것을 말한다. 한마디로, 유사도가 높은 데이터끼리 그룹화를 시키는것이라고 말할 수 있다.

📍 군집 분석 종류

  • 분할 기반 군집
    • k-means
    • DBSCAN
  • 계층적 군집
    • 병합적 군집
    • 분할적 군집

❓ 군집분석의 목적

  1. 레이블이 없는 데이터 셋의 요약 정보를 추출
  2. 그런 요약 정보를 통해 전체 데이터 셋이 가지고 있는 특징을 발견

❓ 좋은 군집

  • 군집 내 데이터 간 유사도가 ⬆️⬆️⬆️
  • 군집 간 유사도가 ⬇️⬇️⬇️
    👉 군집 간의 거리가 멀수록 군집화가 잘 되었다고 할 수 있다.

❓ 군집 분석의 유사성 계산

✔️ 수학적 거리 [연속형]

① 유클리드 거리

② 맨해튼 거리

③ 민코프스키 거리

  • 유클리드 거리와 맨해튼 거리를 일반화한 거리이다.
  • m차원 민코프스키 공간에서의 거리로,
    m=1 일 때, 맨해튼 거리와 동일
    m=2 일 때, 유클리드 거리와 동일

위의 설명을 손으로 쓰면서 이해해보겠다.


✔️ 표준화 거리 (통계적 거리)

① 마할라노비스

  • 정규분포에서 특정 값 X가 얼마나 평균에서 멀리있는지를 나타내는 거리로써, 관측된 X가 얼마나 일어나기 힘든 일인지를 수치화한 것이다.
  • 즉, 평균과 표준편차를 고려했을때 얼마나 중심에서 멀리 떨어져 있는가를 나타내며, 주로 관측된 데이터의 신뢰성 또는 적합성을 판단하는데 쓰인다. ( 어떤 데이터가 진짜인지 가짜인지 👉 갑자기 이상한 데이터가 들어왔다면 이것을 포함해서 평균을 내는 것 보다 이상치로 판단하고 정상적인 것만 평균 내는 것! )
  • 데이터의 상관성,밀도를 고려해 거리를 계산한다.

✔️ 자카드 계수 [명목형 변수 유사도 측정]

J(A,B)=ABABJ(A,B) = {|A∩B|\over|A∪B|}

자카드 계수는 다음과 같이 간단한 수식으로 구할 수 있다.


✔️ [순서형 변수 유사도 측정]

시간 또는 공간의 순서를 담고 있는 변수의 유사도 측정 시 다음과 같은 방법을 이용해 측정한다.

ex) 만족도, 구매 내역을 시간에 따라 정렬해 둔 데이터, 시간에 따른 각 지역의 온도 변화 데이터
1. 위의 예시와 같은 데이터를 숫자 속성으로 변경
9:00~10:00 = 1 / 10:00~11:00 = 2 / 11:00~12:00 = 3 ... 로 변경
2. 숫자 속성으로 변경 해준 값들을 0~1의 범위로 min-max 정규화
3. 마찬가지로, 정규화된 값을 연속형 변수 거리 측정 방법으로 유사도를 측정

🔎 분할 기반 군집 (비계층적 군집)

✏️ K-means

데이터셋을 k개의 군집으로 분류하는 것이다. 이때 k는 클러스터의 개수로, 사용자가 사전에 지정해준다.

k-means 알고리즘은 보통 다음과 같은 순서와 방법으로 진행된다.

1) 클러스터 갯수 k개 결정
2) 임의로 정한 k개의 초기 중심까지 거리를 계산하고, 가장 가까이에 있는 중심을 자신의 클러스터의 중심이라고 정함
3) k개의 클러스터가 정해지면 각 클러스터에 속한 학습 데이터의 좌표 값 평균을 구해서 이를 새로운 중심으로 정함
4) 위의 [2],[3]번을 반복한 후, 더 이상 학습 데이터 중에서 자신이 속하는 클러스터를 변경하는 경우가 발생하지 않으면 학습을 종료

위의 단계를 거치며 최적의 중심을 구하는 것이 k-means 알고리즘의 핵심

k-means는 이상치가 있어도 이상치 값을 이해할 수 없고, 이상치가 심지어 k-means를 자신의 주변으로 끌고 와서 중심값을 바꿔버려 품질을 낮출 수 있다.

위와 같은 문제를 극복하기 위해 클러스터링을 하기 전, outlier의 존재를 인지해, 이상치를 제거해야 하는 과정이 필요할 수 있다.
👉 이를 반영한 노이즈와 이상치 데이터 식별에 강한 DBSCAN 클러스터링이 있다.

✏️ DBSCAN (Density-based spatial clustering of applications with noise, 밀도 기반 클러스터링)

참고 강의 링크
DBSCAN은 이론만 읽어서 잘 이해가 되지 않았다. 그래서 강의를 참고해 이해했는데, 훨씬 나았다.

  • DBSCAN은 어느 점을 기준으로 반경 X내에 점이 N개 이상 있으면 하나의 군집으로 인식하는 것
    이 알고리즘을 사용해 클러스터링 하기 위해선 ε, n의 두 가지 파라미터를 설정해야 한다.
    • 인접 벡터 : 현재 처리하고 있는 포인트에서 ε 반경을 갖는 원을 그렸을 때, 그 원 내부에 존재하는 점 벡터
    • core point: 자신을 포함한 인접 벡터의 수가 n개 이상인 점 벡터
    • border point: 가장 자리 벡터라고 생각하면 편하고, core point에 연결되어 있으나 자기 자신은 core point가 아닌 점 벡터
    • noise point: 다른 core point와 연결도 되지 않고, 자기 자신도 core point가 아닌 점 벡터

👉 DBSCAN 알고리즘은 주어진 데이터들에 대해 각각의 데이터들을 Core, Border, Noise로 분류하는 것이다.

헷갈리지 않아야 하는것
minPTS는 사용자가 사전에 지정!
자기 자신도 neighborhood에 포함!

DBSCAN 단점
1. DBSCAN은 밀도 반지름의 크기에 매우 민감하다.
2. 밀도가 높은 곳에 집중하기 때문에 밀도가 낮은 곳을 하나의 클러스터로 인식하지 못하고 노이즈로 처리해버리기도 한다.

🔎 계층적 군집

  • 가장 유사한 개체를 묶어나가는 과정을 반복해 원하는 갯수의 군집을 형성하는 방법
  • 개체간 거리를 계산한 후에 비슷한 개체를 군집화
  • 유사한 특성을 지닌 데이터를 그리디하게 묶어 이진 트리 형태로 만들어 가는 방법
    그리디: 현재 수준에서 주어진 조건을 가장 만족하은 후보자를 선택하는 것

병합적 군집 VS 분할적 군집
일반적으로 병합적 방법이 분할적 방법보다 직관적이고 간단하다. 또한 분할적 방법은 상위 클러스터에서 잘못된 결정이 하위 클러스터에 영향을 주는 정도가 크다는 단점이 있다. 이와 같은 이유로 분할적 군집보다 병합적 군집이 더 많이 사용되는 경향이 있다.

✏️ 병합적, 응집형 군집 (= 상향식 군집 )

  • 각각의 데이터에서 유사한 데이터끼리 군집으로 하나씩 묶어가는 방법

✔️ 군집간 거리 계산법

  1. 단일 연결법 : A 군집의 점과 B 군집의 점 사이의 가장 짧은 거리인 것을 선정

  2. 완전 연결법 : 두 군집 사이의 거리를 각 군집에서 하나씩 관측값을 뽑았을 때 데이터 사이의 거리가 최댓값인 것을 측정

  1. 평균 열결법 : 모든 항목에 대한 거리평균을 구하면서 군집화, A와 B 사이의 거리를 평균적으로 계산하는 것 (불필요한 계산이 많아짐)

  2. 중심 연결법 : 두 군집의 중심간의 거리를 측정, 두 군집이 결합할 때 새로운 군집의 평균은 가중평균을 통해 구해짐

  3. 와드 연결법 : 각 단계마다 어떤 목적함수에서 계산된 최적값을 기준으로 클러스터의 병합 여부를 결정
    EX) 목적함수 : 오차제곱합 (SSE)

✏️ 분할적, 분리형 군집( = 하향식 군집 )

  • 다양한 기준(평균값, 최빈값 등)을 이용하여 centroid를 수정해나가며 집단을 다시 재분류 하는 방법
  • 모든 데이터를 하나의 군집에 속한다하고, 점점 세부 군집으로 나가는 방법
profile
yunjin.log

0개의 댓글