brunch

You can make anything
by writing

C.S.Lewis

by 서기슬 Oct 24. 2023

ChatGPT로 데이터 분석할 때 '꼭' 필요한 한가지


여러분이 ChatGPT, 특히 Advance Data Analysis를 활용할 때에 절대 놓치지 말아야할 한 가지가 있습니다. 무엇일까요?



두 글자로 표현하자면, 바로 '검산'입니다.

계산이 제대로 작동했는지를 검토하는 또 다른 계산이죠. 학교 다닐 때에 수학 공부하면서 늘 듣던 말입니다. 계산 확인 정도는 어렵지 않지만, 어떻게 자신의 분석 결과를 스스로 검증할 수 있느냐는, 데이터 분석의 숙련도와 리터러시에 따라서 천차만별의 결과가 날 수 있습니다.


원래도 검산은 중요하지만 ChatGPT를 활용할 때에는 좀 더 중요합니다. 오늘은 아주 기초적이지만 모두에게 중요한 ChatGPT의 분석 결과 테스트 방법에 대해 써보도록 하겠습니다.


계산이 맞게 작동했는지 검수하는 데이터 분석가를 그려달라고 했더니 Dall-E가 그려준 일러스트입니다 :)

분석 결과가 당초 목적대로 잘 작동하는지 검수하는 것이므로, 이것은 약간 제품 개발에서의 기능 테스트와 QA의 중간 즈음에 있어 보이긴 하지만, 결국 목적은 버그를 발견해서 분석 프롬프트가 더 잘 작동하도록 바로잡는 것이죠.


이는 ChatGPT로 소설을 쓰는 것 같은 창조적 산출물이 아니라, 데이터 분석 결과를 뽑는 체계적 결과물을 만들어야 하는 ChatGPT 활용에서는 더더욱 중요합니다.



자 그럼 구체적으로 '무엇'을 테스트하는 것일까요?


크게 세 가지 구성 요소라고 생각하시면 됩니다.

1) 계산 자체가 제대로 되었는가?

2) 당초 의도와 목적대로 분석이 잘 수행 되었는가?

3) 계산도 제대로 되었고 목적대로 분석이 수행되었지만, 나의 분석 설계 자체에 오류가 있지는 않았는가?


ChatGPT의 좋은 점은 바로, 노하우를 익히면 이 3번도 점검할 수 있다는 것이죠. 보통은 연구실에서는 지도교수님이나 선배가 해주는 것이니까요ㅎㅎ


검산, 즉 테스트에 대해 모든 절차를 여기서 다 설명할 수는 없지만, 기본적인 개념을 예시로 설명해보도록 하지요.



그럼 검산을 하려면 먼저 분석 자체를 해봐야겠죠.


공공데이터 포털의 최고 인기 데이터 중 하나죠, 소상공인진흥공단의 상권 정보를 살펴보겠습니다.

저의 가설은 '아직 세종시에 탕후루 가게를 새로 오픈할만한가?! 하려면 어디에 오픈해야 하는가'에 대한 단서를 얻는 것으로 해보겠습니다.



기본적인 상권 업종 분류를 알게 되었고, 어떤 것들이 주요한지도 알게 되었습니다. 이제 탕후루 가게가 어디어디 있나 찾아볼까요? (물론 엄밀히 하려면 가게 명칭에 '탕후루'가 들어가지 않지만 탕후루 파는 곳을 통합해야하지만, 일단 넘어가겠습니다. 그리고 최근 생긴 탕후루 가게는 데이터에 없겠지만, 역시나 일단 넘어가겠습니다. 예시니까요ㅎ)



새롬동, 도담동, 아름동에는 이미 탕후루 가게가 있군요.

하지만 탕후루 가게가 없는 곳은, 없는 이유가 있는 것일 수도 있겠죠?


그렇다면 탕후루 가게를 오픈하려면 '탕후루의 고객층이 될만한 다른 업종은 활성화 되어있지만, 탕후루 가게는 없는 곳'을 찾아야 할겁니다.


