Addressing non-linearly separable data
트리는 축(axis) 별로 데이터를 반복 분할하며,
복잡한 경계도 표현 가능
각각의 모델(트리, SVM, 뉴럴넷 등)을
독립적으로 혹은 순차적으로 학습시켜 다양한 관점을 확보
→ 최종 예측은 개별 모델의 예측을 종합해서 결정
장점
단점
K개의 독립적인(tree) 결정트리 생성
원본 데이터에서 중복 허용 랜덤 샘플을 뽑아 각 트리를 학습
병렬 학습
모든 트리가 서로 영향을 주지 않고 병렬(Parallel)으로 학습
예측 시 앙상블 결합
각 트리에서 나온 예측(레이블 혹은 확률)을 투표(vote) 하거나 평균 내어 최종 결정
앙상블 모델(Bagging)의 클래스 c 에 대한 예측 확률
: 단순 평균으로 정의
T : 앙상블에 참여한 모델(트리) 수
: t번째 모델이 예측한 입력 v가 클래스 c일 forest output probability
Bagging 기법의 핵심 원리와 동작 과정
Bootstrapping (무작위 샘플링)
병렬 모델 학습
각 샘플셋마다 동일한 학습 알고리즘(ex. 결정 트리)을 적용해
분류기(Classifier)를 만들어 냄
Aggregating (결합)
새 입력 v에 대해 각 분류기가 출력한 예측 확률들을 모아
확률 평균 or 다수결 투표(majority vote) 방식으로 결합하여 최종 예측
분산 감소(Variance Reduction)
서로 다른 서브셋으로 학습된 모델들의 예측 오차는 독립적이므로,
평균·투표를 통해 편차가 상쇄
과적합 완화(Overfitting 완화)
불안정 학습기(Unstable Learner)에 특히 효과적
ex. 결정 트리
무작위 샘플링(with replacement)
전체 훈련집합 S에서 크기 n인 샘플을 중복 허용으로 뽑아
을 생성
Committee Prediction
: 새 입력 x에 대해 각각의 모델 가 반환한 예측을 모아
평균(회귀) 또는 다수결 투표(분류)로 결합
초기 가중치 부여
순차적 학습(Sequential Training)
대표 알고리즘 : AdaBoost
초기 가중치 설정 : N개의 훈련 샘플에 모두 동일하게 1/N 을 부여
오분류 샘플의 가중치는 높이고, 정분류 샘플의 가중치는 낮춰서
다음 단계 학습기가 틀린 곳에 더 집중하도록 만듦
M단계까지 만든 모든 약한 학습기를 가중 합으로 결합
샘플 가중치
: m번째 단계에서 훈련 샘플 n에 부여된 중요도
오류율
: m번째 약한 학습기가 가중치 데이터에 대해 계산한 분류 오류율
모델 가중치
: 최종 앙상블에서 이 차지하는 기여도(믹싱 가중치)
: 의사결정트리(Decision Tree)를 개선
랜덤 포레스트
Bagging된 트리에 노드를 분할할 때마다
피처를 무작위로 일부만 선택하는 추가 무작위성 도입
서로 다른 트리 간의 상관성을 낮춰 더 안정적이고 성능 좋은 앙상블 완성
여러 개의 랜덤화된 결정 트리(randomized decision trees)를
모아 만든 앙상블 모델
데이터 샘플링과 feature 선택 두 가지 레벨에서 모두 랜덤하게 모델을 구성
결정 트리 학습의 전체 흐름
루트 노드(root node)에서 시작해,
각 노드(node)에 할당된 부분 데이터셋 을 기준으로 계속 분할(split)하며,
종료 조건이 만족될 때까지 이 과정을 반복
각 내부 노드(internal node) j에서,
현재 데이터셋 를
두 부분으로 나눔
v : 샘플의 feature 벡터
θ : 어떤 feature를 어느 값을 기준으로 분류할지 에 대한 파라미터
이 기준에 따라,
처럼 데이터를 분리
각 노드마다 여러 후보 θ를 시험해 보고,
최적의 θ*를 선택
더 이상 분할할 필요가 없다고 판단되면(종료 조건), 해당 노드를 리프로 마무리
split function :
: 입력 샘플 v가 왼쪽 자식인지 오른쪽 자식인지 결정
→ 0 : 왼쪽, 1 : 오른쪽
: 분할 규칙을 구성하는 세 가지 파라미터 세트
φ(v) (Feature Bagging)
v의 전체 피처 벡터 중 무작위로 일부(feature subset)만 골라낸 뒤
그 부분 벡터를 반환하는 필터링 연산
→ 서로 다른 feature 조합으로 분할 기준을 찾게 해, 트리 간의 다양성↑
w (Hyperplane Weight Vector)
φ(v)와 내적을 수행해 (φ(v)⋅w)를 만듦
→ 어떤 방향으로 데이터를 분리할지 정하는 가중치 벡터
(Threshold Values)
값이 구간 안에 있으면 1, 밖이면 0
→ 2개의 boundary 설정
노드를 어떻게 나눠야 최적의 분할?
정보 이득이 높은 분할이 좋음
결정 트리에서 각 노드를 어떻게 최적으로 분할할지 결정하는 기준
노드 j에 모여 있는 훈련 샘플 집합 의
불확실성(uncertainty)을 측정하는 지표
= 분할 전 불확실성 - 분할 후 불확실성
→ 분할을 통해 얼마나 줄인 불확실성(엔트로피)가 크면 클수록 좋은 분할이므로,
정보 이득 가 최대가 되는 를 선택
split 전 entropy 큼
split 후 entropy 작아짐
노드마다 점점 더 작은 구역으로 쪼개면서 클래스의 순도(purity) 를 높임
T개의 트리가 반환한 각 클래스별 확률을 단순 평균해서
최종 클래스 확률 분포를 만듦
→ 확률이 가장 큰 클래스를 선택
확률 대신, 각 트리가 가장 높게 점수 준 클래스를 1표로 count
ex. Tree 1은 ‘빨강’, Tree 2는 ‘초록’, Tree 3은 ‘빨강’
→ 최종 ‘빨강’