원본 데이터를 그대로 사용한다면 좋은 결과를 기대하기 어렵습니다. 수집한 데이터에는 노이즈와 결측값 그리고 불일치한 형식이 포함되어 있고 이를 정제하지 않으면 모델이 잘못된 패턴을 학습할 수 있으며 전처리 품질이 최종 성능에 직접적인 영향을 미칩니다. 데이터 특성에 맞는 적절한 전처리 방법을 선택하는 것이 중요하고 각 단계를 체계적으로 수행하여 일관성을 유지해야 하며 자동화할 수 있는 부분은 파이프라인으로 구축하여 재현성을 높이는 것이 바람직합니다.

데이터에 빠진 값이 있으면 처리 방법을 결정해야 합니다. 결측값이 많은 열은 삭제하는 것이 나을 수 있고 일부만 빠진 경우 평균이나 중앙값으로 채우거나 예측 모델로 추정하는 방법이 있으며 결측 여부 자체가 의미 있는 정보일 때는 별도 범주로 표시할 수 있습니다. 무작위로 빠진 것인지 특정 패턴이 있는지 분석하여 적절한 방법을 선택하고 시계열 데이터는 앞뒤 값으로 보간하는 것도 가능하며 범주형 데이터는 최빈값으로 채우거나 별도 카테고리를 만드는 것이 효과적입니다. 결측값 처리 전후를 비교하여 데이터 분포가 크게 왜곡되지 않았는지 확인하는 것이 필요합니다.
극단적인 값은 모델에 악영향을 줄 수 있습니다. 통계적 방법으로 평균에서 멀리 떨어진 값을 찾아내고 시각화를 통해 분포를 확인하여 이상치를 발견하며 도메인 지식을 활용하여 실제 오류인지 의미 있는 극값인지 판단하는 것이 중요합니다. 측정 오류나 입력 실수로 생긴 이상치는 제거하거나 수정하고 실제 발생 가능한 극값은 유지하되 영향을 줄이기 위해 변환을 적용하며 이상치를 별도로 분류하여 특별히 다루는 방법도 있습니다. 상한과 하한을 정하여 범위를 벗어난 값을 잘라내거나 로그 변환으로 극값의 영향을 완화할 수 있으며 업무 맥락을 고려하여 신중히 결정해야 합니다.

서로 다른 범위를 가진 변수들을 조정해야 합니다. 최소-최대 정규화로 0과 1 사이로 변환하거나 표준화로 평균 0과 표준편차 1로 맞추는 방법이 일반적이고 모델 특성에 따라 적절한 방법을 선택하는 것이 필요합니다. 신경망은 입력 범위가 비슷할 때 학습이 안정적이고 거리 기반 알고리즘은 스케일 차이에 민감하므로 정규화가 필수이며 트리 기반 모델은 스케일링이 덜 중요하지만 해두면 해석이 쉬워집니다. 학습 데이터로 계산한 파라미터를 저장했다가 검증과 테스트 데이터에도 동일하게 적용해야 데이터 유출을 방지할 수 있습니다.
범주를 숫자로 바꾸는 방법이 필요합니다. 순서가 없는 범주는 원-핫 인코딩으로 이진 벡터로 변환하고 순서가 있는 범주는 레이블 인코딩으로 정수로 매핑할 수 있으며 범주가 많을 때는 차원이 너무 커지지 않도록 주의해야 합니다. 빈도가 낮은 범주는 기타로 묶어 차원을 줄이고 의미 있는 순서가 있다면 임베딩 기법을 활용하는 것도 효과적입니다.
고급 인코딩 기법도 활용할 수 있습니다. 범주별 타겟 평균값으로 인코딩하여 예측력을 높이거나 범주 출현 빈도로 변환하여 희소성을 반영할 수 있으며 과적합 위험을 관리하기 위해 교차 검증과 함께 사용하는 것이 바람직합니다. 타겟 인코딩은 정보 유출 위험이 있으므로 학습 데이터 내에서만 계산하고 검증 데이터에 적용하는 순서를 지켜야 합니다.


