한빛미디어 도서 <혼자 공부하는 머신러닝+딥러닝>의 전개를 따른 내용이다.
챕터 5, 트리 알고리즘
* 성능이 좋고 이해하기 쉬운 트리 알고리즘 배우기
* 알고리즘 성능을 최대화하기 위한 하이퍼파라미터 튜닝 실습
* 여러 트리를 합쳐 일반화 성능을 높일 수 있는 앙상블 모델 배우기
호...!! 앙상블 모델은 데이터대회에서 다른 팀 선배들이 활용한 모델인데.....!
이제 나도 5장에서 앙상블을 공부하게 된다 ㅇㅅㅇ!!!! 몰까?
트리의 앙상블
*앙상블: 여러 머신러닝 모델을 연결하여 개선된 모델을 만드는 기법
이 포스팅에서는, "결정 트리 모델"의 앙상블을 학습한다.
오늘 공부할 앙상블 모델은 총 4가지이다.
1. 랜덤 포레스트
2. 엑스트라 트리
3. 그레이디언트 부스팅
4. 히스토그램 기반 그레이디언트 부스팅
각 모델의 특징을 공부하고, 이에 따라서 특성중요도, 교차검증 점수가 어떻게 나오는지 확인해보자.
랜덤 포레스트
랜덤 포레스트 특징(과정)
(분류 모델) RandomForestClassifier
(회귀 모델) RandomForestRegressor
① 결정 트리를 랜덤하게 만든다.
ㄴ랜덤 샘플 사용: 트리의 훈련 데이터는 부트스트랩 샘플이다. (복원추출)
ㄴ랜덤 특성 사용: 무작위 특성을 기본적으로 sqrt(n)개 선택하여 최선의 분할을 찾는다.
ㄴ랜덤하게 뽑으므로 과대적합을 방지 and 검증/테스트 세트에서 안정적 성능
② 그 랜덤 결정트리들의 숲을 만든다.
ㄴ 기본적으로 100개의 결정 트리
③ 각 결정트리의 예측을 평균내어 최종 예측을 만든다.
특성 중요도
결정 트리에서는 특성 중요도를 feature_importances_ 변수에서 확인가능했었다.
랜덤 포레스트 모델은 결정트리의 앙상블이므로 역시 특성중요도를 확인가능하다.
다만, 랜덤 포레스트 모델은 각 트리를 훈련할 때 랜덤으로 선택한 특성을 사용하므로, 어떤 한 특성에 비중이 치우치지 않는다. 랜덤포레스트 모델의 특성중요도와 일반 결정트리 모델의 특성중요도를 비교해보면 이를 확인할 수 있다.
랜덤 포레스트 모델에서의 교차검증
랜덤 포레스트 모델에서의 OOB점수 확인
*OOB(out of bag) 샘플: 부트스트랩 샘플에 포함되지 않고 남는 샘플 => 검증세트로 사용!
*교차검증을 대신할 수 있다. (훈련세트에 보다 많은 샘플을 이용가능)
*검증결과가 OOB score다.
엑스트라 트리
(분류 모델) ExtraTreesClassifier
(회귀 모델) ExtraTreesRegressor
엑스트라 트리 특징
랜덤 포레스트와 비슷하다.
① 결정 트리를 랜덤하게 만든다.
ㄴ랜덤 특성 사용
② 그 랜덤 결정트리들의 숲을 만든다.
ㄴ 기본적으로 100개의 결정 트리
③ 각 결정트리의 예측을 평균내어 최종 예측을 만든다.
다른 점은,
◆ 각 결정트리의 훈련데이터는 "전체 훈련 세트"이다.
◆ 랜덤 특성을 통해 노드를 분할할 때 최선의 분할을 찾지 않는다.
◆ 트리의 노드를 무작위로 분할한다는 특징
ㄴ계산 속도가 빠르다.
ㄴ보통 Random Forest보다 결정트리 수를 크게 해야 한다.
ㄴ하나의 결정트리만 생각하면 score가 낮아질 수 있지만 결국 결정트리의 앙상블이므로 score가 보완되고, 결과적으로 훈련세트에 과대적합됨을 막는다.
특성 중요도
그리고 특성 중요도와 관련하여, 일반 결정트리 모델보다 랜덤포레스트 모델이 특정 특성에 과하게 집중하지 않음을 위에서 확인했다. 그럼 엑스트라 트리 모델은 어떨까? 엑스트라 트리 모델 역시 특성을 랜덤으로 선택하여 결정트리 노드를 분할하기 때문에, 어느 한 특성에 중요도가 과하게 쏠리지는 않는다.
엑스트라 트리 모델에서의 교차검증
* 각각의 결정트리는 노드가 무작위 분할되어 score가 낮겠지만, 수많은 결정트리의 앙상블은 score를 보완하며 과대적합을 피하게한다.
그레이디언트 부스팅
위에서 학습한 두개의 앙상블인 '랜덤 포레스트', '엑스트라 트리'와는 결이 다른 앙상블이다.
(분류 모델) GradientBoostingClassifier
(회귀 모델) GradientBoostringRegressor
그레이디언트 부스팅 특징
◆ 깊이가 얕은 결정트리의 앙상블이다.
ㄴ(일반적으로 깊이3인 결정트리100개)
ㄴ과대적합을 피할 수 있다.
ㄴ높은 일반화 성능을 보인다.
◆ 트리를 앙상블에 추가하는 방법은 '경사 하강법'이다.
ㄴ결정트리를 추가해가며 손실함수을 낮추는 쪽으로 이동한다.
ㄴ(분류 모델 default) 로지스틱 손실 함수 사용
ㄴ(회귀 모델 default) 평균 제곱 오차 함수 사용
ㄴ순서대로 트리를 추가: 훈련속도가 느리다. (n_jobs 매개변수 또한 없다)
ㄴ속도, 성능을 개선한 모델은 '히스토그램 기반 그레이디언트 부스팅'이다.
◆ 훈련세트 비율을 subsample 매개변수를 통해 설정 가능하다 (기본값 1.0)
ㄴ확률적 경사하강법, 미니배치 경사하강법을 연상가능하다.
특성 중요도
이번에도 특성중요도를 체크해보자.
랜덤포레스트 모델은 두번째특성 중요도가 0.5정도로 나왔는데,
그레이디언트 부스팅이 핵심특성에 좀 더 집중하는 모습을 보였다.
(이 데이터셋만 그런건지, 아니면 원래 그레이디언트 모델이 핵심특성에 더 잘 집중하는 모델인 건지는 잘 모르겠다. 나중에 실제로 활용할 때 보충하기로 하고 넘어가자.)
그레이디언트 부스팅 모델에서의 교차검증
*각 트리의 깊이가 얕다보니, 과대적합을 피하기 아주 좋다.
*어차피 과대적합에 강하므로, 학습률과 트리 개수를 높여서 모델의 성능을 높여볼 수도 있다.
히스토그램 기반 그레이디언트 부스팅
* 참고로 이 알고리즘을 구현한 라이브러리는 sklearn 외에 여러개 있다.
* sklearn의 이 알고리즘은 마이크로소프트의 LightGBM에 영향받았다.
히스토그램 기반 그레이디언트 부스팅 특징
(분류 모델) HistGradientBoostingClassifier
(회귀 모델) HistgGradientBoostringRegressor
◆ 입력 특성을 256개의 정수구간으로 나눈다
ㄴ따라서 노드의 최적분할 기준을 빠르게 찾을 수 있다.
특성 중요도
히스토그램 기반 그레이디언트 부스팅의 특성중요도는 permutation_importance()로 얻을 수 있다.
랜덤 특성을 하나씩 섞어가며 모델의 성능변화를 관찰하는 방식으로 특성중요도를 계산해준다.
+
랜덤 특성을 하나씩 섞어간다는 게, 어떤 특성의 순열을 만들어간다는 것 같다. 그래서 그 특성순열(특성을섞어감)에 따라 특성중요도를 감소시키는 방향으로 특성중요도를 얻는다고 한다. (공식문서참고↓)
The permutation feature importance is defined to be the decrease in a model score when a single feature value is randomly shuffled.
히스토그램 기반 그레이디언트 부스팅 모델에서의 교차검증
* 일반 그레이디언트 부스팅보다 성능이 개선되었다.
히스토그램 기반 그레이디언트 부스팅 모델 - 최종적인 test score 확인
*정형데이터를 다루는 머신러닝 알고리즘 중 가장 인기가 좋다는 HistGradientBoosting!
*HistGradientBoosting 분류모델은 어떤 score를 보이는지 확인해보자.
*참고) 단일 결정트리 모델의 test score는 0.86이었다.
*Hist그레이디언트부스팅 모델의 성능이 더 좋음을 알 수 있다.
이번 내용 정리
여러 앙상블 모델을 만나봤다.
▶ 랜덤 특성을 이용하여 앙상블하는:
- 랜덤 포레스트 (최선의 분할)
- 엑스트라 트리 (무작위 분할)
▶ 경사하강법을 이용하는:
- 그레이디언트 부스팅 (얕은 결정트리의 앙상블)
- 히스토그램 기반 그레이디언트 부스팅 (위 모델을 개선, 특성을 정수로 분할하여 빠르다)
이전 글:
머신러닝 | 교차 검증과 그리드 서치 | 최적의 파라미터를 찾아주는 교차검증 방법
'데이터분석과 머신러닝' 카테고리의 다른 글
머신러닝 | 픽셀 분포의 특징을 뽑아내어 clustering (0) | 2022.02.14 |
---|---|
혼공단 7기 4주차 미션인증 (0) | 2022.02.13 |
머신러닝 | 교차 검증과 그리드 서치 | 최적의 파라미터를 찾아주는 교차검증 방법 (0) | 2022.02.11 |
머신러닝 | 트리 알고리즘 - 결정 트리 (Decision tree model) (0) | 2022.02.10 |
머신러닝 | 확률적 경사 하강법 (0) | 2022.01.30 |