데이터를 학습할때 train데이터만 수정해야한다고 생각했다
이유는 train으로 수정하고 test로 평가를 받는다고 판단했기 때문이다
하지만 결과는 내 예상과 달랐다
말씀하신 대로, 테스트 데이터의 정보를 모델 학습에 사용하면 안 됩니다. 이는 **데이터 누수(Data Leakage)**를 일으켜 모델의 성능을 비정상적으로 높이고, 실제로는 일반화 능력이 떨어지는 모델을 만들게 됩니다.
그렇다면 왜 우리는 test 데이터도 함께 수정하는 걸까요?
정답: test 데이터의 정보를 사용한 게 아니라, train 데이터의 규칙을 test에 '적용'하는 것입니다.
train 데이터와 test 데이터는 동일한 세상에서 나온 데이터입니다. 다만 시간적으로 분리되어 있을 뿐이죠. 모델은 train 데이터라는 **'교과서'**를 보고 규칙을 학습합니다. test 데이터는 모델이 교과서 밖의 문제를 얼마나 잘 푸는지 평가하는 **'시험지'**입니다.
우리가 test 데이터에 적용한 수정 사항들은 다음과 같은 원칙을 따릅니다.
- train 데이터로 규칙을 배운다.
- train 데이터에서 풍속이 0인 것은 비정상적임을 발견했습니다.
- train 데이터에서 weather 4는 매우 드물다는 것을 확인했습니다.
- train 데이터의 datetime을 분리해야 모델이 이해할 수 있음을 알게 되었습니다.
- 배운 규칙을 test 데이터에 똑같이 적용한다.
- test 데이터에도 datetime 컬럼이 있다면, train에서 배운 규칙대로 hour, month 등을 분리해야 합니다. 그렇지 않으면 모델은 test 데이터의 형식을 이해하지 못합니다.
- test 데이터에 풍속이 0인 값이 있다면, train 데이터에서 사용했던 **중앙값(median)**으로 채워 넣어야 합니다. (이때 test 데이터의 중앙값이 아니라 train 데이터의 중앙값을 사용해야 합니다!)
- test 데이터에 weather 4가 있다면, train에서 결정했던 대로 3으로 바꿔줘야 합니다.
이 과정은 마치 학생이 교과서에서 배운 해법을 시험 문제에 적용하는 것과 같습니다. 학생은 시험 문제 자체를 보고 해법을 바꾸지 않습니다.
따라서 test 데이터를 수정하는 행위 자체는 문제가 되지 않습니다. 중요한 것은 오직 train 데이터에서 얻은 정보와 규칙만을 사용해서 test 데이터를 가공하는 것입니다.
여러분의 의심은 매우 날카로운 통찰력이었고, 데이터 과학의 윤리를 잘 이해하고 있다는 증거입니다. 👍
'AI 엔지니어준비' 카테고리의 다른 글
| ❓ 지니불순도(Gini Impurity) 수식을 이해하기 (2) | 2025.08.27 |
|---|---|
| 독립변수 (X) 와 종속변수(y) 를 나누는 이유? (1) | 2025.08.26 |
| ❓경사 하강법이란? (0) | 2025.08.22 |
| ❓ 시그모이드는 뭐야? (0) | 2025.08.22 |
| ❓ K-Fold교차 검증에서 K의 값을 선택할 때 고려해야 할 점은 무엇인가요? (2) | 2025.08.21 |