작성
·
393
0
1. test set의 결측값은 train set의 median(혹은 mean 등)으로 대체한다고 교재에서 나와있습니다. test set의 median을 사용하면 안되는 이유가 훈련세트에서 학습한 것이 소용없어진다고 설명되어있는데 왜 소용이 없어지는건가요? 데이터의 중앙값을 결측치로 대체하는 것을 모델의 일부라고 생각하면 가능한 것 아닌가요??
2. 교재(107p)에서 scaling은 훈련 세트에만 먼저 적용 후, 훈련세트와 테스트 세트에 대해 transform() 메서드를 사용한다고 나와있습니다. 이 말의 뜻이 이해가 잘 안됩니다.. 표준화로 예를 들면 다음과 같은 과정을 거치는것이 맞나요? (tr는 훈련세트를, te는 테스트 세트를 의미합니다)
2-1) 훈련세트의 mean(x_tr), sd(x_tr)을 계산한다.
2-2) 훈련세트에 표준화를 한다 -> (x_{i}-mean(x_tr))/sd(x_tr), for all i = 1, ... n_tr
2-3) 테스트 세트에 표준화를 한다 -> (x_{i}-mean(x_tr))/sd(x_tr), for all i = 1, ... n_te
만약 2-3)의 과정에서 mean(x_tr), sd(x_tr)이 아니라 mean(x_te), sd(x_te)를 사용해야하는 것이라면 1번의 결측값 대체 과정에서는 trian set의 median을 이용해야하고 스케일링 과정에서는 왜 test set의 평균과 표준오차를 사용하는 이유가 무엇인가요??
답변 2
1
0
안녕하세요. 박해선입니다. 훈련 세트에서 누락된 값을 중간값으로 대체하는 경우 이 중간값은 훈련 세트의 통곗값입니다. 훈련 세트와 테스트 세트가 다른 통곗값을 사용할 경우 훈련 세트에서 훈련한 모델을 올바르게 적용할 수 없습니다. 심지어 테스트 샘플 한 개만 있을 때도 모델은 예측값을 만들 수 있어야 합니다. 이에 대한 조금 더 자세한 내용은 "개정판-파이썬 라이브러리를 활용한 머신러닝" 3장을 참고하세요. 표준화도 마찬가지로 훈련 세트의 평균과 표준편차를 사용해야 합니다. 감사합니다.