[2018/07/20] 머신러닝 3. 앙상블

Boosting:
이전 트리의 오차를 보완하는 방식으로 순차적으로 트리를 개선시키는 방식
오차에 대해 계속 가중치를 줘서 바꿔나간다.
가장 유명한 방식이 XG부스트
일단 한번 수행하고 그 결과를 바탕으로 다시 수행하는 것이기 때문에 동시에 여러번 할 수 없다.
좀 더 느리다.

랜덤포레스트
과적합 너무 많이 일어나서 약간의 랜덤성을 부여
1.
데이터 셋을 여러 개 만들어서 (부트스트랩)
예를 들어 a,b,c,d 4개에서 4개를 뽑을 때 중복으로 뽑는거 허용해서 a,a,b,c, 이런 식으로 뽑는다.

2.
각각의 데이터셋으로 결정트리 알고리즘을 수행
랜덤성을 더욱 부여하기 위해서 트리를 확장할 때 일부의 feature만 고려하도록 (max_feature의 수 정해놓기) 해놓게 해서 서로 다른 형태의 결정트리가 생성되도록 해야함.

3.
만들어진 여러 결정트리의 결과를 합하여 예측

부스팅
여러 알고리즘이 존재
1.
데이터를 바탕으로 한번 결정트리 생성
2.
error에 가중

여러 알고리즘 중에서 XG Boost는 scikit learn에서는 지원을 안 해서 별도의 라이브러리를 설치해야 한다. 가장 많이 쓰인다.
왜 많이 쓰이는가? 성능은 여타 다른 알고리즘과 비슷하면서 병렬 처리가 가능하다.
다른 부스팅 알고리즘에 비해 빠르다