[데이터 에세이] AI도 못 살리는 ‘공공데이터’의 배신 (ft. 동행복권 데이터는 선녀)

대학원 시절, 데이터 사이언스를 전공하며 수없이 들었던 말이 있습니다. “Garbage In, Garbage Out (GIGO).” 쓰레기를 넣으면 쓰레기가 나온다.

당시엔 그냥 교과서에 나오는 이론인 줄 알았습니다. 교수님이 던져주시는 ‘아이리스(Iris) 꽃 분류’나 ‘타이타닉 생존자 데이터’는 예쁘게 정제된 온실 속 화초였으니까요. 하지만 어제, 대한민국 공공데이터(Open API)라는 야생에 던져진 뒤 뼈저리게 깨달았습니다. 현실의 데이터는 결코 아름답지 않다는 것을요.

동행복권 사이트 크롤링 데이터: 데이터 분석가의 ‘천국’

    제가 최근 블로그에 연재하고 있는 ‘로또 명당 지도’나 ‘번호 생성기’를 만들 때는 정말 행복했습니다. 동행복권 사이트의 데이터는 그야말로 ‘선녀’ 같았습니다.

    HTML 구조는 일정하고, 1회부터 1000회까지 결측치(Null) 하나 없이 꽉 채워져 있고, 숫자는 정확히 숫자(Integer)로 인식되었습니다.

    전처리(Preprocessing)? 거의 필요 없었습니다. 파이썬 코드를 한 번 짜서 돌리면, 10년 치 데이터가 1초 만에 깔끔한 엑셀 파일로 떨어졌습니다. 데이터가 깨끗하니, 그걸로 만드는 콘텐츠도 무한대로 뽑혀 나왔습니다. 명당 지도, 번호 통계, 홀짝 분석… 이게 제가 꿈꾸던 ‘데이터 드리븐(Data-Driven)’의 이상향이었습니다.

    공공데이터 API: 데이터 분석가의 ‘지옥’

      하지만 어제, ‘국비지원 취업률 데이터’를 분석하려다 지옥을 맛봤습니다. 고용노동부 HRD-Net API를 연동해서 약 1만 건의 데이터를 긁어오는 순간, 제 모니터는 혼파망(혼돈 파괴 망각) 그 자체였습니다.

      취업률 필드에는 ‘0’과 ‘Null’이 난무하고, (실제로 0명인 건지, 집계가 안 된 건지 알 수 없음) 과정명에는 오타와 특수문자가 섞여 있고, 같은 ‘서울’인데 어디는 ‘Seoul’, 어디는 ‘서울특별시’, 어디는 ‘서울시’로 제각각이었습니다.

      AI도 ‘똥 기저귀’는 못 갈아준다

        너무 답답해서 최신 AI(LLM)에게 이 더러운 데이터를 던져주고 “이거 분석해서 표로 만들어줘”라고 시켰습니다. 결과는 어땠을까요? AI조차 환각(Hallucination) 증세를 보이며 엉뚱한 소설을 쓰기 시작했습니다. 입력된 데이터 자체가 쓰레기(Garbage)니까, 아무리 똑똑한 AI도 쓰레기 결과값(Garbage)을 뱉어낼 수밖에 없었던 겁니다.

        결국 저는 파이썬을 끄고, 엑셀을 켰습니다. 화려한 코딩 대신, 눈으로 하나하나 데이터를 확인하며 ‘Delete’ 키를 누르는 수작업을 했습니다. 데이터 사이언스 석사 학위를 가지고, 모니터 앞에서 ‘노가다’를 뛰고 있는 제 모습이 처량하기도 했지만, 동시에 중요한 사실을 깨달았습니다.

        결론: 화려한 분석보다 중요한 건 ‘청소’다

          현업 데이터 사이언티스트들이 업무 시간의 80%를 ‘데이터 전처리(청소)’에 쓴다는 말이 있습니다. 어제 제가 겪은 삽질이 바로 그 80%의 과정이었습니다.

          로또처럼 떠먹여 주는 데이터는 누구나 분석할 수 있습니다. 하지만 공공데이터처럼 지저분하고, 앞뒤가 안 맞는 데이터를 끈기 있게 닦고 조여서 유의미한 ‘정보’로 바꾸는 것. 그 지루한 ‘청소’의 과정이야말로 데이터 분석가의 진짜 실력이라는 것을요.

          앞으로 제 블로그에 올라올 글들은, AI가 1초 만에 쓴 글이 아닙니다. 더러운 데이터 구덩이 속에서 제가 직접 곡괭이질을 해서 캐낸, 투박하지만 ‘진실된 숫자’들일 것입니다.

          (어제 그 고생을 해서 만든 ‘국비지원 취업률 현실’ 포스팅, 여기를 클릭해서 확인해 보세요.)

          공유하기

          댓글 남기기