본문으로 건너뛰기
647 / LEAKAGE AND REPRODUCIBILITY
먼저 알아두면 좋아요 · 예측 정보 집합, 상관과 조건부 예측을 복습하세요.
단원 목록 (650) · 가용 시각과 평가 누출
이해하는 속도로 읽으세요.개념도이론실험확인 문제

판단할 때 알 수 있었던 것

점수가 좋아진 이유가 미래 정보를 미리 본 것인지 확인하려면 판단 시각의 정보 경계를 정해야 합니다.

Y = 0.8F + 0.6N

현재 특성, 미래 특성, 목표 자체를 쓴 예측의 오차를 각각 구합니다.

가용 정보와 누출된 정보 비교하기
이 단원 목차

1. 판단 시점에 사용할 정보 정하기

시각 tt의 예측에 사용하는 각 특성이 언제 공개되는지 기록합니다. 보고 지연과 이후 수정도 포함합니다. 날짜가 tt인 값이라도 판단 시점 뒤에 공개될 수 있습니다. 목표 예측 구간과 학습 정답을 사용할 수 있었던 시각도 정합니다. Kapoor와 Narayanan의 데이터 누출 연구

2. 예측 가능성이 제한된 과정 만들기

서로 독립이며 평균 0, 분산 1인 변수를 X,U,NX,U,N이라 합니다. 미래 신호를 F=ρX+1−ρ2UF=\rho X+\sqrt{1-\rho^2}U, 목표를 Y=0.8F+0.6NY=0.8F+0.6N으로 둡니다. 판단 시점에는 XX만 있습니다. 이 정보의 최적 선형 예측은 0.8ρX0.8\rho X이고 평균제곱오차는 0.64(1−ρ2)+0.360.64(1-\rho^2)+0.36입니다.

3. 미래 특성 누출의 효과 재기

평가 과정에서 FF를 노출하면 0.8F0.8F로 예측해 MSE 0.36을 얻습니다. 목표 자체를 노출하면 오차가 0입니다. ρ=0\rho=0에서 정당한 정보의 오차는 1이므로 좋아 보이는 결과가 사용할 수 없던 정보에서 올 수 있습니다. ρ\rho가 커지면 현재 특성에 실제 예측 정보가 생깁니다.

4. 연구 질문에 맞게 분할하기

미래 예측에서는 각 학습과 시험 판단 시점에 무엇을 사용할 수 있었는지 재현합니다. 배포 시스템이 이전 관측을 쓸 수 있다면 시험 특성에서도 과거 관측을 사용할 수 있습니다. 정규화와 특성 선택은 허용된 학습 정보로 적합합니다. 새로운 장치에 대한 주장이면 장치 단위로 분할하고 식별자나 유사 중복 자료가 시험 정답을 알려 주는지도 확인합니다.

가용 정보로 만든 예측기의 잔차를 전개하면

Y−0.8ρX=0.81−ρ2 U+0.6N,∣ρ∣≤1Y-0.8\rho X=0.8\sqrt{1-\rho^2}\,U+0.6N,\qquad |\rho|\le1

입니다. 중심화·단위 분산·독립성을 이용하면

E[(Y−0.8ρX)2]=0.64(1−ρ2)+0.36\mathbb E[(Y-0.8\rho X)^2]=0.64(1-\rho^2)+0.36

입니다. 독립성 때문에 XX를 조건으로 한 잔차 평균도 0입니다. 따라서 제곱적분 가능한 임의의 예측기 g(X)g(X)의 위험은 위 잔차 위험에 E[(0.8ρX−g(X))2]\mathbb E[(0.8\rho X-g(X))^2]를 더한 값입니다. 지정한 가용 정보에서의 최적성을 증명합니다. ρ=0.5\rho=0.5이면 가용 정보의 위험은 0.84이고 미래 변수를 노출하면 0.36입니다. 0.48의 감소는 평가가 노출한 정보의 변경에서 발생합니다.

5. 합성 사례의 누출을 정확히 검산하기

from itertools import product
from math import isclose, sqrt

rho = .5
squared = {"available": [], "future": [], "target": []}
for x, u, n in product([-1, 1], repeat=3):
    future = rho*x+sqrt(1-rho**2)*u
    y = .8*future+.6*n
    predictions = {"available": .8*rho*x, "future": .8*future, "target": y}
    for name, prediction in predictions.items():
        squared[name].append((y-prediction)**2)
mse = {name: sum(values)/len(values) for name, values in squared.items()}
assert isclose(mse["available"], .64*(1-rho**2)+.36)
assert isclose(mse["future"], .36) and mse["target"] == 0
print(mse)

6. 누출 검사를 재현할 근거 보존하기

특성 정의, 가용 시각 규칙, 분할 식별자, 코드 버전, 전처리 상태, 시드를 저장합니다. 기록한 자료 상태에서 평가를 재실행합니다. 같은 누출이 있으면 재실행에서도 같은 낙관적인 결과가 나올 수 있으므로 재현성과 정보 조건의 타당성을 각각 확인합니다.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. 값의 관측 날짜가 판단 시각보다 이르면 항상 사용할 수 있나요?
2. 같은 실행으로 같은 결과가 나오면 누출이 없다고 할 수 있나요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.