-KEY WORDS
랜덤 포레스트
부트스트랩
배깅
하드보팅 : 빈도에 의한
소프트보팅 : 비율(확률)에 의한
-정형데이터와 비정형데이터
정형데이터는 CSV파일 같이 어떤 구조로 되어있는 데이터이다.
지금까지 배운 머신러닝 알고리즘은 정형 데이터에 잘 맞는다.
그 중에 정형 데이터를 다루는 데가 가장 뛰어난 성과를 내는 알고리즘이 앙상블 학습이다.
앙상블 학습은 대부분 결정트리를 기반으로 만들어져 있다.
비정형 데이터에는 신경망 알고리즘을 사용한다.
비정형 데이터는 규칙성을 찾기 어려워 전통적인 머신러닝 방법으로는 모델을 만들기 까다롭다.
앙상블 학습 알고리즘
사이킷런에서 제공하는 정형 데이터의 끝판왕!
랜덤 포레스트
앙상블 학습의 대표 주자
안정적인 성능 덕분에 널리 사용되고 있다.
원리
결정 트리를 랜덤하게 만들어 결정 트리(나무)의 숲을 만든다.
그리고 각 결정 트리의 예측을 사용해 최종 예측을 만든다.
먼저 랜덤 포레스트는 각 트리를 훈련하기 위한 데이터를 랜덤하게 만드는데,
입력한 훈련데이터에서 랜덤하게 샘플을 추출하여 훈련 데이터를 만든다. 이때 한 샘플이 중복되어 추출될 수도 있다.
예시)
1000개의 가방에서 100개씩 샘플을 뽑는다면 먼저 1개를 뽑고, 뽑았던 1개를 다시 가방에 넣는다.
이런 식으로 계속해서 100개를 가방에서 뽑으면 중복된 샘플을 뽑을 수 있다.
이렇게 만들어진 샘플을 부트스트랩 샘플(bootstrap sample)이라고 한다.
기본적으로 부트스트랩 샘플은 훈련세트의 크기와 같게 만든다.
1000개 가방에서 중복하여 1000개의 샘플을 뽑기 때문에 부트스트랩 샘플은 훈련 세트와 크기가 같다.
또한 각 노드를 분할할 때 전체 특성 중에서 일부 특성을 무작위로 고른 다음 이 중에서 최선의 분할을 찾는다.
분류모델인 RandomForestClassifier는 기본적으로 전체 특성 개수의 제곱근 만큼의 특성을 선택한다.
즉 4개의 특성이 있다면 노드마다 2개를 랜덤하게 선택하여 사용한다.
사이킷런의 랜덤 포레스트는 기본적으로 100개의 결정트리를 이런 방식으로 훈련한다.
그 다음 분류일 때는 각 트리의 클래스별 확률을 평균하여 가장 높은 확률을 가진 클래스를 예측으로 삼는다.
회귀일 때는 단순히 각 트리의 예측을 평균한다.
장점
랜덤샘플과 특성을 사용하기 때문에 훈련 세트에 과대적합되는것을 막는다.
검증세트와 테스트세트에서 안정적인 성능을 얻을 수 있다.
종종 기본 매개변수 설정만으로도 아주 좋은 결과를 낸다.
엑스트라 트리
랜덤 포레스트와 매우 비슷하게 동작하지만,
엑스트라 트리는 부트스트랩 샘플을 사용하지 않는다는 점에서 차이가 있다.
원리
기본적으로 100개의 결정트리를 훈련한다.
랜덤 포레스트와 동일하게 결정 트리가 제공하는 대부분의 매개변수를 지원한다.
또는 전체 특성 중에 일부 특성을 랜덤하게 선택하여 노드를 분할하는 데 사용한다.
장점
하나의 결정 트리에서 특성을 무작위로 분할한다면 성능이 낮아지겠지만 많은 트리를 앙상블 하기 때문에 과대적합을 막고 검증 세트의 점수를 높이는 효과가 있다.
'[혼자공부하는머신러닝+딥러닝]한권뽀개기' 카테고리의 다른 글
06-2 k-평균 (0) | 2022.03.29 |
---|---|
06-1 군집 알고리즘 (0) | 2022.03.28 |
05-2 교차 검증과 그리드 서치 (0) | 2022.03.24 |
05-1 결정트리 (0) | 2022.03.24 |
전처리 (3) | 2022.03.18 |
댓글