에이블스쿨 6기 DX 트랙/일일 복습

머신러닝 - 비지도 학습 1일차

d061120 2024. 10. 21. 21:20

1. 비지도 학습 개요

- 전체 프로세스(CRISP-DM)

CRISP-DM Process

  1. 업무 이해
    • 비즈니스 관점에서 프로젝트의 목적과 요구사항을 이해하는 단계
    • 업무 목적 파악, 상황 파악, 데이터 마이닝 목표 설정, 프로젝트 계획 수립
  2. 데이터 이해
    • 분석을 위한 데이터를 수집하고 데이터 속성을 이해하는 단계
    • 초기 데이터 수집, 데이터 기술 분석, 데이터 탐색, 데이터 품질 확인
  3. 데이터 준비
    • 분석을 위해 수집된 데이터에서 분석기법에 적합한 데이터를 편성하는 단계
      (많은 시간이 소요될 수 있음)
    • 분석용 데이터셋 선택, 데이터 정제, 분석용 데이터셋 편성, 데이터 통합
  4. 모델링
    • 다양한 모델링 기법과 알고리즘을 선택하고 모델링 과정에서 사용되는 파라미터를 최적화하는 단계
    • 모델링 기법 선택, 모델 테스트 계획 설계, 모델 작성, 모델 평가
  5. 평가
    • 모델링 결과가 프로젝트 목적에 부합하는지 평가하는 단계
    • 분석 결과 평가, 모델링 과정 평가, 모델 적용성 평가
  6. 전개
    • 모델링과 평가 단계를 통해 완성된 모델을 실무에 적용하기 위한 계획을 수립하는 단계
    • 모델 모니터링, 모델 유지보수 계획 마련, 프로젝트 마무리

 

- 비지도 학습 특징

  • 학습 시 x만 사용
    • x 안에서 패턴 인식 문제
    • 지도 학습에서 target으로 사용했던 y 없이 학습하여 알아서 예측, 추론 진행
  • 후속 작업 필요(비지도 학습으로 끝나지 않음)
    • [차원축소] 고차원 데이터를 축소하여 새로운 feature를 생성 ➔ 시각화, 지도학습 연계
    • [클러스터링] 고객별 군집 생성 ➔ 고객 집단의 공통 특성 도출을 위한 추가 분석
    • [이상탐지] 정상 데이터 범위 지정 ➔ 범위 밖 데이터를 이상치로 판정

 

2. 차원 축소

2.1. 차원의 저주

- 차원(dimension)

  • 차원의 수 = 변수의 수

- 다양한 변수를 고려 ➔ 모델 성능 향상

  • 예) 고객의 건강 상태 분석
    • 키, 몸무게 (2차원) ➔ 기본적인 분석
    • + 혈압, 체성분 지수, 나이 (5차원) ➔ 더 구체적인 건강상태 분석 가능

- 하지만 변수가 너무 많아지면?

  • 크게 필요하지 데이터가 않은 데이터를 포함할 경우
    • 모델이 학습하는 데에 오히려 방해가 될 수도 있음
    • 또는 불필요하게 복잡한 모델이 생성됨

  • 데이터가 매우 희박해짐
  • 따라서 모델의 학습이 적절하게 되지 않을 가능성이 높아짐(이것을 차원의 저주라고 함)

- 고차원 데이터 문제 해결 방안

  • 행 늘리기 ➔ 데이터 늘리기
  • 열 줄이기 ➔ 차원 축소

- 차원 축소

  • 다수의 feature (고차원) ➔ 새로운 소수의 feature (저차원)로 축소
  • 기존 특성을 최대한 유지
  • 대표적인 방법: 주성분 분석(PCA), t-SNE

 

2.2. 주성분 분석(PCA)

- 주성분 분석(PCA Principal Component Analysis)

  • 변수(차원)의 수보다 적은 저차원의 평면으로 투영(Projection)
    (고교 수학시간에 배운 정사영을 떠올리면 이해가 빠르다.)

➔ 평면1, 평면2 중 럭비공의 특징이 더 잘 반영된 것은 평면1이다.

 

- 어떤 평면으로 투영시킬 것인가?

  • 정보의 특성을 최대한 유지하면서(분산을 최대한 유지) 차원을 축소한다.

- PCA 절차

  1. 학습 데이터셋에서 분산이 최대인 첫번째 축(axis)을 찾음.
  2. 첫번째 축과 직교(orthogonal)하면서 분산이 최대인 두 번째 축을 찾음.
  3. 첫 번째 축과 두 번째 축에 직교하고 분산이 최대인 세 번째 축을 찾음.
  4. ①~③과 같은 방법으로 데이터셋의 차원 만큼의 축을 찾음.

