제로베이스_Machine Learning (7)

KulangK·2023년 8월 20일

Machine Learning

목록 보기
7/13
post-thumbnail

📄 목차

  1. Boosting
    • Boosting이란?
      • wine data 실습
    • kNN
      • iris data 실습
    • GBM, XGBoost, LGBM
      • HAR 데이터 실습

1. Boosting

Boosting이란?

  • 부스팅: 여러 개의 (상대적으로 약한) 분류기가 순차적으로 학습을 하며, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해 다음 분류기가 가중치를 인가해서 학습을 이어 진행하는 방식
    • 예측 성능이 뛰어나서 앙상블 학습을 주도하고 있음
    • Gradientboost, XGBoost, LightGBM...
  • 배깅 vs 부스팅
    • 배깅: 한 번에 병렬적으로 결과를 얻음 (전체 데이터셋을 이용하던, 해당 데이터를 부트스트래핑하던... 한 번에 다양한/다수의 분류기가 작용
    • 부스팅: 순차적으로 분류기를 적용하여 학습결과 개선
  • 예시: Adaboost (decision tree 기반)
    • 답이 0과 1로 정해져있다고 가정
    • 최초 0에 대해 분류
    • 틀린/놓친 0에 대해 가중치 부여 후 분류
    • 틀린/놓친 1에 대해 가중치 부여 후 분류
    • 최종적으로 위 decision boundaries 모두 합침

  • 기법들
    • GBM (Gradient Boosting Machine)
      • AdaBoost 기법과 비슷하지만, 가중치 업데이트 간 경사하강법 (gradient descent) 사용
    • XGBoost (eXtra Gradient Boost)
      • GBM에서 PC 파워를 효율적으로 사용하기 위한 다양한 기법 채택 (빠른 속도와 효율)
    • LightGBM
      • XGBoost보다 빠른 속도

Wine data 실습

  1. 데이터 읽기 / 전 처리

  2. 데이터 분석

  3. 다양한 모델 적용 후 특성 값 비교


kNN

  • k Nearest Neighbor
    • 새로운 데이터가 추가 되었을 때, 기존 데이터의 그룹 중 어떤 그룹에 속하는지 분류하는 것
      • kNN은 가까운 데이터가 많은 그룹에 속하게 되는 방식
    • k => 몇 번째 가까운 데이터까지 볼 것인가를 정하는 수치

  • 유의사항
    • 당연히 k 값에 따라 분류 결과가 달라짐
    • 단위 / 축 범위에 따라 바뀔 수 있으므로 축을 표준화 해주는 방식이 필요한 경우도 있음
  • 장점: 실시간 예측을 위한 학습이 필요 없음 (속도 우세)
  • 단점: 고차원 데이터 / 데이터 수가 많은 경우 적합하지 않음

Iris data 실습

  1. 데이터 읽기

  2. 데이터 분할 및 학습

  3. 결과 확인


GBM, XGBoost, LGBM

  • GBM:
    • 여러 개의 상대적으로 약한 분류기를 이용하여 순차적으로 학습 / 예측하며 잘못 예측한 데이터에 가중치를 부여해 오류를 개선하는 방식
    • 경사하강법 이용 (Gradient Descent)
  • XGBoost:
    • 트리 기반의 앙상블 학습에서 각광받는 알고리즘 중 하나
    • GBM 기반의 알고리즘, 다양한 규제를 통해 느린 속도 해결
      (병렬 학습이 가능하도록 설계됨)
    • 반복 수행 시마다 내부적으로 학습데이터와 검증데이터 교차 검증 수행
    • 교차 검증을 통해 최적화되면 반복을 중단하는 조기 중단 기능 有
  • LightGBM:
    • XGBoost와 함께 부스팅 계열에서 가장 각광받는 알고리즘
    • 속도가 다른 부스팅에 비해 월등히 빠름
    • 그러나 적은 숫자의 데이터에 적합하지 않음 (통상 과적합을 피하기 위해 1만 건 이상의 데이터 필요)
    • GPU 버전도 존재

HAR 데이터 실습

  • 순서: 데이터 읽기 => GBM 사용 => XGBoost 사용 => LGBM 사용
  1. 데이터 읽기

  1. GBM 사용해보기

  1. XGBoost 사용해보기

    • 조기 종료 조건을 달아주면 정확도는 7~8% 줄지만, 속도는 절반에 가깝게 줄어듦
    • 유의사항: 최신버전은 분류하는 결과값이 0부터 존재해야됨 (1~6 X, 0~5 O) >> 이 경우 label encoder 사용하여 변형하면 됨.
  1. LGBM 사용해보기

    • LGBM은 early_stopping_round를 classifier 내부에서 결정함. (fit 단계에서 결정하는 XGBoost와 다름)
profile
새싹 데이터 분석가 https://github.com/KulangK

0개의 댓글