Q

PRIVATE NAVIGATION MODE

ML4T_S 탭 잠금 해제

패스워드를 확인하면 이 브라우저에서 ML4T_S 탭과 검색 결과를 표시합니다.

STUDY SEARCH

학습 자료 검색

제목과 설명, 키워드, 학습 본문에서 찾습니다.

검색 범위

검색어를 입력해 주세요.

SEARCH THE NOTEBOOK

찾고 싶은 금융·통계·전략 개념을 입력해 보세요.

CHAPTER 08 / SECTION 02

8.2 정규화 회귀로 예측 안정시키기

릿지, 라쏘와 엘라스틱 넷을 비교하고 시간 순서에 맞춰 선택합니다.

8장. The ML Pipeline(머신러닝 파이프라인)초급 학습 노트

비슷한 지표가 서로 상쇄할 때 계수를 줄인다

ETF 두 개의 점수를 만들 때 최근 60일과 63일 모멘텀을 모두 넣었다고 하자. 훈련 자료에서 둘이 거의 같으면 계수 5와 −4를 붙여도, 각각 0.5를 붙여도 합계 점수는 비슷하다. 새 데이터에서 두 값이 조금만 엇갈리면 첫 모델의 점수가 크게 흔들린다. Regularized Regression(정규화 회귀)은 훈련 오차에 계수 크기에 따른 비용을 더해 이 상황에 대응한다.

절편을 따로 두고, 이해를 위해 세 모델의 오차 부분을 같은 척도로 적으면 다음과 같다. 각 행은 계수를 바꾸며 최소화할 값이다.

LRidge=∑i=1n(yi−y^i)2+λ∑j=1pβj2LLASSO=∑i=1n(yi−y^i)2+λ∑j=1p∣βj∣LEN=∑i=1n(yi−y^i)2+λ[r∑j=1p∣βj∣+1−r2∑j=1pβj2]\begin{aligned} L_{\mathrm{Ridge}} &= \sum_{i=1}^{n}(y_i-\widehat y_i)^2+\lambda\sum_{j=1}^{p}\beta_j^2 \\ L_{\mathrm{LASSO}} &= \sum_{i=1}^{n}(y_i-\widehat y_i)^2+\lambda\sum_{j=1}^{p}|\beta_j| \\ L_{\mathrm{EN}} &= \sum_{i=1}^{n}(y_i-\widehat y_i)^2+ \lambda\left[r\sum_{j=1}^{p}|\beta_j|+\frac{1-r}{2}\sum_{j=1}^{p}\beta_j^2\right] \end{aligned}
LRidge,LLASSO,LENL_{\mathrm{Ridge}},L_{\mathrm{LASSO}},L_{\mathrm{EN}}
Penalized Loss(벌점 포함 손실). 제곱오차와 벌점의 합, 퍼센트포인트 제곱.
i,ni,n
Observation Index and Count(관측 번호와 개수). 개.
j,pj,p
Feature Index and Count(특성 번호와 개수). 개.
yi,y^iy_i,\widehat y_i
Observed and Predicted Return(실제 및 예측 수익률). 퍼센트포인트.
βj\beta_j
Coefficient(계수). 표준화한 특성 1단위당 퍼센트포인트.
λ\lambda
Penalty Strength(벌점 강도). 벌점 항의 척도를 손실에 맞추는 비음수 조절값. 모형별 손실 정의에 따라 척도가 다르다.
rr
Mixing Ratio(혼합 비율). 0에서 1 사이, 단위 없음.

Ridge는 비슷한 특성에 큰 반대 계수를 붙이는 일을 줄인다

Ridge Regression(릿지 회귀)은 L2 Penalty(L2 벌점), 즉 계수의 제곱합을 더한다. 5와 −4의 제곱합은 41이고 0.5와 0.5의 제곱합은 0.5다. 두 조합의 훈련 오차가 비슷하면 두 번째에 가까운 해가 유리하다. 벌점이 0이면 유일한 최소제곱 해가 있는 경우 그 해로 돌아가고, 벌점이 커지면 계수는 점차 0에 가까워진다. Ridge 자체는 계수를 0으로 잘라 특성을 고르는 방식이 아니다.

