[4-2] Bagging, Random Forest
머신러닝 모델에서 일반화 성능을 높이기 위한 데이터의 다양성을 확보하는 것은 중요하다. 이번 장에서는 데이터의 다양성을 확보하기 위해 시도되었던 방법 K-Fold, Bagging, Random Forest 를 알아보도록 하겠습니다. 처음 시도된 방식은 K-Fold 입니다.
데이터의 다양성
K-Fold
Bagging (Bootstrap Aggregating)
Random Forest
모델의 다양성
K-Fold
k-fold 는 데이터의 다양성 확보를 위해 전체 데이터 셋을 k 개의 부분 집합으로 분류한다. k-1 개는 학습 데이터로 사용하며, 1개의 데이터 집합은 검증 데이터로 사용한다.
이 1개의 데이터 집합은 학습 데이터의 포함되지 않으므로 OOB(Out-of-Bag) 데이터라고 한다.
각 k-fold 데이터마다 모델의 예측값을 반환하면, 그 예측값들의 Aggregation 된 것이 최종 이 된다.
K-Fold 의 단점
전체 데이터 셋을 사용하지 않기 때문에 1 개의 데이터 셋에 대한 정보 손실이 발생한다.
데이터 셋의 다양성을 확보하는데 제한적이다. 데이터를 작게 쪼개는 데 한계가 있다.
따라서 현재 K-Fold 는 사장된 방법론이다.
Bagging
Bagging(Bootstrap Aggregating) 은 복원 추출 (Sampling w/ Replacement) 를 사용하여 부트스트랩(새로운 데이터셋의 집합)을 만들고 이 데이터를 사용한 모델의 예측값의 평균을 최종 값으로 사용하는 방법론이다.
마치 오병이어의 기적과 같이 데이터를 무한정 생성할 수 있다는 점에서 기존 K-Fold 의 데이터 생성의 제약이 따르던 문제점을 극복하였다.
아래는 원 데이터로 부터 샘플들이 복원 추출되어서 (부트스트랩) 각 모델의 입력되어 최종 회귀에서는 평균 / 분류에서는 다수결 분류로 최종 값을 예측하는 배깅의 프로세스를 나타낸다.
Bagging 의 특징
Bootstrap : Bagging 은 원본 데이터 셋으로부터 데이터 셋을 무한정 샘플링이 가능하며, 하나의 샘플링된 데이터 셋의 집합을 Bootstrap 이라고 한다.
Low Bias, High Variance : 복잡성이 있는 모델과 합이 맞음.
Not a Model, But a Technique : 어떠한 지도학습 방법과도 같이 사용가능하다. 예를 들면, 신경망, SVM 하지만 로지스틱 회귀 방식은 High Bias, Low Variance 이기 때문에 합이 안맞을 수 있다.
Bagging 의 장점
Bagging 은 원본 데이터 셋을 다양화 함으로써 학습측면에서는 노이즈또한 변화시키어 일반화 성능을 향상시킬수도 있고, 다양한 검증 데이터를 사용한 추론으로 성능 평가에 대한 신뢰도를 향상시킬 수 있습니다.
학습 측면 ) 노이즈 변화 : 원본의 데이터가 으로 특정 노이즈를 갖는 데이터라하면, 학습이 해당 노이즈 특성에 적합될 수 있다. 하지만, 새로운 데이터 셋(Data 가 갖는 분포를 왜곡시킴)을 생성해냄으로써, 노이즈를 왜곡 시키어 일반화 성능을 높일 수 있다.
검증 측면 ) 신뢰도 증가 : 전체 데이터가 학습과 검증 데이터로 바뀌어 가며 수행되기 때문에 검증에 대한 신뢰도 증가 및 일반화 성능을 향상시킴.
특정 데이터 셋이 선택되지 않을 확률은 0.368..
N이 일정 수준 이상 커지면, Bootstrap 에 한 번 이상 샘플링될 확률은 0.6 정도, 한번도 샘플링이 안될 확률은 0.3 정도이다.
예를 들어, 연구실에 지원한 학생이 총 4명이다. A가 뽑히지 않을 확률은 입니다. 만약에 동일 학생 4명이 국내 총 80군데의 연구실에 지원했을때, 모든 곳에서 A가 뽑히지 않는 확률은 이다.
즉, A 가 N 번 수행했을때, N 번 모두 샘플링 되지 않을 확률 의 식은 다음과 같이 정리할 수 있습니다.
N 이 충분히 클 때, 공식에 의해서 다음과 같기 때문에 특정 데이터 객체가 모든 부트스트랩에 한번도 샘플링 되지 않을 확률은 약 0.368이며, 반대로 한번 이상 샘플링 될 확률은 약 이라고 볼 수 있습니다.
Aggregation
예측 결과를 합치는데 일반적으로 평균과 다수결 투표 방식을 권장합니다. 그 이유는, 모든 상황에서 특별히 어떤 Aggregation 방식이 우월하다 하는 방법론이 아직 없기 때문입니다.
분류 문제 : Majority Voting
회귀 문제 : Average
Majority Voting
Majority Voting : Majority Voting 방식은 Test Accuracy 를 기반으로 1으로 판단한 모델 갯수 6개, 0 으로 판단한 모델 갯수 4개 이므로 각각, 0.6, 0.4로 aggregation 한다.
OOB Accuracy 가중치 : OOB 데이터로 검증한 확신도를 사용한다.
Test Accuracy 가중치 : Test Accuracy 를 사용한다.
More about Aggregation,
이와 같이 aggregation 하는 방식은 1번과 3번의 조합등으로 30개가 넘는다.
Stacking
모델의 예측값을 통합하는 방법중 중 Stacking 이란 기법은 예측 값을 다시 정답 값과의 훈련 쌍을 만들어서 새로운 또 하나의 분류기 Meta Classifier g 를 만드는 기법이다.
이번 장에서는 Bagging 에 대해서 알아봤다. 이는 총 아래 7가지 데이터 셋에서 하나의 모델을 사용할 때보다 더 적은 손실을 보여주었다.
Random Forest
Random Forest 의 키워드는 Bagging & Randomly Selected Variable 입니다.
Random Forest 특징
1) Randomly Selected Variable
Random Forest는 base learner 로 decision tree 를 사용하는 기법입니다. 또한, 데이터를 분류하는 속성을 선택적으로 사용합니다. 예를 들어, 겨울 가족 사진을 분류하는 의사결정나무를 설계한다고 가정합시다. 데이터를 분류할 수 있는 속성 (만화인가?), (겨울인가?), (한명이상인가?) 들 중에 랜덤하게 하나의 속성을 뽑습니다. (만화인가?) 속성을 뽑아 겨울 가족사진을 분류합니다.
이렇게 부트스트랩을 만드는 과정에서 랜덤하게 데이터 속성을 뽑는다.
물론, 전체 속성을 가지지 않으므로 개별 의사 결정 나무의 성능은 낮을 수 있으나, 전체 성능은 높습니다.
2) 일반화 성능
일반화 성능은 모델간의 연관성 이 낮을 수록, 확실하게 분류를 수행할수록 (즉 정답확률, 정답이 아닌 확률의 차이 가 클수록) 일반화 성능이 높습니다. 아래는 일반화 손실값을 계산하는 식으로 손실값이 낮을수록 성능이 높다고 이해할 수 있습니다.
: 모델간의 상관 계수의 평균
: 정답확률, 정답이 아닌 확률의 차이 들의 평균
3) 변수의 중요도 산출 가능
특정 변수 에 대하여 랜덤하게 값을 섞습니다. 원래의 에러값과 섞은 후의 에러값 차이 가 클경우, 변수의 중요도가 높다고 할 수 있습니다. 또한, 각 차이의 분산은 적어야 합니다.
: 기존의 일반화 성능
: 번째 속성 (예를 들면 winter) 의 속성을 뒤죽박죽 값들을 섞었을 때의 일반화 성능
두 성능의 차이가 크면 해당 변수는 중요하다
: 각 의사 결정 나무의 일반화 성능의 분산, Tree 마다 편차는 적어야 한다. (일관성)
Reference
Last updated