- 주성분 분석을 수행하면

  • 각 축의 단위벡터를 주성분이라고 부름
  • 각 축 별 투영된 값이 저장됨

2.2.1. PCA 사용하기

- 전처리: 정규화(scaling) 필요

  • 주성분 결정시, 분산 비교(크기 비교)
  • 스케일링 없이 PCA를 수행 ➔ 스케일이 가장 큰 변수에 영향을 가장 많이 받게 됨
# 주성분을 몇개로 할지 결정(최대값: 전체 feature 수)
n = x_train.shape[1]

# 주성분 분석 선언
pca = PCA(n_components=n)

# 만들고, 적용하기
x_train_pc = pca.fit_transform(x_train)
x_val_pc = pca.transform(x_val)

 

- PCA 문법

  • 선언: 주성분의 개수(n) 지정
    • 1 ≤ n ≤ feature의 수
    • 생성 후 조정 가능
  • 적용
    • x_train으로 fit & transform
    • x_val 데이터는 transform
    • 결과는 numpy array가 됨

- 주성분의 개수 정하기

  • 주성분의 개수를 늘려가면서 원본 데이터 분산과 비교
# 주성분 개수에 따른 시각화
plt.plot(range(1,n+1), pca.explained_variance_ratio_, marker = '.')
plt.xlabel('No. of PC')
plt.grid()
plt.show()

.explained_variance_ratio_ 원본데이터의 전체 분산 대비 누적 주성분의 차이 비율

 

  • 위 그래프의 형태가 팔꿈치의 형상과 닮아 'Elbow Method'라고도 부른다.

- Elbow Method(팔꿈치 지점 근방에서 적절한 값을 찾아라)

Elbow Method

※ X = 3 지점까지만 의미 있는 y값 변화가 이루어지고 그 이후로는 변화량이 미미하다.

  • X축의 값이 계속 증가해도, y축의 값의 개선 폭이 줄어 드는 지점
  • Trade-Off 관계일 때, 적절한 지점을 찾기 위한 휴리스틱 방법

 

2.3. t-SNE

- PCA의 단점

  • PCA → 선형 축소 방식
    • 분산의 크기만 고려한 선형축소방식
    • 저차원에서 특징을 잘 담아내지 못하는 경우 발생

 

- t-SNE

  • 원본의 특성을 최대한 살리면서 축소하는 방법 필요
    1. 원본에서 가까운 거리의 점들은 ➔ 원본의 유사도 맵 생성
    2. 축소한 후에도 가깝게 만들자. ➔ 축소된 데이터의 유사도 맵

  • 위 방법을 통해 두 맵의 오차를 줄이는 방향으로 축소된 데이터 조정이 가능하다.

- t-SNE 사용하기

  • 전처리: 정규화(scaling)
    • 꼭 필요한 것은 아니지만, 해주는 것을 권장
  • 학습
    • 고차원을 2 ~ 3 차원으로 축소
    • 주로 데이터 시각화를 위해 사용됨
    • 학습하는데 오래 걸림
from sklearn.manifold import TSNE

# 2차원으로 축소하기
tsne = TSNE(n_components = 2, random_state=20)
x_tsne = tsne.fit_transform(x)

# 사용의 편리함을 위해 DataFrame으로 변환
x_tsne = pd.DataFrame(x_tsne, columns = ['T1','T2'])

# 확인
x_tsne.shape


# 출력
# (569, 2)

 

요약: 차원 축소

Focus - 차원을 축소하여 새로운 feature 만들기
- 활용
  - 고차원 데이터 시각화
  - 지도학습으로 연계
PCA - 고차원의 특징(분산)을 최대한 유지
- 선형 방식
- Feature의 수 만큼 추출 가능
- 지도 학습에 유리한 방식
t-SNE - 고차원의 특징(유사도)를 최대한 유지
- 비선형 방식
- 2~3개로 축소 ➔ 시각화에 자주 사용됨

'에이블스쿨 6기 DX 트랙 > 일일 복습' 카테고리의 다른 글

딥러닝 4일차  (0) 2024.11.04
딥러닝 1일차  (0) 2024.10.30
성능 평가  (0) 2024.10.17
데이터 분석 - 이변량: 범주 vs 숫자  (0) 2024.10.04
DAY 08. 데이터프레임 조회  (0) 2024.09.20