탕후루는 중고등학생 친구들이 많이 사먹고 군것질 상권 인근에 있을테니, 위의 소분류업종에서 '입시 교과학원, 편의점, 김밥/만두/분식' <- 요 세가지만 많으면서도, 탕후루 가게가 없는 곳을 추려보겠습니다. 그리고 이 모든 것을 숫자로 표시해볼게요.


(중간에 행정동이 너무 많아서, 시각화를 위해 상권이 최고로 활성화된 5개 동으로 좁히는 과정을 넣었습니다)


동별 학원, 편의점, 분식집 업종 '갯수' 데이터입니다.
동별 학원, 편의점, 분식집 업종 '비율' 데이터입니다.
탕후루 가게가 있는 곳은 아름동, 새롬동입니다.


짠, 대단한 분석은 아닙니다만, 이 모든 과정을 말로 지시하기만 해도 데이터 전처리에서부터 분석까지 5분 이내에 할 수 있다는 점이 ChatGPT ADA의 좋은 점이겠죠?


역시 자영업자분들은 다 각자의 통찰을 갖고 움직이시는가봅니다. 이미 탕후루 가게가 있던 아름동과 새롬동은 역시 학원이 많은 곳이었군요!


그 다음으로 탕후루 가게를 오픈하기 좋은 곳은 소담동과 고운동인 것 같습니다. 좀 다른 얘기지만, 세종시는 계획도시인 만큼 역사적으로 지어진 작명이 아니라 기획에 의해 지어진 작명이다보니 동네 이름도 예쁜 것 같아요.


그런데 제가 학원, 편의점, 분식집이 '갯수가 많은 동네'를 추린 것뿐 아니라 '비율이 높은 동네'를 함께 뽑은 이유는 무엇일까요? 왜냐하면 위의 데이터만 갖고는 '단순히 동네의 총면적이 넓어서 학원도 많은 것'일지도 모르잖아요. 물론 행정동은 인구별로 적당한 크기로 나눈다고 알고 있습니다만, 이에 대한 보조지표로 다른 모든 가게 대비 '비율'을 함께 보면, '상권의 속성'을 보는 데에 부가적으로 활용할 수 있습니다.




그런데 마침 ChatGPT에 분석 착오가 있었네요!


일부러 예시를 위해서 오류를 의도한 것은 아니고, 맞게 분석했어도 검수 과정을 보여드리려고 했는데요, 마침 분석 목적에 맞지 않게 작동한 결과물이 하나가 있네요. 눈치 채셨나요?


위의 분석 목적대로라면, 상권의 속성을 파악하기 위해서는 학원/편의점/분식집 이 세 개의 상호 비율이 아니라, 다른 모든 업종 대비 학원/편의점/분식집의 비율을 봐야하겠죠.



그런데 위의 데이터를 자세히 보면, 그 어떤 상권이라도 학원 비율이 저렇게나 높을리는 없고, 어림짐작으로 봐도 세 업종의 합이 '1'이 되도록 비율이 계산되었다는 것이 보이지요. 즉, 저는 모든 업종 대비 학원/편의점/분식집의 비율을 알고 싶었던 것인데, 그냥 학원/편의점/분식집의 상호 비율을 표시해준 것입니다.


팀장이 데이터 분석가에게 지시를 해도 설명을 대충하면 발생할 수 있는 오류입니다. 저는 그래서 기업 대상으로 데이터 리터러시 수업을 할 때에는, "'비율'을 구할 때에는 반드시 분자/분모를 명시해서 함께 요청하라"라는 규범을 가르치기도 하죠.


게다가 우리는 맨 위에서 '상권업종소분류명'에서 이미 학원이 전체 중 5위에 해당하고, 일반 식당이나 카페가 훨씬 더 많다는 것을 확인하기도 했습니다. 그러니 학원 비중이 업종 중에 70%씩이라거나 이런 것은 이상하죠. 이렇게 오류를 눈치챌 수 있는 단서는 곳곳에 있습니다. 또 그렇기 때문에 절차적으로 여러 데이터를 계속 찍어보며 진행해야 하는 것이기도 하고요.


프롬프트를 확인해보겠습니다,

제가 아주 지시를 잘못한 것같진 않고, 영문 프롬프트로도 의미가 잘 입력되었습니다. 명확히 오류인 케이스이지요.




테스트의 기본 규범은 아주 단순합니다.


