Hayden's Archive

[AI/머신러닝] 편향(Bias)과 분산(Variance) / 앙상블 학습(Ensemble Learning) - 그레디언트 부스팅 머신(Gradient Boosting Machine) / Grid Search 본문

Study/AI & Math

[AI/머신러닝] 편향(Bias)과 분산(Variance) / 앙상블 학습(Ensemble Learning) - 그레디언트 부스팅 머신(Gradient Boosting Machine) / Grid Search

_hayden 2020. 7. 24. 08:17

<목차>

편향(Bias)과 분산(Variance)  
앙상블 학습(Ensemble Learning) - 그레디언트 부스팅 머신(Gradient Boosting Machine) 
그레디언트 부스팅 머신 관련 코드
Grid Search

 


< 편향(Bias)과 분산(Variance) >

 

굉장히 중요한 2개념
머신러닝의 에러 크게 2가지. Bias, Variance

편향(Bias) : 학습데이터를 충분히 표현할 수 없기 때문에 발생함. bias가 높다는 건 학습을 덜했다. underfitting 되어있다는 얘기 -> 학습 더 시키면 됨. 데이터 더 넣으면 됨. (근데 데이터가 없어서 못 넣으면... transform 해서 변형해서라도 넣어야 함. 그러면 기존의 데이터 가지고 데이터를 늘리는 효과를 얻을 수 있음. 딥러닝에서 배우게 될 것)

분산(Variance) : 트레이닝 데이터에 너무 민감하게 반응하여 발생함. variance가 굉장히 높아서 overfitting 되어 있다는 얘기. 데이터 자체에 의존하고 집착하고 일반화가 되어 있지 않다. 그러면 학습할 때는 잘 맞히는데 실제 테스트 돌리면 overfitting. 

Variance : 값들이 크게 미쳐서 팔팔 뛰는 것. 이상치 값에 굉장히 민감하다.

분산이 굉장히 큰 것 -> 그러면 데이터가 안정적이지 않음. 그러면 그 데이터는 좋은 데이터가 아님.

->결론적으로 overfitting이 심하게 날 수 없다.

-> variance를 낮춤. 분산을 작게 만듦. 퍼져있는 데이터를 impact 있게 모아줌.
컴퓨터는 이미지 자체를 인식하지 못하기 때문에 수치를 통해 인지함.
모든 이미지나 형상을 하는 모든 값은 0~255 사이의 픽셀값으로 이뤄져 있음.
또 이미지의 색상은 RGB 값으로 되어 있음.(흑백은 채널이 하나)

분산이 크면 예측이 어려움. 그래서 스캐닝함 ==> 정규화(Normalize)하는 것 ( 정규화 관련 포스팅 : https://hayden-archive.tistory.com/296#featureImportance )



Bias와 Variance는 서로 다르게 움직임. Bias를 해결하면 Variance가 올라가고, Variance를 해결하면 Bias가 올라감. => 이러한 현상을 "Bias - Variance Tradeoff(편향-분산 트레이드오프)"라고 함.

참고 : https://brunch.co.kr/@chris-song/32

 

내가 만든 모델이 잘 작동하는건가?

Bias(편향)와 Variance(분산) - 피해갈 수 없는 기본기 | 머신러닝으로 모델을 만드는 일은 이제 쉬워졌습니다. 예제도 많고 강의도 많습니다. 머신러닝에 대해서 많이 모르시는 분들도, 많이들 알고

brunch.co.kr

 


Bagging(랜덤 포레스트에서 쓰이는 기법)Variance(Overfitting)를 해결
Boosting(그레디언트 부스팅에서 쓰이는 기법)Variance(Overfitting)를 감소시켜줄 뿐만 아니라 Bias(Underfitting)도 감소시켜줄 수 있음. 

 

위로↑


< 앙상블 학습(Ensemble Learning) - 그레디언트 부스팅 머신(Gradient Boosting Machine) >

 

랜덤 포레스트는 Bagging 기법을 쓰는 반면, 그레디언트 부스팅 머신은 Boosting 기법을 씀

Boosting 기법 : 한번 풀고 다시 풀 때는 오답 위주로 푼다. 결론적으로 bias 감소되고 학습 효과가 증대된다. 핫하게 쓰임.


Boosting 알고리즘
- Weak Learner 잘못된 예측. 에러에 가까운 학습을 했다... feature의 특성을 잘못 파악했다.
예측하고 분류하고 정답을 도출해낼 때 feature로부터 얻어올 수밖에 없는데 feature에 잘못된 가중치를 부여하거나 잘못 파악하면 이렇게 됨.
잘못 예측한 것에 대한 정보들, 자기가 약한 부분(weak learner)을 오답노트로 만들어서 잡겠다는 얘기. 잘한 학습은 넘어가고 잘못한 학습만 잡고 넘어간다는 것.

 

출처 : https://medium.com/analytics-vidhya/ensemble-models-bagging-boosting-c33706db0b0b

Bagging => parallel 병행적으로... 하나하나의 예측 결과가 나옴.
Boosting => sequential 순차적

Bagging 여러개를 가지고 예측하고 합침. 내가 맞혔던 문제가 중복되어 들어있을 수 있음. Boosting 하나를 가지고 예측하고 돌아가서 수정하고 또 그걸로 예측하고 또 돌아가서 수정하고... 데이터 하나만 가지고 하지만 feature의 가중치는 바뀜. 내가 맞혔던 문제는 중복되지 않음.
=> 대체로 boosting이 속도가 더 빠르고 결과가 더 좋게 나옴. 데이터가 클수록 속도 차이가 어마어마함. 
근데 거기에 따라 인간이 조정해야 하는 hyperparameter의 개수가 늘어나긴 함.

결론적으로 Boosting학습이 끝난 다음에 문제점을 발견해서 그 문제점에 해당하는 부분들(feature의 가중치값)을 수정한다

 


관련 Hyperparameter
learning_rate : 학습을 하는 데 있어서의 속도 (작게 만들어주면 꼼꼼하게 공부할 수 있음, 크면 빠르게 할 수 있지만 대충 할 수 있음. 하지만 학습이 빨리 끝나서 학습을 더 할 수도 있음.) - 0.1~0.004까지가 보통 표준으로 넣는 값. learning rate는 hyperparameter 중에서 최고. 그만큼 Accuracy와 밀접한 관련이 있음.

학습률이 크면 복잡한 모델이 될 수 있음. n_estimators 값을 키우면 앙상블에 트리가 더 많이 추가되어 모델의 복잡도가 증가

 

위로↑


< 그레디언트 부스팅 머신 관련 코드 >

 

위로↑


< Grid Search >

 

위로↑