Random Forests의 out of bag 오류는 무엇입니까?
Random Forests의 out of bag 오류는 무엇입니까? Random Forest에서 적절한 수의 나무를 찾기위한 최적의 매개 변수입니까?
나는 설명하려고 시도 할 것입니다 :
훈련 데이터 세트가 T로 표시되고 데이터 세트에 M 개의 기능 (또는 속성 또는 변수)이 있다고 가정합니다.
T = {(X1,y1), (X2,y2), ... (Xn, yn)}
과
Xi is input vector {xi1, xi2, ... xiM}
yi is the label (or output or class).
RF 요약 :
Random Forests 알고리즘은 주로 두 가지 방법을 기반으로하는 분류기입니다.
- 자루에 넣기
- 랜덤 부분 공간 방법.
S
포리스트에 트리 수를 결정한 다음 먼저 T에서 데이터를 임의로 리샘플링하여 데이터 S
세트를 "same size as original"
생성 한다고 가정합니다 (각 데이터 세트에 대해 n 회). 이로 인해 {T1, T2, ... TS}
데이터 세트 가 생성됩니다 . 이들 각각을 부트 스트랩 데이터 세트라고합니다. "대체 포함"으로 인해 모든 데이터 세트 Ti
는 중복 데이터 레코드를 가질 수 있으며 Ti는 원래 데이터 세트에서 여러 데이터 레코드를 누락 할 수 있습니다. 이것을라고 Bootstrapping
합니다. (en.wikipedia.org/wiki/Bootstrapping_ (통계))
배깅은 부트 스트랩을 가져온 다음 각 부트 스트랩에서 학습 한 모델을 집계하는 프로세스입니다.
이제 RF S
는 트리를 생성하고 가능한 기능 m (=sqrt(M) or =floor(lnM+1))
중 임의의 하위 M
기능을 사용하여 모든 트리를 생성합니다. 이것을 랜덤 부분 공간 방법이라고합니다.
따라서 각 Ti
부트 스트랩 데이터 세트에 대해 트리를 만듭니다 Ki
. 일부 입력 데이터를 분류 D = {x1, x2, ..., xM}
하려면 각 트리를 통과하여 S
로 표시 될 수있는 출력 (각 트리에 대해 하나씩)을 생성 합니다 Y = {y1, y2, ..., ys}
. 최종 예측은이 세트에 대한 과반수 투표입니다.
Out-of-bag 오류 :
분류기 ( S
트리)를 만든 후 (Xi,yi)
원래 학습 세트 (예 :)의 각각 에 대해 포함하지 않는 T
모든 항목 Tk
을 선택합니다 (Xi,yi)
. 주의를 기울이는이 하위 집합은 원래 데이터 집합의 특정 레코드를 포함하지 않는 부 스트랩 데이터 집합 집합입니다. 이 세트를 out-of-bag 예라고합니다. 있다 n
등의 부분 집합 (원본 데이터 집합 T의 각 데이터 레코드 하나). OOB 분류자는 Tk
포함하지 않는 투표의 집계입니다 (xi,yi)
.
일반화 오류에 대한 out-of-bag 추정치는 훈련 세트에 대한 out-of-bag 분류기의 오류율입니다 (알려진 것과 비교 yi
).
왜 중요 함? Breiman [1996b]의 bagged 분류기에 대한 오류 추정에 대한 연구는 out-of-bag 추정이 훈련 세트와 동일한 크기의 테스트 세트를 사용하는 것만 큼 정확하다는 것을 보여주는 경험적 증거를 제공합니다. 따라서 out-of-bag 오류 추정치를 사용하면 따로 설정된 테스트 세트가 필요하지 않습니다.
(수정 해 주신 @Rudolf에게 감사드립니다. 그의 의견은 아래에 있습니다.)
Breiman의 원래 랜덤 포레스트 알고리즘 구현에서 각 트리는 전체 훈련 데이터의 약 2/3에 대해 훈련되었습니다. 숲이 건설됨에 따라 각 나무는 해당 나무를 만드는 데 사용되지 않는 샘플에 대해 테스트 할 수 있습니다 (교차 검증에서 제외하는 것과 유사 함). 이것은 아웃 오브 백 (out of bag) 오류 추정치로, 생성중인 임의 포리스트의 내부 오류 추정치입니다.
참조 URL : https://stackoverflow.com/questions/18541923/what-is-out-of-bag-error-in-random-forests
'programing' 카테고리의 다른 글
테스트 탐색기에서 실행되지 않는 테스트 (0) | 2021.01.09 |
---|---|
NSString에 영숫자 + 밑줄 문자 만 포함되어 있는지 확인 (0) | 2021.01.09 |
LINUX C에서 stdout과 STDOUT_FILENO의 차이점 (0) | 2021.01.08 |
package.json에서 'files'및 'directories'속성을 어떻게 사용합니까? (0) | 2021.01.08 |
JNI 코드에서 예외를 발생시키는 가장 좋은 방법은 무엇입니까? (0) | 2021.01.08 |