절편을 분리한 중심화 입력에서 OLS는 입력의 교차곱 행렬을 역으로 푼다. Ridge는 그 행렬의 대각선에 벌점 강도를 더한다. 예를 들어 두 지표가 함께 움직이는 방향에는 관측 변화가 크지만 둘의 차이 방향에는 변화가 작다. 작은 고윳값을 그대로 분모에 쓰면 그 방향의 우연한 차이가 큰 계수로 바뀐다. 대각선에 값을 더하면 두 방향의 분모가 모두 커지되, 원래 분모가 작았던 방향이 상대적으로 더 많이 줄어든다.

21거래일 ETF 수익률 사례는 약 39만 4천 개 관측을 썼다. 아래 막대는 로그 간격 탐색에서 확인한 세 강도의 평균 IC를 비교한다. Information Coefficient(정보계수, IC)는 같은 날짜의 예측 순위와 실현 순위가 얼마나 일치하는지 나타낸다. 약한 벌점에서 평균 IC는 0.028이었다. 약 3만에서 0.047, 100만 부근에서 0.046이었다.

ETF의 Ridge 강도와 평균 IC
약한 벌점 · 100 이하0.028
약 3만0.047
약 100만0.046
공통 눈금은 단위 없는 평균 IC다. 점선은 약한 벌점의 결과다. 평균 IC의 정점과 기간별 안정성이 가장 좋은 강도는 다르다.

IC Information Ratio(IC 정보비율, ICIR)는 평균 IC를 해당 비교에서의 IC 표준편차로 나눈 값이다. 100만 부근에서는 평균 IC가 0.028에서 0.046으로 약 64% 높아지고 폴드 간 표준편차가 약 3분의 1 줄었다. 그래서 ICIR은 0.54에서 1.30으로 약 2.4배가 됐다. 평균이 조금 낮아져도 기간별 흔들림이 더 줄면 비율은 높아질 수 있다.

LASSO는 작은 효과를 0으로 지울 수 있다

LASSO Regression(라쏘 회귀)은 L1 Penalty(L1 벌점), 즉 계수 절댓값의 합을 더한다. 계수가 아주 작을 때 제곱 벌점은 미미하지만 절댓값 벌점은 여전히 계수 크기에 비례한다. 오차를 조금만 개선하는 입력은 계수를 0에서 꺼낼 만큼의 이득을 주지 못한다.

두 계수를 가로와 세로축에 두면 같은 제곱 벌점의 경계는 원, 같은 절댓값 벌점의 경계는 마름모다. 훈련 오차를 줄이는 등고선이 마름모 꼭짓점에 닿으면 그 지점에서는 한 좌표가 정확히 0이다. 살아남은 특성만 관리하면 입력 파이프라인을 줄일 수 있다. 비슷한 특성끼리는 훈련창을 바꿀 때 어느 하나가 다른 하나를 대신할 수 있으므로, 선택 목록이 바뀌었다고 경제적 원인이 바뀌었다고 해석하기 어렵다.

ETF 계수 경로의 가로축은 벌점 강도, 세로축은 표준화한 특성의 계수다. 57개 특성 중 크기가 큰 10개의 경로를 따라가면 Ridge에서는 여러 선이 부드럽게 0에 가까워지고, LASSO에서는 선마다 다른 강도에서 0에 도달한다. LASSO 강도 0.0001 부근에서 이미 약 4분의 1이 0이 됐고, 0.01 이상에서는 거의 모두 사라졌다. 같은 사례에서 강한 LASSO의 시험 IC가 OLS보다 낮았다. 모멘텀과 변동성의 여러 기간에 분산된 정보도 제거됐을 수 있다. 평균 IC 옆의 한 표준편차 막대는 폴드 점수의 흔들림을 보여 준다.

