안녕하세요! 개인화 추천시스템을 개발하고자 하는 ML 엔지니어입니다. EDA는 데이터를 단순히 살펴보는 것을 넘어, 데이터를 목적에 맞게 정제하고 인사이트를 얻는 핵심 과정입니다. 이번 글에서는 제가 겪은 시행착오와 그 과정에서 배운 교훈을 바탕으로, 효과적인 EDA 전략에 대해 이야기하고자 합니다.
EDA는 데이터를 이해하고 품질을 검증하여, 모델링 결과의 신뢰성과 품질을 높이기 위한 과정이라고 생각해요. 그런데, EDA를 ‘잘’ 한다는 건 정확히 무엇을 의미할까요? 결국 ‘인사이트를 얻기 위한 데이터 뜯어보기’ 정도로 이해했지만, 어떻게 하면 더 효율적으로 의미 있는 인사이트를 도출할 수 있을지 고민이 많았습니다.
AI 학습에 흔히들 “데이터의 양 뿐 아니라 질이 매우 중요하다” 라고 말합니다. 높은 수준의 학습데이터를 만들어야 원하는 성능의 AI가 탄생하고, 그를 위한 데이터 전처리와 피처 엔지니어링이 필수적이죠. 하지만 막상 현업에서 신규 서비스를 위한 데이터를 구축하려다 보니, 제가 생각한 피처 선정 방법보다 더 체계적이고 정교한 방식이 필요했어요. 제가 겪었던 과정에서 시행착오를 소개할게요.
전부 뜯어보기 :
첫 번째로, 회사의 DB를 전반적으로 살펴봤어요. 모든 테이블을 head, value_counts 함수로 확인하고, 각 컬럼이 어떤 의미를 가지는지 주석을 달며 개인화 추천을 위해 필요한 피처인지를 판단했어요. 조금이라도 필요해 보이는 피처들을 모두 리스트에 추가하며 일종의 피처 쓸어담기 작업을 진행했습니다.
초보자로서 이 방식이 데이터에 익숙해지는데 효과적이었지만, 시간이 오래 걸렸고 반드시 필요한 피처를 놓칠 위험이 있었어요. 팀원들에게 질문하며 도메인 지식을 일부 활용하거나, 서비스의 목표 정의를 명확히 한 후 우선순위를 정했으면 어땠을까 싶어요. (깨달은 직후 바로 행동으로 옮겼습니다..ㅎ)
또한, 대량의 피처를 포함하면 각 피처의 중요도를 분석할 때 비효율이 발생할 수 있었어요. 쓸어담기 직후에, 상관관계 분석 등의 체계적인 피처 제거 전략을 먼저 수행했으면 더 효율적이었을 것 같아요.
샘플 데이터 :
두번째로, 위에서 리스팅한 피처들을 분석하기 위해 데이터의 일부에 join 쿼리를 실행하여 csv 파일로 만들었어요. 이후 모든 피처에 대해 null값 비율, 데이터 분포, describe 등을 시각화해보고, 각 변수 간의 상관관계 히트맵을 무작정 그려봤어요.
하지만 실제 서비스 구축을 고려해보면, join 쿼리 실행으로 인한 서버 과부하 방지나 데이터 업데이트 주기 설정 등을 함께 염두에 두었어야 했던 것 같아요. 분석을 목적으로 했다면 좀 더 적은 샘플 데이터를 활용한 EDA를 진행하고, 캐싱이나 ETL 파이프라인을 구상해봤으면 좋았을 것 같아요. 그 과정에서 csv 대신 SQLite나 Parquet등의 포맷을 사용하면 추후 쿼리를 통한 데이터 적재 코드를 자동화할 수 있었을 것이라 생각합니다.
방법론 구체화 :
세번째로, 어느 정도 피처 선정이 되었다 생각하고 개인화 추천시스템 방법론들을 리서치했어요. 협업 필터링, 콘텐츠 기반 필터링, 딥러닝(DL)을 활용한 방법론 등의 여러 방법론을 살펴보면서, 각 방법론 별로 필요한 피처들을 구체적으로 나누기 시작했어요.
이 과정에서 다양한 방법론을 테스트하려면 데이터 파이프라인이 유연해야 한다는 것을 깨달았어요. 데이터를 가공하는 공통 파이프라인을 설계해서 재사용성을 확보하는 것이 필요해 보였습니다. Vertex AI나 Feast 등의 도구를 활용해서 피처 관리를 효율적으로 수행할 수 있을 것이라 생각해요. Feature Store 같은 도구는 다음 단계에서 고려할 기술입니다. 이번 글에서는 EDA 단계에서 배운 교훈에 초점을 맞추겠습니다.
각 피처 별로 정규화나 스케일링 등의 전처리 방식을 명확히 하는 것도 중요하다고 생각해요. 현재는 데이터 분포와 특성에 맞는 적절한 방법을 적용해가며 진행 중입니다.
결론 :
결국, 중요한 것은 설득이 아닐까? 라는 생각이 들었어요. 모델에 학습시킬 데이터가 잘 정제되어 있고, 각 피처가 선정된 이유나 전처리 과정을 명확히 설명할 수 있어야 모델의 신뢰성과 품질이 향상된다고 느꼈어요. 핵심은 “무엇을 알고 싶은가?” 라는 질문을 명확히 하는 데 있습니다. 저는 위 과정에서 데이터 분석의 목적을 뚜렷하게 정하는 것과, 설득력 있는 인사이트를 도출하는 것이 중요함을 깨달았어요. 아직 모델링과 배포라는 큰 단계가 남았지만, 데이터를 이해하고 다루는 과정에서 얻은 교훈을 바탕으로 더 효율적인 개발 방향을 설정할 수 있었어요.
만약 처음으로 대규모 데이터를 탐색해야 한다면, 아래 단계를 추천합니다:)
- 도메인 이해: 팀원이나 전문가에게 데이터를 어떻게 활용할지 질문하고, 목표를 명확히 정의하세요.
- 샘플링: 항상 데이터베이스 전체를 분석하기보다, 필요에 따라 샘플 데이터를 추출해 작은 규모로 빠르게 탐구하세요.
- 가설 수립: 주요 피처와 관련된 가설을 세우고, 이를 검증할 수 있는 분석을 수행하세요.
'AI tech' 카테고리의 다른 글
2024 하반기 회고: Everything Everywhere All At Once (1) | 2025.01.05 |
---|---|
2024 상반기 회고: Everything Everywhere All At Once (6) | 2024.12.22 |
Text2SQL: 예약 어시스턴트를 위한 기술 탐구 (1) | 2024.11.10 |
IF (Kakao AI) 2024 - 모든 연결을 새롭게 (1일차, 컨퍼런스 참여 후기 및 요약) (13) | 2024.10.26 |
밑바닥부터 시작하는 딥러닝2 정리 Chapter 2 - 자연어와 단어의 분산 표현 (0) | 2024.04.16 |