XGBoost(eXtra Gradient Boost) 기존 GBM보다 빠르게 학습을 완료할 수 있음 분류, 회귀에서 뛰어난 예측 성능을 보임 XGBoost는 자체에 과적합 규제 기능이 있어서 강한 내구성을 가짐 tree_pruning(가지치기)로 더 이상 긍정 이득이 없는 분할을 가지치기해서 분할 수를 줄임 반복 수행 시마다 내부적으로 교차검증을 수행, 최적화된 교차검증 횟수를 가질 수 있음 결손값을 자체 처리할 수 있음 XGBoost 패키지의 사이킷런 wrapper class는 XGBClassifier와 XGBRegressor를 제공 ! 파이썬 래퍼 XGBoost 모듈: 초기의 독자적인 XGBoost 전용 파이썬 패키지 ! 사이킷런 래퍼 XGBoost 모듈: 사이킷런과 연동되는 모듈 파이썬 래퍼 XGB..
GBM(Gradient Boosting Machine) 부스팅 알고리즘은 여러 개의 약한 학습기를 순차적으로 학습-예측하면서 잘못 예측한 데이터에 가중치를 부여하고 오류를 개선해 나가면서 학습하는 방식 대표적으로 AdaBoost와 GBM이 있음 AdaBoost 에이다부스트 맨 왼쪽과 같이 +와 -로 된 피처 데이터셋이 있다면 step1은 첫 번째 약한 학습기가 분류 기준1으로 +와 -를 분류한 것, 동그라미+가 잘못 분류된 애들 step2에서 이 오류데이터에 가중치값 부여(0.3), 크기가 커진 + step3에서 두 번째 약한 학습기가 분류 기준2로 +와 -를 분류, 동그라미-는 잘못 분류된 애들 step4에서 이 오류데이터에 더 큰 가중치 부여(0.5), 크기가 커진 - step5에서 세 번째 약한 학..
사용자 행동 인식 예측 분류 결정 트리를 이용하여 UCI Machine Learning Repository에서 제공하는 사용자 행동 인식 데이터셋에 대한 예측 분류를 해보자 해당 데이터는 30명에게 스마트폰 센서를 장착한 뒤 사람의 동작과 관련된 여러가지 피처를 수집한 데이터이다 https://archive.ics.uci.edu/ml/datasets/human+activity+recognition+using+smartphones 피처는 모두 561개, 공백으로 분리되어 있음 In [2]: from google.colab import files uploaded = files.upload() Upload widget is only available when the cell has been executed i..
랜덤 포레스트 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가짐 기반 알고리즘은 결정 트리, 그래서 쉽고 직관적인 장점을 그대로 가짐 여러 개의 결정 트리 classifier가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정을 하게 됨 랜덤 포레스트는 개별 분류기의 기반은 결정 트리이지만 개별 트리가 학습하는 데이터셋은 일부가 중첩되게 샘플링되었음 >> 부트스트래핑 분할 방식 서브세트 데이터는 부트스트래핑으로 임의로 만들어짐 서브세트 데이터 건수는 전체 데이터 건수와 동일하지만, 개별 데이터가 중첩됨 사이킷런은 RandomForestClassifier 클래스를 지원 In [1]: from google.colab impor..
앙상블 학습 앙상블 기법: 여러 개의 분류기(classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법 대부분의 정형데이터 분류 시에는 앙상블이 뛰어난 성능을 나타내고 있음 대표적으로 랜덤포레스트와 그라디언트 부스팅 알고리즘이 있음 최신 기법으로는 XGBoost(eXtra Gradiant Boost)와 LightGBM(Light Gradiant Boost), Stacking이 주목 받음 보팅(Voting): 일반적으로 서로 다른 알고리즘을 가진 분류기를 결합하는 것 배깅(Bagging): 각각의 분류기가 모두 같은 유형의 알고리즘 기반이지만, 데이터 샘플링을 서로 다르게 가져가면서 학습을 수행하는 것 >> 랜덤 포레스트 붓스트래핑(bootstrapping): 개별 cl..
결정 트리 과적합 Overfitting 결정 트리가 어떻게 학습데이터를 분할해 예측을 수행하는지와 이로 인한 과적합 문제를 시각화하여 알아보자 사이킷런이 제공하는 make_classificaition() 함수를 이용해서 임의의 데이터셋 만들기 make_classification 호출 시 반환되는 객체는 피처 데이터셋과 클래스 레이블 데이터셋임 2개의 피처가 3가지 유형의 클래스값을 가지는 데이터셋 만들어보자 In [ ]: from sklearn.datasets import make_classification import matplotlib.pyplot as plt plt.title('3 Class values with 2 Features Sample data creation') #2차원 시각화를 위해서 ..