표준화한 한 특성의 양의 계수가 벌점이 없을 때 0.8%p라고 하자. 약한 벌점에서 Ridge는 0.6%p, LASSO는 0.5%p로 줄고 강한 벌점에서 각각 0.2%p와 0이 됐다고 가정한다. 이 예는 각 방식의 설정 강도를 약·강으로 나눠 계수의 변화만 비교한다.

벌점 강도에 따른 한 특성의 계수
세로축 표준화 특성 한 단위당 예측 수익률 기여 (%p) · 가로축 벌점 단계
00.20.40.60.8없음약함강함
RidgeLASSO
끝점에서 LASSO는 기여를 0으로 만들고 Ridge는 작은 가중치를 남긴다.

Elastic Net은 묶음을 살리면서 일부를 지운다

Elastic Net(엘라스틱 넷)은 제곱 벌점으로 비슷한 입력의 계수를 함께 줄이면서, 절댓값 벌점으로 약한 입력을 0으로 만들 수 있다. 묶음이 반드시 통째로 선택되는 것은 아니므로 각 폴드의 활성 특성도 확인한다.

방법같은 신호를 담은 두 특성운영에서 확인할 기록
Ridge둘을 남겨 가중치를 나눠 가질 수 있다계수 크기와 같은 자산의 재학습 전후 순위
LASSO한 특성이 다른 특성을 대신할 수 있다계수가 0이 되는 지점과 폴드별 선택 목록
Elastic Net둘을 같이 남기거나 약한 특성을 지울 수 있다벌점 강도와 혼합 비율의 폴드별 변화

혼합 비율이 1이면 LASSO 형태, 0이면 Ridge 형태다. 구현마다 목적함수의 분모가 다르다. 예컨대 Ridge에서 제곱오차를 합하고 Elastic Net에서 관측 수의 두 배로 나누면 같은 숫자의 벌점은 다른 세기로 작용한다. 비교할 때 오차의 합·평균, 표본 수, 표준화 여부를 먼저 확인한다. 혼합 비율 0.1, 0.3, 0.5, 0.7, 0.9와 로그 간격 강도를 검증할 수 있다. 여러 창에서 최적 비율이 낮으면 분산 신호와 맞는지 살피고, 최적값이 자주 바뀌고 점수 차도 작다면 여러 후보의 예측을 평균하는 방식을 별도로 검증할 수 있다.

단위를 맞추고 미래 값을 섞지 않는다

같은 변화를 거래량 100만 주 또는 1백만 주 단위의 숫자 1로 기록할 수 있다. 큰 숫자로 기록하면 같은 예측을 만들기 위한 계수가 작아져 벌점이 작아진다. Standardization(표준화)은 훈련 자료의 평균을 빼고 표준편차로 나눠, 계수가 특성의 통상적인 변화 폭에 대응하게 한다. 훈련 평균 4%, 표준편차 2%p인 모멘텀 6%는 표준화 후 1이다. 해당 계수가 0.3이면 이 입력은 평균 입력 대비 예측에 0.3%p를 보탠다.

이상치 하나가 표준편차를 키워 나머지 값을 압축할 수 있다. Winsorization(극단값 절단)은 예를 들어 훈련 자료의 1·99백분위 바깥 값을 경계값으로 바꾼다. 절단 뒤 평균과 표준편차를 구하고, 검증과 시험 행에는 훈련에서 구한 값만 적용한다. 다음 창에서 다시 적합한다. 변동이 없는 열은 표준편차가 0이므로 나누기 전에 상수 열로 처리한다. 큰 값을 자를지 자체도 데이터 오류와 실제 급등락을 구분한 뒤 결정한다.

벌점 후보를 골랐던 구간과 채점 구간을 분리한다

