본문 바로가기
Data/머신러닝+딥러닝

[혼공머신] 5주차_혼자 공부하는 머신러닝+딥러닝_Chap06

by 호호호호히히히히 2025. 2. 16.
728x90
반응형

 

셀프 반감금 5주차!

어머낫 어찌저찌 4주차 우수 학습자가 되었습니다. 나에게도 이런일이.

이 칭찬에 힘입어 다음주까지 열심히 아름다운 마무리를 진행 해 보겠습니다.

 


Chapter 06. 비지도 학습 | 비슷한 과일끼리 모으자!
  • 06-1 군집 알고리즘
  • 06-2 k-평균
  • 06-3 주성분 분석

학습 목표
  • 타깃이 없는 데이터를 사용하는 비지도 학습과 대표적인 알고리즘을 소개합니다.
  • 대표적인 군집 알고리즘인 k-평균과 DBSCAN을 배웁니다.
  • 대표적인 차원 축소 알고리즘인 주성분 분석(PCA)을 배웁니다.

06-1 군집 알고리즘
  • 비지도 학습, 히스토그램, 군집
06-2 k-평균
  • k-평균, 클러스터 중심, 엘보우 방법
06-3 주성분 분석
  • 차원 축소, 주성분 분석(PCA), 설명된 분산

 

 


k-평균 알고리즘이란
  • K-평균(K-Means) 알고리즘
    • 비슷한 데이터끼리 묶어주는 군집화(Clustering) 알고리즘으로 평균값을 자동으로 찾아줍니다.
    • 이 평균값은 클러스터의 중심에 위치하기 때문에 클러스터 중심 또는 센트로이드라고 부릅니다.
    • 비슷한 것들끼리 묶어주는 방법입니다.
k-평균 알고리즘 작동 방식 설명하기

 

1. 군집의 개수(K)를 정하기

  • 데이터를 몇 개의 그룹(클러스터)으로 나눌지 결정합니다. (예: K=4이면 4개의 그룹으로 분류)

2. 랜덤하게 K개의 중심점(centroid) 설정 (K개의 클러스터 중심을 정하기)

  • 데이터에서 무작위로 K개의 중심점을 선택합니다. 이때 첫 중심점과 순서에 별도 의미는 없습니다.

3. 각 데이터를 가장 가까운 중심점에 할당

  • 각 샘플에서 가장 가까운 중심점(클러스터 중심)을 찾아 샘플로 지정합니다.

4. 중심점 업데이트

  • 각 그룹(클러스터)의 평균을 계산하여 중심점을 다시 설정하고 묶습니다.

5. 이전 중심점과 차이가 없을 때까지 반복

  • 새로운 중심점이 더 이상 움직이지 않을 때 까지 3번으로 돌아가 반복합니다.

*하기 순서도에 헷갈리는 내용이 있어 추가합니다. '데이터 할당'은 새로운 데이터가 할당되는 것이 아니라 중심점에 따른 데이터 묶음 재설정입니다.



예시

유튜브 이용자 분류를 예시로 들어보겠습니다.

  1. K = 4
    • "동물 영상을 주로 보는 그룹", "영화 리뷰 영상을 주로 보는 그룹", "정치적 이슈 영상을 자주 보는 그룹", "경제, 재태크 영상을 자주 보는 그룹"
  2. 10,000명의 대상으로 랜덤하게 그룹을 만듭니다.
  3. 각 그룹내의 중심점을 설정합니다.
  4. 그룹 내 평균값을 찾아 이동합니다.
  5. 가장 가까운 샘플들을 다시 클러스터로 묶습니다.
  6. 4, 5를 반복하여 점점 비슷한 영상을 보는 이용자들이 묶이도록 조정합니다.
  7. 각 그룹이 안정되어 중심점이 움직이지 않을 경우 분류를 완료합니다.
샘플 코드
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 샘플 데이터 생성
np.random.seed(0)
X = np.random.rand(100, 2)  # 100개의 2차원 좌표 데이터

# K-평균 알고리즘 적용 (K=3)
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)

# 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis', alpha=0.7)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], 
            color='red', marker='X', s=200, label='Centroids')
plt.legend()
plt.title("K-평균 알고리즘 결과 (K=3)")
plt.show()

 

📌 활용 범위
  1. 고객 마케팅
  2. 금융 거래 이상 탐지
  3. 의료 데이터 분석

Ch.06(06-3) 확인 문제 풀고, 풀이 과정 정리하기
반응형

댓글