지도학습의 대표적인 유형으로, 데이터의 피처값과 레이블을 학습해 새로운 데이터의 레이블을 학습하고 예측, 판별하는 것이 분류(classification)이다.
분류 알고리즘 유형
이 장에서는 앙상블을 집중적으로 다룰 것이다.
앙상블은 서로 다른 또는 같은 알고리즘을 단순히 결합한 형태도 있으나, 일반적으로 배깅(bagging)과 부스팅(boosting) 방식으로 나뉜다.
특히 배깅의 대표 방식인 랜덤 포레스트(Random Forest), 그래디언트 부스트의 최신 기법인 XgBoost와 LightGBM 그리고 앙상블의 앙상블이라 불리는 스태킹(Stacking)을 알본다.
결정 트리 : 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내는 ML 알고리즘
트리의 분할은 적고 정확도는 높이기 위해 데이터의 균일도가 중요하다.
이 균일도를 측정하는 대표적인 방법으로 엔트로피를 이용한 정보 이득(information gain) 지수와 지니 계수가 있다.
사이킷런에서 구현돼 있는 DecisionTreeClassifier를 기본으로 지니 계수를 이용해 데이터 세트를 분할한다.
결정 트리 모델의 특징
사이킷런에서는 DecisionTreeClassifier와 DecisionTreeRegressor (이름에서 알 수 있겠다만, 당연히 각각 분류와 회귀를 위한 클래스이다.) CART기반의 알고리즘을 사용한다. 파라미터 설명은 (p.186)에 있다.
시각화는 GraphViz라는 패키지로 시각화할 수 있다. (p.188)
사용자 행동 인식 데이터 실슴 (p.200)
앙상블 학습 : 여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법
대표적인 앙상블 학습 유형
보팅 유형
보팅 분류기 (Voting Classifier) 실습 (p.213)
랜덤 포레스트 : 여러개의 결정 트리 분류기가 전체 데이터에서 각자의 데이터를 샘플링해 개별저긍로 학습을 수행, 모든 분류기가 보팅을 통해 예측 하는 방식이다.
부트스트래핑(Bootstraping) : 여러 개의 데이터 세트를 중첩되게 분리하는 기법, bagging 은 bootstrap aggragation의 줄임말이다.
램덤 포레스트 실습 (p.219)
부스팅의 대표적인 구현은 AdaBoost(Adaptive boosing)와 그래디언트 부스트가 있다.
에이다 부스트는 개별 약한 학습기를 사용해 가중치를 구한후 각각의 가중치를 결합해서 예측을 수행하는 방식이다.
GBM(Gradien Boost Machine)은 에이다 부스트와 비슷하나 경사 하강법을 쓴다는 점에서 구별된다. Loss는 이다.
get_human_dataset() 함수로 데이터 세트로 실습 (p.223)
XGBoost는 GBM의 단점인 느린 수행 시간 및 과적합 규제(Regularization) 부재 등의 문제를 해결한 모델이다. 또한 병렬 학습 똫나 가능하다.
XGBoost 설치 및 실습 (p.227)
LightGBM은 XGBoost 보다도 수행시간을 줄였다는 점, 메모리 사용도 적다는 점이 장점이다. XGBoost에서 GridSearchCV로 하이퍼 파라미터 튜닝을 수행하다 보면 느리다는 것을 알 것이다.
단점으로는 적은 데이터 세트를 적용한 경우 과적합 발생이 쉽다는 점이다.
다른 GBM 계열의 트리 분할 방식과는 다르게 리프 트리 분할(leaf wise)을 사용한다. 보통은 균형 트리 분할(level wise)
LightBGM 설치 및 실슴 (p.247)
Grid Search의 특성상 늘어나는 파라미터의 최적화 시간이 기하급수적으로 늘어난다는 단점이 있다. 이를 보완하기 위한 베이지안 최적화 기법이 있다.
베이지안 최적화 : 목적 함수 식을 제대로 알 수 없는 블랙 박스 형태의 함수에서 최대 또는 최소 함수 반환 값을 만드는 최적 입력값을 가능한 적은 시도를 통해 빠르고 효과적으로 찾아주는 방식이다.
베이지안 최적화를 구성하는 두 가지 중요 요소는 대체 모델(surrogate model)과 획득 함수(Acquisition Function)이다.
대체 모델은 최적 함수를 추정할 때 다양한 알고리즘을 사용할 수 있는데 일반적으로 가우시안 프로세스를 적용한다. 하지만 HyperOpt는 트리 파르젠 Estimator(TPE, Tree-structure Parzen Estimator)를 사용한다.
HyperOpt 설치 및 실습 (p.257)
캐글 산탄데르 고객 만족 예측 (p.267)
캐글 신용카드 사기 검출 (p.279)
스태킹 : 개별적인 여러 알고리즘을 서로 결합하고 에측한 데이터를 기반으로 다시 예측을 수행한다는 것이다.
스태킹 모델을 두 종류의 모델이 필요하다. 첫 번째는 개별적인 기반 모델, 두 번째는 이 개별 기반 모델의 예측 데이터를 학습 데이터로 만들어서 학습하는 최종 메타 모델이다.
기본 스태킹 모델 실습(p.297)
CV 세트 기반의 스태킹 : 과적합을 개선하기 위해 최종 메타 모델을 위한 데이터 세트를 만들 때 교차 검증 기반으로 예측된 결과 데이터 세트를 이용한다.
CV 세트 기반 스태킹 실습 (p.303)
사실상 ML의 절반인 분류를 끝냈다. 생각했던 것 보다도 쓰임이 많다.