요즘 회사에서 몇 개 프로젝트를 돌리면서 느낀 건데, 데이터 전처리에서 정말 많은 시간을 버리고 있더라고요. 실제 모델 학습보다 데이터 정제에 훨씬 오래 걸려서 한번 정리해봤습니다.
제가 자주 쓰는 방법들이 혹시 도움이 될까 해서 공유해봐요. 첫 번째는 pandas의 `fillna()`와 `dropna()`를 습관적으로 쓰지 말고 결측치가 왜 발생했는지 먼저 파악하는 거예요. 무작정 지우거나 평균값으로 채우면 나중에 모델 성능이 이상해질 수 있습니다. 도메인 지식 기반으로 전략을 세우는 게 중요한데 이 부분을 많이들 간과하시는 것 같아요.
두 번째는 이상치(outlier) 처리인데, IQR 방식이나 Z-score 쓰기 전에 그게 정말 이상치인지 확인해야 해요. 가끔 중요한 데이터를 이상치로 낙인찍고 지우는 경우가 있거든요. 시각화를 충분히 해가면서 판단하는 게 좋습니다. matplotlib이나 seaborn으로 분포를 먼저 보는 습관이 정말 중요해요.
세 번째는 범주형 데이터 인코딩인데 one-hot encoding만 쓰다가 cardinality가 높은 경우 차원의 저주에 걸리기도 합니다. target encoding이나 mean encoding 같은 방식도 상황에 맞게 써야 해요. 물론 데이터 유출 문제가 있을 수 있으니까 cross-validation할 때 조심해야 하고요.
마지막으로 정규화(scaling) 문제도 있어요. StandardScaler를 기본으로 쓰는데 tree 기반 모델이면 스케일링 자체가 필요 없거든요. 불필요한 전처리가 오히려 성능을 낮출 수 있습니다. 모델 종류별로 어떤 전처리가 필요한지 미리 정리해두는 게 시간 절약에 도움이 됩니다.
물론 이 모든 과정이 번거로우니까 요즘은 자동화 도구들도 많이 나왔어요. AutoML 프레임워크 중에 TPOT이나 H2O AutoML 같은 게 있는데, 프로토타이핑할 때는 쓸만하더라고요. 다만 프로덕션 환경에서는 전처리 과정이 명확해야 하니까 자동화만 믿고 갈 순 없습니다.
결측치 원인을 먼저 파악하는 거 정말 중요하더라고요. 저도 무작정 dropna() 썼다가 낭패 본 적 있어요 ㅠㅠ
코드리뷰어
저도 그 부분에서 많이 실수했거든요. 결측치를 무작정 평균으로 채웠다가 모델이 엉망이 되는 경험을 몇 번 했어요. 요즘엔 항상 시각화부터 보는 습관이 생겼네요.
조용한엔지니어
맞아요. 저도 처음엔 막 지우고 채웠다가 나중에 모델이 이상하더라고요 ㅎㅎ 시각화하면서 천천히 하니까 훨씬 낫더라고요.
GPT덕후하나
결측치 원인 파악 정말 중요하더라고요. 저도 무작정 지웠다가 모델이 완전 이상해져서 깨달았어요 ㅠㅠ
인공지능개그맨
저도 같은 경험했는데 결측치 원인 파악이 정말 중요하더라고요. 한번은 무작정 지웠다가 모델이 이상한 패턴을 학습해서 낭패 본 적 있어요 ㅠㅠ 시각화 먼저 하는 습관도 정말 공감합니다
인공지능개그맨
정말 공감 100프로네요. 저도 처음엔 dropna() 남발했다가 모델 성능이 엉망이 돼서 깨달았어요 ㅋㅋ 결측치의 패턴을 보는 게 얼마나 중요한지요. 특히 이상치 부분 완전 공감입니다. 자동으로 지우고 보니까 정말 필요한 데이터까지 날려먹더라고요. 시각화 정말 중요해요. 한번에 대충 처리하는 것보다 하나하나 확인하면서 가는 게 나중에 훨씬 깔끔하더라고요.