GPT4+Code Interpreter를 사용한 레고 데이터 분석 (2)
지난 글에서 GPT(*)를 활용한 간단한 데이터 가공과 탐색 사례를 살펴보았다. GPT가 대부분의 분석 시나리오에 대한 코드를 작성해주고, 데이터에 대한 해석도 어느 정도 해주었다. 하지만 아직 종종 에러를 내고 (물론 이를 리커버하는 능력도 있지만:) 시각화 등의 결과를 파인 튜닝하는데에 노력이 든다는 점도 발견했다. 오늘은 지난번에 이어 레고 가격에 대한 간단한 분석과 예측 모델링을 통해 GPT의 분석 역량을 본격적으로 알아보자.
* 지난번에 이어 이 글에서 GPT는 ChatGPT 환경에서 GPT4 + Code Intepreter를 활용한 것임을 밝힌다.
최근 레고 커뮤니티 여기저기서 들리는 푸념은 레고가 너무 비싸다는 것이다. 레고는 원래부터 값싼 장난감은 아니었지만, 과연 레고 사에서 수익을 위해 점점 가격을 올리고 있을까? 이를 살펴보기 전에 GPT에게 아이디어를 물어보자.
최근에 레고 가격이 더 비싸졌나요?
조사를 위한 몇 가지 아이디어와 단계를 작성해 주세요.
꽤나 그럴듯한 분석 계획을 작성해 준다. 데이터에 대한 기본적인 분석 아이디어도 나쁘지 않고, 특히 인플레이션 조정에 대한 아이디어는 GPT가 어느 정도의 '상식'을 갖고 있다는 것을 알려준다. 이제 제안된 계획에 따라 실제 분석을 진행해보자.
2005년 이전의 데이터를 제거한 후에 계획 1-2에 따라 분석을 진행해줘.
실제로 레고 세트의 소매 가격이 높아진 것은 맞지만, 이는 원가인 부품 수의 증가와 관련된 것으로 보인다. 이 부분은 좀더 깊이 들어가 볼 가치가 있어 보인다. 이제 다음으로 제안된 분석 단계인 테마별 가격 트렌드를 살펴보자.
계획 3을 따라 분석해줘.
스타워즈가 평균적으로 높은 가격을 형성하고 있지만, 최근 들어 상승세는 대부분의 테마에서 두드러짐을 알 수 있다. 또한 레고가 2012년에 출시한 Friends 라인은 전반적으로 낮은 가격대를 형성하고 있음을 알 수 있다. 이제 인플레이션을 조정한 가격 트렌드를 알아보자.
첨부한 인플레이션 데이터를 사용해서 Price per Piece의 트렌드를 그려줘. (Before/After Adjustment)
미국 정부 사이트에서 구한 데이터를 GPT에 넣어주면 스스로 포멧을 분석한 후에 원래 데이터와 머지하여 분석을 시작한다. 에러가 나니 스스로 컬럼 명도 고쳐가면서 작업하는 것을 알 수 있다. 결론적으로 레고 세트의 가격이 전반적으로 상승하기는 했으나, 이는 레고 세트가 블록수 기준으로 더 커진 것이 기인하며, 블록당 가격은 오히려 하락 추세임을 알 수 있다.
레고 사에서 이런 점을 좀더 잘 홍보한다면 브랜드 이미지 재고에 도움이 되지 않을까?
(필자가 걱정할 일은 아닌것 같지만 ^^;)
지금까지 전반적인 레고 셋의 가격 추이를 살펴보았다. 이제 레고 세트 가격이 결정되는 메커니즘을 좀더 조
사하기 위해 간단한 예측 모델을 만들어 보자. 이처럼 머신러닝 기법의 발전에 따라 예측 모델을 해석함으로써 현상에 대한 인사이트를 얻는 기법이 분석에 많이 활용되고 이다. 지난번처럼 분석 단계에 대한 GPT의 의견을 먼저 들어보자.
레고 세트 가격 예측 모델을 구축해 봅시다. 목표는 세트의 가격에 영향을 주는 요인을 이해하는 것이며, 예측 정확도를 극대화하는 것이 아닙니다.
가격에 영향을 미치는 요인을 이해하기 위한 분석 계획을 대략적으로 제시해 주세요. 데이터 클리닝과 특성 추출에 대한 계획을 포함하고, 사용할 예측 모델을 나열하고 그 이유를 정당화해 주세요. 또한 모델을 어떻게 평가하고 분석할지에 대해서도 설명해 주세요. 단계별로 나열해 주시면 피드백을 드리겠습니다.
어느 정도 예측 분석에 있어서 흔히 따르는 상식적인 단계를 보여준다. 이제 분석 계획을 차례대로 수행해보자. 예측 모델링을 위해 변수화의 상관관계 및 주요 변수의 범위와 이상치를 확인해보자.
변수 간의 상관 관계를 시각화하고, 일부 열의 값에 상한을 두어 분석이 도움이 되는지 확인해 줘.
주어진 단계를 전반적으로 충실히 수행하는 것을 알 수 있다. 위 플롯에서 깨진 글자는 한글 폰트의 미지원에 기인한 것인데, 이는 외부 폰트 파일 접근이 어려운 ChatGPT 환경의 한계에 기인한 것으로 내용 이해에는 큰 지장이 없어서 그대로 두었다. 이제 앞서 GPT가 제안한 계획에 따라 예측에 필요한 피쳐를 생성해보자.
2단계로 넘어가자. 특성 추출 및 풍부화 계획을 제안해줘.
GPT는 흔히 쓰이는 변수 가공법을 어느 정도 이해하는것으로 보인다. 마지막으로 레고 세트 이름을 기준으로 피쳐를 추출하는 방식도 제안하는데, 이 부분은 좀더 진행해보니 잘 되지는 않았다.더 구체적인 내용은 본 예제의 취지에서 벗어나니 생략하도록 하자. 이제 개발된 피쳐를 바탕으로 간단한 모델링을 시도해보았다.
기본 모델로 해석 가능성을 위한 간단한 결정 트리 모델을 구축해보자.
GPT가 처음 만든 모델은 Train셋에서의 성능이 Test셋에서보다 훨씬 높은 과적합(overfit) 모델이다. 이를 해결하는 접근 방법을 GPT에게 물어보자.
제안된 내용이 꼭 과적합에 대한 해결책이라고 할수는 없지만, 어쨌든 그럴듯한 제안을 하는 것을 알 수 있다. 이 중 가장 간단하게 할 수 있는 트리의 깊이를 조정해보자.
간단한 튜닝을 통해 깊이가 3정도인 트리에서 Test셋의 오차를 최소화하는 결과물을 얻을 수 있다는 것을 발견할 수 있다. 이제 마지막으로 모델의 특성을 좀더 이해할 수 있는 추가 분석을 몇가지 수행해보고 예측 모델링을 마치도록 하자.
모델을 이해하기 위해 다음 두 가지를 수행해보자.
1. 결정 트리 시각화 (깊이 3 트리에 대해서)
결정 트리의 주요 결정 경로를 시각적으로 표현하여 이를 통해 예측 과정을 분석
2. 테마별 평균 절대 오차 (MAE) 분석
각 테마에 따른 모델의 예측 오차를 분석 (원본 데이터의 theme 컬럼 사용)
트리 내용이 글자가 너무 작아 확인하기는 쉽지 않지만 주로 부품 수를 바탕으로 가격을 예측했다는 것을 알 수 있다. (이를 해결하려고 시도해 보았지만 잘 되지는 않았다) 또한 테마별 에러 분석 결과를 통해 위에 열거된 몇개의 테마에 대해서는 예측 결과가 훨씬 정확하다는 것도 알 수 있다.
단, 이 과정에서 원본 파일을 찾지 못해 원본 데이터를 다시 업로드해야 했다. 이처럼 긴 세션에서 앞에 제공한 가이드나 파일을 잊어버리는 것은 현재 GPT4 모델의 제한된 컨텍스트가 원인인 것으로 보인다.
지금까지 간단한 분석과 예측 모델링을 통해 GPT의 분석 역량을 확인해 보았다. GPT가 그럴듯한 분석 계획을 세워 주고, 각 단계를 큰 어려움 없이 수행하는 것을 확인할 수 있었다. 데이터 전처리 / 데이터 시각화 / 예측 모델링 등 분석의 주요 주제에 대해서 어느 정도 이해를 하고 있고, 실제 분석을 수행하다가 문제에 부딪히는 경우 이를 해결하는 역량도 어느 정도 보여 준다.
이 정도의 도메인 지식과 코딩 지식을 갖는 인공지능의 등장은 몇년 전의 상식으로는 꿈같은 이야기다. 그리고 현재 GPT4가 데이터 분석에 특화된 솔루션이 아니라는 점을 고려하면, 앞으로 등장하는 인공지능의 역량은 상상을 초월할 것이다. 하지만, 이런 가능성에도 불구하고 아직 GPT 기반의 분석을 실무에 활용하기에는 아직 몇가지 한계가 있음을 발견했다.
현재 GPT4 모델의 컨텍스트 윈도우의 한계로 복잡한 분석을 간단한 단계로 쪼개야 하며, 따라서 어느 정도 이상 복잡한 작업을 스스로 수행하는 데에는 한계를 보인다
분석이나 시각화의 결과물의 세부 사항을 튜닝하는 데에 어려움이 따르며, 역시 제한된 컨텍스트 때문에 세션이 길어지면 앞에 제공한 데이터나 가이드를 잊는 문제가 있으므로, 긴 분석에는 무리가 있다.
이런 문제를 해결하기 위해서는 결국 분석가가 코드를 수정해야 하는데, 현재 ChatGPT 환경에서는 지원되지 않으며, Noteable Plugin과 같이 이런 수정이 지원되는 환경에서도 사용자가 임의로 수정한 코드와 세션 컨텍스트를 GPT에게 다시 이해시키기가 쉽지 않다는 문제가 있다.
물론 이는 2023년 11월 기준이며, 이 글이 활자화되는 시점에는 이미 많은 것이 달라져있을 것으로 보인다. 이미 11월 초에 OpenAI Dev Day에서 발표된 컨텍스트가 확장된 GPT4와 Assistant API등을 사용하면 이런 한계를 뛰어넘는 분석 환경을 구축할 수 있으며, 조만간 이를 활용한 솔루션이 등장할 것으로 보인다. 이미 주요 분석 및 시각화 솔루션 업체들과 많은 스타트업들은 자사의 생태계에 인공지능 역량을 추가하기 위해 노력하고 있다.
이런 급변하는 환경에서 현업에 종사하는 우리들, 혹은 현업을 준비하는 사람들은 어떤 고민을 해야 할까? 몇년 이내에 예전처럼 SQL이나 파이썬 코드를 한줄씩 짜서 분석을 수행하는 시대는 종언을 고할 것으로 보인다. 하지만, 아예 코드에 대한 지식이 없이 실무에서 필요한 수준의 분석을 수행할 수 있는 환경이 등장하기까지는 어느 정도 시간이 필요할 것으로 보인다.
또한 이런 환경이 등장한들 분석가의 피드백 없이는 주어진 상황에 맞는 분석을 수행할수도, 복잡한 문제를 스스로의 힘으로 해결할 수도 없을테니 분석 전문가의 역할은 여전히 중요하다. 쉽게 템플릿화될 수 있는 표준적인 데이터 처리, 분석이나 시각화를 기계에게 시키고, 인간 분석가들은 좀더 도전적이고 새로운 영역에 좀더 시간을 쏟게 되지 않을까?