7. Ensemble Learning and Random Forests

기계 학습에도 집단 지성의 효과가 있다. 예를 들어, 결정 트리 여러 개를 학습 집합의 다른 부분 집합에서 학습한 뒤에 그 예측 결과의 평균을 내서 성능을 개선할 수 있다. 이런 학습법을 앙상블 학습이라 한다. 여러 앙상블 학습을 알아보자.

Voting Classifiers

여러 분류기를 학습한 뒤 그 분류기 각각이 투표를 하도록 해 가장 많은 표를 얻은 클래스로 분류할 수 있다. 이것은 큰 수의 법칙에 기반한다. 앙상블 방법은 여러 분류기들이 서로간에 가급적 독립적일 때 가장 효과가 좋다. 이는 분류기 각각이 확률적 결과를 출력하더라도 효과가 있다.

Bagging and Pasting

같은 알고리즘을 학습 집합의 다른 부분 집합에서 학습하는 것을 배깅(붓스트랩 합산기)라 한다. 샘플링이 대체 없이 수행되면 페이스팅이라 한다. 이를 통해 여러 예측기를 합산해 새 인스턴스를 예측할 수 있다. 이 예측기들은 병렬로 학습될 수 있다.

Bagging and Pasting in Scikit-Learn

Scikit-Learn에서도 배깅과 페이스팅을 할 수 있다.

Out-of-Bag Evaluation

일반적으로 배깅을 하면 각 분류기에서 63%의 표본만 학습된다. 나머지 37%은 그 분류기를 평가하는 데 쓸 수 있다. 그러면 별도의 검증 집합이 필요 없다.

Random Patches and Random Subspaces

인스턴스뿐만 아니라 특성도 샘플링할 수 있다. 이것을 랜덤 패치라 한다. 특성만 샘플링하는 경우 랜덤 부분공간이라 한다.

Random Forests

랜덤 포레스트는 결정 트리의 앙상블이다. 이는 트리들에 여러 무작위성을 부여한다.

Extra-Trees

트리의 결정 경계까지 무작위로 할 수 있다. 이런 트리를 엑스트라 트리라 한다. 랜덤 포레스트가 엑스트라 트리보다 더 좋을지 나쁠지는 미리 알기 어렵다.

Feature Importance

랜덤 포레스트의 또 다른 좋은 점은 각 특성의 상대적 중요성을 알기 쉽다는 것이다. 이는 예측기 각각의 가중평균을 내기 때문에 가능하다.

Boosting

부스팅은 여러 약한 학습기를 앙상블해 강한 학습기를 만들어내는 것을 뜻한다.

AdaBoost

새 예측기가 전임자를 교정하는 또 다른 방법은 전임자가 과소적합된 표본에 대해 더 집중하는 것이다. 이 방법을 사용한 방법이 AdaBoost이다. 이것을 연속적으로 사용했을 때 이 앙상블은 배깅이나 페이스팅과 비슷한 성능을 낸다, 단 예측기들이 서로 다른 가중치를 가진다는 것이 다르다. 이 방식의 중요한 단점은 병렬화가 불가능하거나 부분적으로만 가능하다는 것이다.

Gradient Boosting

또 다른 유명한 부스팅 알고리즘은 경사 부스팅으로, AdaBoost와 비슷하지만 매 반복마다 인스턴스 가중치를 조정하는 것이 아니라 전임자의 잔여 오차를 통해 새 예측기를 학습한다는 것이 다르다. XGBoost가 가장 유명하다.

Stacking

마지막으로 다룰 앙상블 방법은 스태킹으로, 여러 학습기를 단순히 합하는 대신 그 합하는 방식도 학습하는 것이다.