https://www.slideshare.net/freepsw/boosting-bagging-vs-boosting
- Ensemble 기법이란?
: 여러 모델을 이용하여 데이터를 학습하고, 모든 모델의 예측결과를 평균한 걸로 예측하는 것.
- 왜 앙상블인가?
- 에러가 최소화
: 다양한 모델의 결과를 종합하여 전반적으로 오류를 줄여줌.
- Overfitting 감소
: 각 모델별로 bias 가 존재하고, 이렇게 다양한 bias를 종합하여 결과를 생성하게 되어, overfitting을 줄여줌.
- Low Bias, High Variance
: Variance를 줄이기 위한 기법
모든 모델이 예측한 값의 평균을 사용하면, 평균값을 가진모데이 실제 데이터와 유사함. High variance하면 각 모델별로 예측한 값의 차이가 큰거임.
- Bias?
: Bias로 인한 에러는 예측값과, 실제값 간의 차이이다.
모델 학습시에 여러 데이터를 사용하고, 반복하여서 새로운 모델로 학습하면 예측값들의 범위를 확인할 수 있다.
즉, Bias는 이 예측값 들의 범위가 정답과 얼마나 멀리 있는지를 측정하는 지표이다.
=> 정답과 예측값의 거리
- Variance?
: 주어진 데이터로 학습한 모델이 예측한 값의 변동성
만약 여러 모델로 학습을 반복한다고 하면, variance는 학습 된 모델별로 예측한 값들의 차이를 추정
=> 모델별 예측값 간의 거리
- 에러함수
Err(x) = E[ (Y - f(x))^2 ]
- Bias와 Variance의 trade off
:
- Bagging과 Boosting은 뭐가 다른가?
- Bagging의 개념
: 학습 데이터를 랜덤으로 sampling하여 여러개의 bag으로 분할하고,
각 bag별로 모델을 학습한 후,
각 결과를 합하여 최종 결과를 추출.
=> 그럼 어떻게 예측정확도를 높일까?
: Bagging은 weak model을 여러개 결합하여, 전체적으로 high variance 에서 low variance로 변하게 해서 예측성능을 향상시킨다.
- Bagging의 이슈
: bagged tree에서는 데이터를 샘플링하여 최적의 모델을 만든다. 그리고 n번 이 과정을 반복한다.
이렇게 만들어진 모델을 test set으로 검증하면, 당연히 서로 아주 다른 결과가 나온다. (학습된 데이터가 서로 다름)
샘플링 된 데이터로 학습하여 high variance가 발생하는 것을 방지하기 위해서,
bagging 은 여러개의 학습모델의 결과를 합하여 최종 결과를 도출한다.
Bagging 과정에서 한가지 이슈는 tree들이 얼마나 비슷하게 생성되는지 고려하지 못한다는 것이다 (tree correlation)
예를 들어서, 데이터 중에 특정 featurer가 정답에 미치는 영향이 아주 커서 cost를 많이 줄여준다고 하자.
이 featrue는 모든 tree가 공유하게 되므로, 대부분의 tree에서 동일한 결과를 예측하게 되는 현상이 발생한다.=> tree correlation이 높아짐.
tree correlation을 해결할 수 있는 방안으로는 Random Forest가 있다.
데이터 sampling시에 일부 feature들만 랜덤으로 선택한다.
따라서 모든 모델들은 서로 다른 feature로 학습하게 되고, 이로인해 tree correlation이 줄어든다.
- Boosting의 개념
: Bagging의 변형으로, 모델이 잘 예측하지 못하는 부분을 개선하기 위한 모델.
Bagging에서 데이터를 단순히 sampling해서 각 모델에 적용한다면,
Boosting은 이전 모델들이 예측하지 못한 error 데이터에 더 가중치를 부여하여서 다음 모델들이 더 잘 예측하도록 한다.
Boosting알고리즘으로는 다음과 같은 것들이 있다.
'개발 > ML+ Data Science' 카테고리의 다른 글
DataFrame Columns 삭제 (자꾸 까먹음) (0) | 2019.09.28 |
---|---|
Pandas DataFrame에서 원하는 dtype컬럼만 가져오기 (0) | 2019.09.28 |
dimention reduction vs feature selection (차원축소 vs 특징추출) (0) | 2019.09.25 |
ROC 및 AUC (0) | 2019.09.24 |
Reduce Load Data memory (데이터프레임 용량줄이기) (0) | 2019.09.24 |