Table of Contents
728x90
랜덤 포레스트(Random Forest)에서 "Out-of-Bag (OOB)" 샘플은 모델의 성능을 평가하는 중요한 개념 중 하나입니다. OOB 샘플은 부트스트랩 샘플링 과정에서 선택되지 않은 데이터 포인트들을 의미합니다. 랜덤 포레스트는 이 OOB 샘플을 사용하여 추가적인 검증 데이터 없이도 모델의 성능을 평가할 수 있습니다.
Out-of-Bag (OOB) 샘플의 정의와 역할
부트스트랩 샘플링:
- 랜덤 포레스트는 배깅(Bagging) 방법을 사용하여 여러 결정 트리를 학습합니다. 각 트리는 원본 데이터셋에서 부트스트랩 샘플링(복원 추출)을 통해 생성된 샘플을 사용하여 학습됩니다.
- 복원 추출이기 때문에 원본 데이터셋에서 일부 데이터 포인트는 여러 번 선택될 수 있으며, 일부 데이터 포인트는 선택되지 않을 수 있습니다.
OOB 샘플:
- 각 결정 트리에서 부트스트랩 샘플링 과정에서 선택되지 않은 데이터 포인트를 OOB 샘플이라고 합니다.
- 일반적으로 원본 데이터셋의 약 1/3 정도가 각 트리의 OOB 샘플로 남게 됩니다.
OOB 에러:
- 랜덤 포레스트는 OOB 샘플을 사용하여 각 트리의 성능을 평가할 수 있습니다. 즉, 각 트리는 자신이 학습에 사용되지 않은 OOB 샘플에 대해 예측을 수행합니다.
- 모든 트리의 OOB 예측을 종합하여 전체 랜덤 포레스트 모델의 성능을 평가할 수 있습니다.
- OOB 에러는 OOB 샘플에 대한 예측과 실제 값을 비교하여 계산됩니다. 이는 모델의 일반화 성능을 평가하는 좋은 방법입니다.
OOB 샘플을 사용한 평가의 장점
추가 검증 데이터 불필요:
- OOB 샘플을 사용하면 별도의 검증 데이터셋이 필요 없습니다. 학습 데이터 내에서 자체적으로 검증을 수행할 수 있습니다.
- 이는 데이터가 부족한 상황에서 매우 유용합니다.
효율적인 성능 평가:
- 각 트리는 자신에게 할당되지 않은 OOB 샘플에 대해 예측을 수행하므로, 모델의 성능을 더 효율적으로 평가할 수 있습니다.
- 이는 교차 검증과 유사한 역할을 하지만, 더 간편하게 수행됩니다.
OOB 에러 계산 방법
OOB 에러를 계산하는 과정은 다음과 같습니다:
- 각 결정 트리는 자신이 학습하지 않은 OOB 샘플에 대해 예측을 수행합니다.
- 모든 트리의 OOB 예측을 종합하여 최종 예측을 만듭니다.
- 최종 예측과 실제 값을 비교하여 OOB 에러를 계산합니다.
코드 예시
다음은 사이킷런(Scikit-learn)을 사용하여 랜덤 포레스트 모델을 학습하고, OOB 샘플을 사용하여 성능을 평가하는 예시입니다:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 데이터 로드 및 분할
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)
# 랜덤 포레스트 모델 생성 (OOB 평가 활성화)
clf = RandomForestClassifier(n_estimators=100, oob_score=True, random_state=42)
clf.fit(X_train, y_train)
# OOB 점수 확인
oob_score = clf.oob_score_
print("OOB Score:", oob_score)
# 테스트 데이터에 대한 예측 및 정확도 평가
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Test Accuracy:", accuracy)
이 코드는 랜덤 포레스트 모델을 학습시키고, OOB 점수와 테스트 데이터에 대한 정확도를 출력합니다. OOB 점수는 모델이 학습 중에 자체적으로 평가한 성능을 나타내며, 테스트 데이터에 대한 정확도는 모델의 일반화 성능을 평가합니다.
요약
- Out-of-Bag (OOB) 샘플: 부트스트랩 샘플링 과정에서 선택되지 않은 데이터 포인트입니다.
- OOB 에러: OOB 샘플을 사용하여 모델의 성능을 평가하는 방법입니다.
- 장점: 추가적인 검증 데이터셋이 필요 없으며, 효율적으로 모델의 성능을 평가할 수 있습니다.
- 코드 구현: 사이킷런의
RandomForestClassifier
를 사용하여 OOB 평가를 활성화하고 모델 성능을 확인할 수 있습니다.
OOB 평가 방법은 랜덤 포레스트의 중요한 특징 중 하나로, 모델의 성능을 효과적으로 평가하는 데 도움이 됩니다.
'ML' 카테고리의 다른 글
Classification Model 평가 및 지표 해석 (0) | 2024.05.29 |
---|---|
Validation set (0) | 2024.05.29 |
Ensemble > Bagging(Bootstrap Aggregating), Random Forest (0) | 2024.05.29 |
Ensemble 앙상블 (0) | 2024.05.29 |
Decision tree -> pre-pruning, post-pruning (0) | 2024.05.29 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Array
- 코딩테스트
- t5
- LLM
- 티스토리챌린지
- RAG
- 리스트
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- nlp
- 손실함수
- 오블완
- speaking
- cnn
- 해시
- PEFT
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- Hugging Face
- git
- Transformer
- Lora
- recursion #재귀 #자료구조 # 알고리즘
- clustering
- Numpy
- 파이썬
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- classification
- Github
- English
- Python
- LIST
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함