강도는 모델이 계수를 적합하기 전에 정해야 하는 Hyperparameter(하이퍼파라미터)다. Grid Search(격자 탐색)는 미리 정한 값을 순서대로 시험한다. Optuna에서 Tree-structured Parzen Estimator(트리 구조 파르젠 추정기, TPE)를 쓰면, 앞서 점수가 좋았던 값의 분포를 바탕으로 다음 후보를 선택한다. 각 후보는 같은 순차 전진 절차로 채점한다.

ETF 검증에서 고른 방식에 따라 달라진 평균 IC
세로축 평균 IC · 가로축 평가 절차
-0.04-0.0200.020.04단일 검증중첩 검증
보고된 평균 IC
같은 사례에서 후보 선택과 평가를 분리하자 평균 IC의 부호가 달라졌다. 두 점을 잇는 선은 시간 경로가 아니다.

Nested Walk-forward Validation(중첩 순차 전진 검증)은 후보 선택을 바깥 시험보다 앞선 기간에 가둔다.

한 바깥 시험창에서 모델을 고르고 점수를 남기는 순서
  1. 안쪽 훈련·검증 반복
    앞쪽 훈련에서만 절단·표준화를 적합한다. 그다음 검증에서 후보별 순위 점수를 기록한다.
  2. 후보 확정
    검증 점수와 폴드별 편차를 보고 강도를 고른 뒤 바깥 시험 전에 허용된 과거 데이터로 재학습한다.
  3. 시간 완충 후 시험
    시험 시작 뒤에 확정되는 학습 라벨을 제거한다. 21거래일 라벨이라면 겹치는 보유 구간을 검사한다.
  4. 바깥 시험 라벨 확정 후
    고정 모델을 채점한다. 창을 앞으로 옮겨 같은 절차를 반복한다.

바깥 시험에 높은 점수를 준 강도를 골라 그 점수를 다시 최종 성능으로 쓰면 후보를 많이 시험한 효과가 섞인다.

표준화된 ETF 자료 약 40만 행에서 Ridge 벌점을 100까지만 시험하면 사실상 OLS 부근만 비교할 수 있다. 넓은 탐색 사례에서는 0.01에서 10억까지 확인했다. 한 강도에서 얻은 평균 IC의 작은 차이보다 폴드 표준편차 0.04–0.10이 더 컸다. 특정 시장 상태나 한 폴드가 최적 후보를 만들었는지 확인하려면 후보 수, 탐색 범위, 시도별 점수 분포와 폴드별 순위를 남긴다. 중첩 검증은 계산량이 늘지만 안쪽 검증 점수와 선택된 모형의 바깥 성능을 구분한다.

짧은 주기로 갱신할 때는 Incremental Update(증분 갱신)로 확정 라벨이 들어온 작은 묶음마다 기존 계수를 업데이트할 수 있다. Stochastic Gradient Descent(확률적 경사 하강법, SGD)는 그 묶음에서 손실을 줄이는 방향으로 조금 이동한다. 이동 폭이 너무 크면 최근 잡음에 끌리고 너무 작으면 변화에 늦는다. 고정된 검증 절차로 갱신률과 성능을 추적하고 주기적으로 전체 재학습 결과와 비교한다.

손실은 학습할 값을, 지표는 평가할 결과를 정한다

실제 수익률에서 예측을 뺀 오차가 1%p와 5%p라고 하자. 제곱 손실에서는 큰 오차의 비중이 25배고 절대 손실에서는 5배다. 평균제곱오차를 줄이면 조건부 평균을 추정하는 방향으로 학습한다. Mean Absolute Error(평균절대오차, MAE)는 조건부 중앙값을 겨냥해 큰 오차 한 건의 영향을 줄인다. Huber Loss(후버 손실)는 작은 오차는 제곱으로, 정한 문턱을 넘은 추가 오차는 선형으로 벌준다. 문턱이 크면 제곱 손실에 가까워지고 작으면 큰 충격의 영향이 일찍 제한된다.

