CHAPTER 09
9.1 나무 여러 그루로 예측하기
결정 트리의 분할부터 랜덤 포리스트의 평균과 부스팅의 오차 보정까지 살핍니다.
한 번에 두 가지 조건을 적용하는 나무
다음 주 수익률을 추정하는 연구자가 과거 주식 기록을 본다. 변동성이 낮은 그룹에서 최근 상승세가 강한 두 종목의 실제 다음 주 수익률이 3%, 5%이고, 약한 두 종목은 −1%, 1%였다고 하자. 네 종목을 한데 두면 평균은 2%다. 둘로 나누면 강한 그룹은 4%, 약한 그룹은 0%로 예측한다.
제곱 오차 합은 분할 전 20 제곱 퍼센트포인트, 분할 후 4 제곱 퍼센트포인트다. 분할 전에는 네 오차의 크기가 1, 3, 3, 1 퍼센트포인트였고, 분할 뒤에는 모두 1 퍼센트포인트이기 때문이다. 나무는 여러 입력과 경계를 시험해 이렇게 손실이 많이 줄어드는 분할을 고른다. 상승·하락 분류라면 자식 그룹에 한 방향이 얼마나 모였는지 Information Gain(정보 이득) 등으로 비교한다.
분할을 더 진행할 수 없는 끝을 Leaf(잎)라고 한다. 새 종목은 변동성 조건과 상승세 조건을 차례로 통과해 잎의 예측값을 받는다. 흔들림이 큰 가지에서는 상승세를 다시 묻지 않을 수도 있다. 연속값을 경계와 비교하므로 보통 표준화가 필요하지 않으며, 업종 같은 범주값은 구현에 따라 별도 변환이나 범주 전용 분할이 필요하다.
독립적으로 키워 평균내기
학습 기록에 급등 종목 몇 개가 새로 들어오면 첫 분할이 바뀌고, 아래 가지도 연쇄적으로 달라질 수 있다. 비슷한 자료로 다시 학습할 때 예측이 크게 흔들리는 성질이 High Variance(높은 분산)다. Bootstrap Aggregating(부트스트랩 집계, Bagging)은 원래 기록에서 복원 추출해 여러 학습 표를 만든다. 한 표 안에서 같은 행이 두 번 뽑힐 수 있다.
Random Forest(랜덤 포리스트)는 각 분할에서도 입력 후보 일부만 무작위로 뽑는다. 모든 나무가 강한 특성 하나를 첫 분할에 쓰면 함께 틀릴 가능성이 높기 때문이다. 회귀에서 한 종목을 세 나무가 1%, 3%, 2%로 예측하면 평균은 2%다. 나무별 오차가 서로 다른 방향으로 난 경우 평균으로 흔들림이 줄어든다. 개별 나무가 깊어도 나무 수를 늘리면서 평균이 안정될 수 있지만, 공통된 오차나 시점 누출은 평균으로 사라지지 않는다.
남은 오차를 보고 다음 나무 키우기
실제 수익률이 5%인 경우 세 나무가 모두 2%를 내면 평균도 2%다. Boosting(부스팅)은 첫 예측 뒤에 남은 3 퍼센트포인트를 다음 모델의 학습 대상으로 삼는다. 다음 나무가 비슷한 조건에서 반복되는 과소 예측을 찾으면 그 값을 기존 예측에 더한다. 우연히 발생한 급등까지 그대로 따라가지 않도록 작은 보정량을 쓰고 검증에서 멈출 지점을 고른다.
기업 특성 실험에서 1967–2016년 자료를 학습 약 41만 행, 검증 약 31만 행, 시험 약 50만 행으로 나눴다. 시험 구간에서 날짜별 종목 순서가 실제 수익률 순서와 얼마나 맞는지를 나타내는 Information Coefficient(정보계수, IC)는 랜덤 포리스트가 0.056, 세 부스팅 구현이 0.058–0.060이었다. 같은 데이터의 비교에서 부스팅이 앞섰고, 부스팅 구현 간 차이도 작았다. 다른 날짜나 라벨에서도 같은 순서가 나오는지는 같은 방식으로 다시 비교해야 한다.