데이터 분석 / 기계학습 과정 중 개인적으로 가장 중요하게 생각되는 분야 중 하나가 데이터 전처리이다. 데이터를 분석하고, 시각화를 통해 데이터 Feature 간 관계성과 분포 등을 파악한다. 유의미한 Feature를 선택하거나 새로운 Feature를 생성하는 과정 등을 거치는 과정은 매우 필수적이고 중요한 과정이다.
해당 과정을 학습하면서 궁금했던 점이 있었다. 처음 데이터과학을 공부하면서 정규화와 트레이닝,테스트 데이터를 분리하는 과정을 공부하게 되면서 생긴 궁금증. 정규화는 트레이닝, 테스트 데이터셋으로 분리전에 진행을 하는게 좋을까? 아니면 분리 이후에 진행을 하는게 좋은가에 대한 궁금증이다.
정규화를 먼저하는게 좋을까? 트레이닝, 테스트 데이터 분리를 먼저하는게 좋을까? 아니면 데이터 전처리 과정 중 2개의 순서는 어떠한 영향도 주지 않을까? 이 궁금증에 대해 정리해 보고자 한다.
정규화 가볍게 정리하기
정규화는 기계학습 모델의 성능을 향상시키기 위해 사용되는 기법 중 하나로 지금도 많이 사용되고 있다. 정규화는 수치 데이터에 대해 특정 변환을 주어 성능을 향상 시키는 기법이다. 여기서 언급하는 정규화는 Feature Scaling 이다. Min-Max 정규화, Standard 정규화, Max Absolute 정규화, Robust 정규화 등이 있다.
정규화는 데이터의 Feature 값이 특정 범위, 정해진 구간 내에 들도록 하는 기법으로 스케일이 다른 여러 변수에 대해 스케일을 맞춰 모든 데이터 포인트가 동일한 정도의 중요로도 비교되도록 하는 것이 주요 포인트이다.
데이터를 정규화하는 데 사용되는 매개변수(최소, 최대, 평균 및 표준 편차)는 입력 및 출력 방향 모두에서 모델을 사용하는 데 필요하다.
- 입력: 정규화된 데이터를 사용하여 모델을 학습한다. 따라서 모델에 입력하기 전에 모든 입력을 척도에 맞게 정규화해야 한다.
- 출력: 모델이 정규화된 예측을 반환하므로 사용자에게 보내기 전에 원래 척도로 역정규화 해야 한다.
왜 데이터를 분리해야 하는가?
테스트 데이터 세트의 주요 목적은 모델의 성능을 가장 적게 편향되게 평가하는 것이다. 이를 달성하기 위해서는 평가 프로세스가 교육 중에 모델이 본 적이 없는 예를 사용하여 수행되어야 한다.
교육 및 테스트 데이터 세트는 다음과 같은 방식으로 분할한다
- 트레이닝 데이터: 모델 매개 변수(예: 신경망의 가중치)를 계산하는 데 사용되는 예
- 테스트 데이터: 모형 성능을 평가하는 데 사용되는 독립적인 데이터 집합이다. 테스트 데이터는 모델이 본 새로운 데이터에 가장 근접해야 하기 때문에 우리는 훈련에 테스트 데이터를 사용할 수 없다.
정규화는 데이터 분리 전? 후? 언제 해야 하는가?
분할하기 전에 Min-Max 정규화를 적용한다고 가정하. 최소값과 최대값에는 테스트 데이터가 포함되므로 테스트 예제의 정규화된 값은 항상 [0, 1] 범위에 존재한다. 이는 테스트 단계에서 모델의 성능에 영향을 미칠 수 있는 정규화 문제가 발생하지 않는다는 것이라는 것을 의미한다. 테스 데이터의 성능을 미리 아는 것은 위험하다.
그러나 새 데이터를 사용하면 정규화된 값이 [0, 1] 범위를 유지할 수 있다고 보장할 수 없다. 모델이 [0, 1] 범위의 예제를 사용하여 학습되었다는 점을 고려하면, 다른 범위의 데이터는 모델의 성능을 저하시킬 수 있다.
그렇다면, 올바르게 하기 위한 단계는 무엇인가?
정규화는 훈련 세트의 데이터만 사용하여 훈련 세트와 테스트 세트 간에 데이터를 분할한 후에 수행해야 한다. 테스트 세트는 보이지 않는 새로운 데이터의 역할을 하기 때문에 트레이닝 단계에서는 테스트 데이터에 접근할 수 없도록 되어 있기 때문이다. 훈련 전 또는 훈련 중에 테스트 세트에서 나오는 정보를 사용하는 것은 성능 평가에서 잠재적인 문제(편향성)을 보일 수 있다.
학습
- 테스트 세트를 얻기 위해 데이터를 분할하고 정규화 또는 학습에 사용하지 않는다.
- 학습 데이터를 기반으로 정규화하고 얻은 매개 변수를 저장한다.
예측
- 학습 중에 얻은 매개 변수를 사용하여 입력을 정규화하여 모델에 전달한다.
- 동일한 모수를 사용하여 예측을 역정규화하여 원래 척도로 사용자 출력 반환한다.
평가하기
- 실제 척도 예측을 얻는 테스트 세트 예측(이전 단계)
- 이러한 예측을 참조 예제와 비교하여 평가 메트릭을 얻습니다
결론적으로 데이터 분할 전에 정규화를 진행하면 편향된 평가가 될 수 있기에 편향된 평가를 피하기 위해 정규화 전에 분할을 해야한다.
참고자료
- https://www.baeldung.com/cs/data-normalization-before-after-splitting-set
- https://datascience.stackexchange.com/questions/54908/data-normalization-before-or-after-train-test-split
'AI > Data Science' 카테고리의 다른 글
[Pandas] Grouping Practice (0) | 2023.03.28 |
---|---|
t-value와 t-test (0) | 2023.03.28 |
[Data Science] 서울시 따릉이 이용정보 데이터 (0) | 2023.02.07 |
[Data Science] 월드컵 출전선수 골기록 데이터 (0) | 2023.02.07 |
[Data Science] 유튜브 공범컨텐츠 동영상 데이터 분석하기 (1) | 2023.01.19 |