kyejin0412 님의 블로그

Week 9-1 머신러닝 비지도학습 - 클러스터링 본문

내일배움캠프-데이터분석

Week 9-1 머신러닝 비지도학습 - 클러스터링

kyejin0412 2025. 12. 15. 21:12

 

오늘은 비지도학습을 배웠다.

내일이 머신러닝 세션 마지막 날이다. 다행히 머신러닝은 이해하기가 나쁘지 않았더 것 같다.

통계가 문제...!! 화,수 동안 머신러닝과 통계를 복습할 생각이다. 

 


 

비지도학습( = 군집분석 = 클러스터링)

  • 라벨 ? 정답이라고 생각하면 됨
  • 라벨이 있다 -> 정답을 안다 -> 지도학습 : 이것도 데이터 분석가의 주관이 필요하다. precision을 더 중요시할지, recall을 더 중요시 할지 등등
  • 라벨이 없다 -> 정답을 모른다 -> 비지도학습 : 정답/기준을 찾아가는 것. 기준이 없기 때무네 데이터 분석가의 주관이 "더" 확실하게 필요하다.

 

클러스터링

클러스터링=군집분석=비지도학습 : 비슷한 패턴을 갖고있는 그룹으로 그룹화하는 것.

클러스터 : 하나의 그룹

 

 

클러스터링 프로세스

  1. 기간 선정
    • 최소 3개월 이상의 데이터
    • 패턴을 찾을 수 있을 만한 기간, 회사나 도메인마다 기준이 다름
    • 새로운 데이터가 들어왔을 때, 알맞은 군집에 배치
  2. 이상치 기준선정 및 제외
    • Z-score : 표준점수. 평균으로부터 얼마나 떨어져 있는가? +- 3 이상이면 보통 이상치라고 간주.
    • IQR : 사분위수에 기반한 범위를 넘어가는 값들을 이상치로 간주.
    • isolation Tree : 비지도학습에서 사용하는 random forest! 이상치는 더 가지칠 수 있는 질문이 없어서 짧은 경로길이를 가진다.
    • DBScan : 각 데이터의 밀도를 기반으로 군집을 형성시키고, 설정된 거리 내에 설정된 최소 개수의 다른 포인트가 있을 경우, 해당 포인트는 핵심 포인트로 간주, 이와 연결되지 않은 값들은 이상치로 간주
  3. 표준화 또는 정규화
    • 비지도학습은 표준화가 필수이다. standard scale(표준화)은 필수, minmax scale(정규화)은 옵션!
    • 표준화 : 평균을 0, 표준편차를 1로 변환. 이상치가 그대로 있고 폭이 변하지 않음.
    • 정규화 : 모든 데이터를 0과 1사이에 배치. 폭이 크게 변할 수 있어 이상치가 보존되지 않음.
  4. 차원 축소(PCA)
    • 많은 컬럼으로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것
    • 주성분(주요성분, 주요기준)이 없기 때문에 머신러닝 전에 사람이 만들어줘야함
    • 주성분을 뭐로 할지, 주성분을 몇 개로 할지, 군집을 몇 개로 할지 모두 사람이 정함
    • 컬럼이 4차원 이상(=컬럼이 4개 이상)이면 사람이 보기 어렵기 때문에 차원 축소(=컬럼 줄이기)
    • 컬럼 개수보다 주성분 개수가 많아질 수 없음 (차원축소 자체가 컬럼 개수를 줄이기 위해 하는 것임!)
    • 적은 차원으로 많은 것을 설명할 수 있는 게 좋은 거임
    • 컬럼이 너무 많기 때문에 학습이 어렵고 더 좋은 특징만 가지고 사용하겠다는 것
    • 비지도학습하려면 모두 숫자여야 함. 따라서 범주형 데이터를 머신러닝하려면 인코딩(원핫, 라벨)을 해야 함. 숫자형(연속형)도 가능함.
    • 차원 축소 목적
      • 시각화: 데이터분석가가 PCA 의 결과를 눈으로 확인하기 위해서는, 축소된 차원의 개수를 2 또는 3으로 설정해야함
      • Clustering 성능향상: 축소된 차원의 개수를 4 이상으로 하거나, 설명 분산 비율 (explained variance ratio) 를 기준으로 설정할 수 있음
    • t-SNE : 고차원을 2 또는 3차원으로 축소하는 비선형 기법
  5. K값(군집개수), 초기 피처(컬럼) 선정
    • 초기 피처는 모드 컬럼으로 설정하고 점차 조정해 나간다. 
    • 실루엣 계수 : 각 군집들이 얼마나 효율적으로 분리되어 있는지 나타냄. "-1 또는 1에 가까울 수록 잘 분리되었다". 그런데 2로 설정하면 모든 데이터가 잘 나오기 때문에 2는 확인만 하기.
    • 실루엣 계수
    • 엘보우 포인트 : 감소율이 급격하게 줄어드는 곳. 알고리즘이 군집을 나누는 시간까지 고려하여 가장 효율적인 군집 개수를 반환. 참고용
    • elbow-point
    • distance map : 군집 간 거리 시각화. 참고용. 겹치는 게 있는지 확인! 겹치는 게 없어야 좋은 것.
    • distance map
  6. k-means clustering 시행
    • 데이터를 거리기반 K개의 군집(Cluster)으로 묶는(Clustering) 알고리즘
      1. 군집 수 K 설정
      2. 초기 중심점 K개 설정
      3. 중심점을 기준으로 data point 들의 거리를 비교하고, 더 가까운 중심점에 군집할당
      4. 할당된 점들의 중심점 위치 조정됨
      5. 중심점의 위치가 변하지 않을때까지 반복
  7. 군집 분포 확인
    • 군집별 특성이 명확하게 나왔는지
    • 각각의 data point가 충돌하지 않았는지
  8. 2~7번 반복하면서 최적의 결과 도출
    • 지도학습은 기준이 있어서 그냥 컬럼을 넣어서 코드 돌리면 됨.
    • 비지도학습은 어떤 거로 머신러닝하는지조차 모르는 상태. 기준을 모름! --> 중요한 특성, 속성을 찾아서 기준을 만들고(=PCA, 차원축소) 머신러닝해야함. PCA 필수!
    • 중요한 속성 개수 -> 내가 정함. "중요한 속성은  n개로 추려줘."
    • 그룹 몇개로 나눌건지? -> 내가 정함. "그룹은 n개로 나눠줘."
    • 다 내가 정해야하고 정답도 없음. 그래서 비지도학습이 끝이 없고 어렵고 힘듦.
    • 컬럼값이 이진형이면 안된다.


  9. 모델링
  10. 데이터 적재 및 자동화 설정
  11. 인사이트 도출