자연어는 별도의 처리가 필요합니다. 불필요한 공백과 특수문자를 제거하여 노이즈를 줄이고 대소문자를 통일하여 일관성을 확보하며 토큰화로 단어나 문장 단위로 분리하는 것이 기본입니다. 불용어를 제거하여 의미 없는 단어를 걸러내고 어간 추출이나 표제어 추출로 단어를 기본형으로 변환하며 n-gram으로 연속된 단어 조합을 추출하는 것도 가능합니다. 단어를 숫자 벡터로 변환하는 방법으로 카운트 기반이나 TF-IDF 그리고 워드 임베딩을 활용할 수 있고 문장 길이를 맞추기 위해 패딩이나 자르기를 적용하며 언어별 특성을 고려하여 적절한 도구를 선택해야 합니다.
시각 데이터도 일관된 형태로 만들어야 합니다. 크기를 모델 입력에 맞게 조정하고 색상 채널을 정규화하여 범위를 통일하며 필요시 그레이스케일로 변환하는 것이 기본 작업입니다. 밝기와 대비를 조정하여 조명 조건 차이를 보정하고 회전이나 반전으로 데이터를 증강하여 다양성을 높이며 노이즈 제거 필터를 적용하여 품질을 개선할 수 있습니다. 배치 정규화를 적용하여 학습 안정성을 높이고 이미지 형식을 통일하여 처리 파이프라인을 간소화하며 메모리 효율을 고려하여 적절한 해상도를 선택하는 것이 중요합니다.

모든 변수가 유용한 것은 아닙니다. 상관관계가 높은 변수 중 하나를 제거하여 다중공선성을 해결하고 분산이 거의 없는 변수는 삭제하여 의미 없는 특성을 제거하며 목표 변수와 관련성이 낮은 특성을 걸러내는 것이 효과적입니다. 주성분 분석으로 차원을 줄이면서 정보 손실을 최소화하고 특성 중요도를 계산하여 상위 변수만 선택하며 도메인 지식을 활용하여 의미 있는 특성을 유지하는 것이 바람직합니다. 차원 축소는 과적합을 방지하고 학습 속도를 높이는 효과가 있지만 해석 가능성이 떨어질 수 있으므로 상황에 맞게 판단해야 합니다.
시간 순서가 중요한 데이터는 특별한 처리가 필요합니다. 일정한 간격으로 리샘플링하여 시간 해상도를 맞추고 이동 평균으로 노이즈를 제거하여 추세를 명확히 하며 계절성과 추세를 분해하여 패턴을 파악하는 것이 가능합니다. 차분을 통해 정상성을 확보하고 시차 변수를 생성하여 과거 정보를 입력에 포함하며 이상 패턴을 탐지하여 데이터 품질을 확인할 수 있습니다. 시간 특성을 추출하여 요일이나 월 같은 주기성을 반영하고 결측 구간을 보간하여 연속성을 유지하며 미래 정보가 학습에 사용되지 않도록 시간 순서를 엄격히 지켜야 합니다.
학습과 평가 데이터를 적절히 나누어야 합니다. 무작위로 섞어서 분할하되 클래스 비율을 유지하는 층화 추출을 사용하고 시계열 데이터는 시간 순서를 지켜 분할하며 교차 검증으로 모델 안정성을 평가하는 것이 중요합니다. 학습 데이터로 전처리 파라미터를 계산하고 검증과 테스트 데이터에 동일하게 적용하여 정보 유출을 방지하며 데이터가 적을 때는 k-겹 교차 검증으로 모든 데이터를 활용할 수 있습니다. 테스트 데이터는 최종 평가 전까지 절대 보지 않아야 객관적인 성능을 측정할 수 있고 분할 비율은 데이터 양에 따라 조정하되 일반적으로 훈련 70퍼센트와 검증 15퍼센트 그리고 테스트 15퍼센트를 사용합니다.

데이터가 부족할 때 인위적으로 늘릴 수 있습니다. 이미지를 회전하거나 확대하여 다양한 각도의 샘플을 생성하고 텍스트의 일부를 바꾸거나 역번역하여 유사한 문장을 만들며 생성 모델로 새로운 샘플을 합성하는 것도 가능합니다. 증강 기법이 원래 의미나 레이블을 훼손하지 않는지 확인하고 과도한 증강으로 모델이 비현실적 데이터에 과적합되지 않도록 주의하며 소수 클래스를 과대 샘플링하여 불균형을 완화할 수 있습니다. 증강된 데이터의 품질을 검수하고 실제 데이터와의 분포 차이를 모니터링하며 적절한 수준에서 증강을 멈추는 것이 바람직합니다.
재현 가능한 프로세스를 만들어야 합니다. 전처리 단계를 순서대로 정의하고 코드로 자동화하여 수작업을 최소화하며 버전 관리로 변경 이력을 추적하는 것이 중요합니다. 파라미터를 설정 파일로 분리하여 실험을 쉽게 하고 각 단계의 입출력을 검증하여 오류를 조기에 발견하며 문서화로 팀원들과 지식을 공유할 수 있습니다. 대용량 데이터 처리 시 병렬화로 속도를 높이고 중간 결과를 저장하여 재실행 시간을 줄이며 모니터링으로 데이터 품질 변화를 감지하는 것이 효율적입니다. 새로운 데이터가 추가될 때마다 동일한 파이프라인을 적용하여 일관성을 유지하고 정기적으로 전처리 로직을 검토하여 개선할 부분을 찾아야 합니다.
