다양한 예측 모델은 항상 오류가 존재한다.
실생활에서 존재하는 모든 데이터를 분석할 수는 없기에 전체 모집단 중 일부 샘플 데이터로 모델을 학습하게 되는데 여기서 오류가 발생하게 된다.
x라는 features와 y라는 target 을 가진 데이터셋이 있을 때, y를 예측하는 모델 f(x)가 있다고 가정해보자
D라는 트레이닝 샘플을 선택하고 그에 해당하는 모델은 fd(x)라고 할 수 있다.
Bias는 여러 학습 데이터셋으로 학습한 모델의 평균 예측값과 실제값의 차이를 의미한다. 너무 단순한 모델을 사용하면 bias가 증가한다. -> Underfitting

Variance는 모델이 데이터에 민감하는 반응하는 정도를 의미한다. 너무 복잡한 모델을 사용하면 Variance가 증가한다. 학습데이터에는 잘 맞지만 테스트 데이터에는 잘 맞지 않게된다 -> Overfitting


머신러닝에서 에러는 주로 편향과 분산으로 분석된다.
[Error = Bias² + Variance]

주로 Variance와 Bias는 반비례 관계이며 이를 Bias-Variance Tradeoff 라고한다.
Training Dataset 평가
학습한 데이터 그대로 모델을 평가하는 방법이다.
Independent Test Dataset
학습데이터와 전혀 다른 시기의 데이터로 평가한다. 충분한 데이터가 있을 때 사용가능하며 현실적인 일반화 성능 평가가 가능하다.
Holdout Method
데이터를 훈련/테스트 데이터로 나눠서 평가한다.
간단하고 빠르지만 나눌 때 마다 결과가 달라질 수 있다.
Stratified Sampling
훈련/테스트 데이터로 나눌 때 각 클래스 비율을 유지한다.
ex) 전체 데이터에서 20%가 클래스 A 일때, 훈련/테스트 데이터 모두 20%가 클래스A여야 한다.
대표성이 있는 분할 방법으로 불균형 데이터셋에서 매우 중요하다. (질병진단 등)
Repeated Holdout
Holdout을 여러 번 반복하고 오차율을 평균화한다.
K-Fold Cross-Validation
데이터를 k개의 폴드(fold)로 나눠서 평가한다.
한 fold를 test로 나머지를 train으로 나눈후 반복한다.
보통 k=10이 일반적이고 각 fold는 stratified(계층화)가 가능하다.
모든 데이터가 학습과 데이터에 사용된다. 분산이 낮고 일반화가 잘 된다.
Leave-One-Out Cross Validation (LOO-CV)
각 데이터를 1개씩 test로 나머지를 train으로 사용한다.
n개의 데이터는 n번의 모델학습을 한다.
데이터가 적을 때 활용할 수 있고 반복마다 완전 분리된 테스트 셋을 사용한다는 장점이 잊지만 매우 느리고 계층화가 불가능하다.
Bootstrap Method
복원추출로n개의 데이터셋에서 n개를 다시 뽑아 학습용 데이터를 구성한다.
복원추출이란 한 번 뽑은 데이터를 다시 뽑을 수 있어서 동일한 데이터가 여러 번 포함될 수 있고, 일부 데이터는 아예 포함되지 않을 수도있다. 샘플이 한 번도 뽑히지 않을 확률은 약 0.368이다.

평균적으로 약 63.2%는 포함되고 36.8%는 빠지게된다. 이를 이용해 0.632 bootstrap이라 부르기도 한다.
복원추출로 만든 학습용 데이터를 Bootstrap Sample이다.
Bootstrap Sample에 포함되지 않은 데이터는 Out-of-Bag데이터라하고 이를 테스트 데이터로 이용한다.