똑같은 계산을 다른 절차로 수행해보면 됩니다. 특히 ChatGPT에서는 모든 것을 Step by Step으로 해보면서 검증하는 것이 확실하죠.


보통은 '함수의 역원이 있다면, 역원 연산을 따라 거꾸로 가는 방식으로 검산'하라고 하기도 합니다. 이를테면, 덧셈의 역원(역연산)은 뺄셈이기 때문에, 더하기가 제대로 수행되었는지 확인하려면 빼면서 확인을 해보는 것이죠. 이러면 너무 단순한 문제 같은데, 현업에서 이렇게 최종 연산값의 부정합 문제는 아주 빈번하게 발생합니다.


이를테면, 특정 커머스앱에서 사용자 추이를 위해 '주간 유니크 방문 횟수'를 구했다고 가정해보죠. 그렇다면, 당연히 이는 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일의 일별 유니크 방문 횟수의 총합과 일치해야만 합니다. '주간'에는 7개 요일의 집합 외에 다른 원소는 없으니까요.


하지만 현업에서 이런 경우 불일치가 빈번하게 발생합니다. 주간 카운트를 하는 기능과, 일간 카운트를 하는 기능 사이에 미묘한 타임존, 타임라인 차이가 있었을 수도 있고요(서로 다른 담당자가 Amplitude나 Mixpanel 같은 것 쓰면 맨날 생기는 일이잖...), '유니크' 정의 문제 때문일 수도 있고요, 여러 엔지니어링 이슈로 뻔하게 '합산을 하면 나와야할 값'이 안나오거나, '합산한 값에서 원소를 빼나가도 0이 되지 않는 문제'가 발생하는 것입니다.


'비율'에 관련하여 흔하게 발생하는 문제는 위의 사례처럼, 분자/분모 설정이 잘못되거나, 혹은 절차상 오류가 발생하는 경우이지요.


자 그럼 ChatGPT를 다시 털어서 일을 똑바로 하라고 검수해볼 시간입니다.


마, 처음부터 똑바로 할 것이지!


아주 잘 작동하네요.


이렇게 비율로 보니, 갯수로 볼때보다 훨씬 소담동이 다른 모든 업종 대비 학원 비중이 높아서 청소년 유동 인구가 많고, 그렇기 때문에 탕후루 가게를 오픈하기 좋은 곳이겠다는 점을 짐작할 수 있습니다.


아주아주 기초 중의 기초인 예시로 설명드렸습니다만, 이렇게 검산하고 점검하는 과정은 ChatGPT ADA 숙련도에 꼭 꼭 아주 정말 반드시 필요한 일이라는 점은 여러분께 잘 전달되었으리라 생각합니다.




중요한 것은 분석가의 자세


ChatGPT ADA를 써보신 분들은 느끼시겠지만, 이것은 아무것도 모르는 사람을 데이터 분석가처럼 보이도록 도와주는 도구라기보다는, 이미 데이터 분석을 잘 아는 사람들의 생산성을 200%, 300% 향상시키는 도구같다는 생각이 계속 듭니다.


물론 슈퍼 노트앱을 쓴다고 해서 생산성이 갑자기 증대되는 것이 아니라, 좋은 기록 습관을 가진 사람에게 슈퍼 노트앱이 슈퍼파워를 주는 것처럼, 모든 디지털 도구들이 비슷한 것이겠지만요.


이를테면, 저는 위의 분석 사례를 만들다가 이런 것이 궁금해졌습니다. '탕후루 가게는 청소년의 군것질에서 편의점의 대체제일까 보완재일까?', '상권 정보에는 위경도 데이터가 모두 제공되는데, 상호 거리를 벡터 계산해서 학원이 '밀집한' 동을 따로 구할 수 있을까?' 이런 것은 고오급 분석이니 다음에 기회가 되면 다뤄보지요.


중요한 것은 역시 분석가의 자세입니다. 정합성과 엄밀함을 추구하는 태도와, 계속 질문 던지는 끝없는 호기심의 중간에  훌륭한 분석이 나오는 것이겠죠!



위의 글이 재미있으셨던 분은 아래 페이지도 살펴보세요 :)





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari