본문 바로가기
AI/Machine Learning

[ML] 머신러닝 모델(결정 트리 학습, K-근접 이웃)

by 안녕나는현서 2021. 5. 11.
728x90

- 결정 트리 학습(Decision tree)

  • 결과에 대한 설명이 중요할 때 사용
  • 훈련 데이터에 있는 변수, 즉 특성을 기반으로 새로운 샘플의 클래스 레이블을 추정할 수 있도록 일련의 질문 학습
  • 범주형 변수, 실수형 변수
  • 트리의 루트(root)에서부터 시작해 정보 이득(Information Gain, IG)이란 값이 최대가 되는 특성으로 데이터를 나눔
  • 위의 과정을 리프 노드(leaf node)가 순수해질 때까지(불순도가 0에 수렴할 때 까지, 하나의 클래스만을 가진 노드가 될 때까지) 모든 자식 노드에서 분할 작업 반복
  • 분할 작업을 계속 반복하여 깊은 트리가 만들어지는데, 이는 과적합 우려 → 트리 최대의 깊이 제한(트리 가지치기 - pruning)
  • 목적함수의 목적 : 가장 정보가 풍부한 특성으로 노드를 나누기 위함, 트리 알고리즘으로 최적화 → 정보이득 최대화

(부모 모드의 불순도) - (자식 노드 불순도의 합) → 자식 노드의 불순도가 낮을 수록 정보 이득은 커짐

  • 구현을 간단히 하고 탐색공간을 줄이기 위해 '이진 결정 트리' 사용 : 부모 노드를 D left, D right로 나눔

  • 불순도 지표
    1. 지니 불순도(Gini impurity)
      • 잘못 분류될 확률을 최소화하기 위한 기준
      • 클래스가 완벽하게 섞여있을 때, 최댓값
      • 가지 치기 수준을 바꿔가며 튜닝
    2. 엔트로피(entropy)
      • 한 노드의 모든 데이터가 같은 클래스라면 엔트로피는 0
      • 반대로 클래스 분포가 균등하다면 엔트로피는 1
      • 트리의 상호 의존 정보 최대화
    3. 분류 오차(classification error)
      • 두 클래스가 같은 비율일 때, 최댓값 0.5
      • 노드의 클래스 확률 변화에 둔감

[지니 불순도] c : class
[엔트로피] p(i t) : 특정 노드 t에서 클래스 i에 속한 데이터 비율
[분류 오차] max{p(i t)} : 둘 중 큰 값에 대한 비율

  • 지니 불순도 활용하여 정보 이득 계산해보기

 

 

- K-근접 이웃(K-Nearest Neighbor, KNN)

  • 지금까지의 알고리즘은 올바른 매개변수를 찾기 위한 학습과정, KNN은 훈련과정을 진행하지 않음
  • 학습을 진행하는 알고리즘의 경우
    1. 데이터 정제
    2. 모델 학습 과정 진행
    3. 최종 하이퍼 파라미터 수정
  • 하지만 KNN은 위와 같은 과정을 거치지 않으며 거대한 용량의 학습 데이터가 필요하지 않음
  • 학습이라는 개념이 없기 때문에 알고리즘을 실행할 때마다 모든 학습 데이터를 통해 분류 진행 → 매번 실행할 때 마다 학습 데이터 필요
  • 고차원의 데이터로 실험을 진행한다면 계산 복잡도가 훈련 데이터의 개수에 비례하여 증가
  • 데이터 정제만 잘해준다면 학습과정이 없기 때문에 빠르게 결과를 살펴볼 수 있다는 장점이 존재
  • KNN 알고리즘 수행 과정
    1. 숫자 K와 거리 측정 기준을 선택(일반적으로 유클리디안 거리 측정 방식)
    2. 분류하려는 미지의 데이터에서 K개의 최근접 이웃을 찾음
    3. 다수결 투표를 진행, 투표 결과에 따라 미지의 데이터 클래스 레이블을 할당
  • 과적합과 과소적합 사이의 올바른 균형을 잡기 위한 K값 설정이 매우 중요!
  • 차원의 저주 : 고정된 크기의 훈련 데이터셋 차원이 늘어남에 따라 특성 공간이 점점 희소해지는 현상 → 해결을 위해 올바른 변수의 선택, 차원 축소 기법 사용

728x90

댓글