Quantile Regression(분위수 회귀)은 오차 방향별 벌점을 다르게 줘, 예를 들어 비슷한 입력에서 실제 수익률의 약 5%가 그 아래에 놓이는 값을 학습한다. 평균보다 하방 위험이 중요한 판단에 쓸 수 있다. 종목 간 상대 순위를 거래하는 전략은 그 목적에 맞는 순위 지표도 따로 확인한다.

평가값계산과 읽는 법
IC날짜별로 두 순위의 스피어만 상관을 구해 평균한다. 크기 오차보다 순위 일치에 민감하다.
Root Mean Squared Error(제곱근 평균제곱오차, RMSE)와 MAE오차 1%p와 5%p에서 RMSE는 약 3.61%p, MAE는 3%p다. 같은 라벨의 단순 평균 예측과 비교한다.
상·하위 스프레드거래하는 상·하위 분위의 실현 수익률 차이를 계산해 실제 선택 구간이 분리되는지 확인한다.
순위의 재학습 안정성연속한 두 훈련창에서 적합한 모델로 같은 시험 행을 채점해 순위 상관을 구한다.
Turnover(회전율)목표 비중이 바뀌어 얼마나 거래해야 하는지 계산한다. 거래 단가와 함께 순손익 평가에 사용한다.

앞의 1%p, 5%p 오차에 같은 비중을 주면 RMSE와 MAE는 다음과 같이 계산된다.

12+522=13≈3.61 퍼센트포인트∣1∣+∣5∣2=3 퍼센트포인트\begin{aligned} \sqrt{\frac{1^2+5^2}{2}} &= \sqrt{13} \approx 3.61\,\text{퍼센트포인트} \\ \frac{|1|+|5|}{2} &= 3\,\text{퍼센트포인트} \end{aligned}

Coefficient of Determination(결정계수, R²)은 기준 평균을 썼을 때보다 제곱오차가 얼마나 줄었는지를 비교한다. 시험 데이터에서 기준보다 오차가 크면 음수가 될 수 있다. 순위 지표와는 읽는 기준이 다르다.

중간 순위 자산의 오차만 줄면 전체 오차는 작아져도 상·하위 포트폴리오는 그대로일 수 있다. IC가 올라도 순위가 매일 뒤집히면 주문 비용이 늘어난다. 후보 선택 단계에는 검증 점수, 전략 평가에는 실제 주문과 비용을 적용한 손익을 기록한다.

비슷한 관측을 여러 표로 세지 않는다

예를 들어 월요일과 화요일에 같은 ETF의 향후 21거래일 라벨을 만들면 대부분 같은 거래일을 포함한다. Uniqueness Weighting(고유성 가중)은 보유 구간의 날마다 동시에 살아 있는 라벨 수의 역수를 구하고, 그 역수들을 평균한다. 이틀 동안 동시 라벨이 각각 1개와 2개라면 고유성은 (1+1/2)/2=0.75(1+1/2)/2=0.75다. 표본 의존을 줄이는 학습 가중이며, 훈련과 시험이 겹치지 않게 나누는 작업은 별도로 필요하다.

Recency Weighting(최신성 가중)은 최근 자료에 더 큰 값을 준다. 10일 지날 때마다 가중치를 반으로 줄이면 고유성 0.75인 10일 전 행의 결합 가중치는 0.375다. 두 가중치를 곱해 손실에 반영한다. 최신성 감쇠가 너무 빠르면 한 차례 급락이 모델을 지배할 수 있다. 가중치 0.8, 0.1, 0.1의 합은 1이지만 유효 표본 수는 1/(0.82+0.12+0.12)≈1.52개1/(0.8^2+0.1^2+0.1^2)\approx1.52\text{개}다. Effective Sample Size(유효 표본 수)는 이런 집중을 확인한다. 실제로 독립인 관측이 1.52개라는 뜻까지 담지는 않는다.