#9기임팩트 #AI임팩트
안녕하세요. AI 임팩트에서 데이터 분석 파트 글 작성 시작하는 정호영(샘호트만) 이라고 합니다.
우선 사례 중심보다는 ChatGPT 위에서 데이터 분석할 때 유의할 점과 어떤 식으로 활용하면 좋을지에 대해 가이드를 드리고자 합니다.
이 가이드가 그 다음에 자연스럽게 사례 형태로 글을 마무리하고자 합니다. 즉, Academical 한 부분을 먼저 연재하고 Practical한 영역 순으로 작성하겠습니다.
저 도 그렇게 대단한 사람이 아니라서 피드백 환영합니다. 잘못된 정보 있으면 알려주시면 감사하겠습니다!
Contents
제가 생각하는 ChatGPT+Data Analysis 입문 가이드
정형 데이터 분석 사례 - RFM 고객 세그먼트
비정형 데이터 분석 사례 - KakaoTalk 정형화
비정형 데이터 분석 사례 - KakaoTalk Data Text mining
ChatGPT와 ADA(Advanced Data Analysis) 관련 공부 로드맵!
Intro
데이터/AI 직군에 다양한 직무들이 존재하며 계속해서 확장하고 있습니다. AI 임팩트 글을 쓰는데 ‘데이터 분석’ 파트를 맡았기 때문에 ‘데이터 분석가’라는 직무에 대해서 생각을 해보겠습니다. 이 ‘데이터 분석가(Data Analyst)’라는 직무에 대한 KPI 10개를 뽑으면 다음과 같습니다. (아래 KPI는 그냥 제 생각이 아니라, 작년에 제가 조코딩님 해커톤에서 Chat기반 개인화 가상면접 관련해서 1등 했었는데요, 사용했던 프롬프트 들고 와서 뽑은 결과입니다.)
'통계 분석'
'머신러닝 및 딥러닝'
'데이터 처리'
'데이터 시각화'
'프로그래밍 능력'
'비즈니스 이해'
'문제 해결 능력'
'커뮤니케이션 능력'
'의사결정력'
'프로젝트 관리'
사견을 붙이면 특정 프로젝트나 작업에 있어서 무지성 End2End AI를 선호하지는 않습니다. AI와 인간 분업화를 강조하는 편인데요. 여기서 ChatGPT가 잘하는 부분과 사람이 잘하는 부분에 대해서 나누겠습니다. 근데 이걸 AI한테 물어보겠습니다.
표 내용에서 살펴보시면 60초 이야기가 왜 뜬금없이 나오냐? 그렇게 생각할 수 있습니다. 대화 윗 부분에 제가 gpt 4.0의 시스템 프롬프트 내용을 넣고 이런 제약조건이 있다고 context를 부여했었습니다.
아시는 분들은 아시겠지만, gpt 4.0의 system prompt가 작년 12월에 리킹되었었습니다. (아래 내용 url 참고하시면 됩니다. GPT 4.0 System prompt는 쉽게 뽑을 수 있고 공부하기도 좋은 교보재입니다.)
ChatGPTGPT 4.0의 System Prompt에서 Lessons learned Points in Data Analysis
GPT 4.0의 system prompt에서 Python 부분을 보면 다음과 같습니다. (DALLE에 비해 Python 파트는 상당히 짧고 간단합니다.)
# Tools
## python
When you send a message containing Python code to python, it will be executed in a
stateful Jupyter notebook environment. python will respond with the output of the execution or time out after 60.0
seconds. The drive at '/mnt/data' can be used to save and persist user files.
Internet access for this session is disabled.
Do not make external web requests or API calls as they will fail.
파이썬 코드가 포함된 메시지를 파이썬으로 보내면, 파이썬이 실행되는 상태에서 실행됩니다.
파이썬은 60.0초 후에 실행 결과 또는 시간 초과로 응답합니다.
'/mnt/data' 드라이브는 사용자 파일을 저장하고 보존하는 데 사용할 수 있습니다.
이 세션의 인터넷 액세스는 비활성화됩니다.
외부 웹 요청이나 API 호출은 실패할 수 있으므로 하지 마세요.
여기서 “데이터 업로드 개수 제한이 있다”, “업로드 된 파일 3시간 이내 자동 삭제”와 같은 알려진 사실 이외에 시스템 프롬프트를 보고 나서 제가 생각하는 바는 다음과 같습니다.
‘/mnt/data’ 경로에 데이터가 업로드 되며, 가상 환경위에 기본적으로 제공하는 라이브러리 이상으로 whl file을 업로드하여 더 다양한 라이브러리를 활용하기
여러 whl file을 밀어 넣어서 더욱 폭넓은 작업을 할 수 있습니다. 대표적으로 도움 되는 것이 데이터 분석을 하다 보면 시각화하면 한글 깨짐 현상이 있습니다. 가상환경에 한글 폰트가 없기 때문입니다. 한글 폰트를 다운 받아 넣어서 해도 좋지만 동작을 잘 안하는 경향이 있습니다.
koreanize_matplotlib 라이브러리에서 whl 파일 다운 받아 아래처럼 가상환경에 matplotlib 한글 세팅해달라고 하면 됩니다.
제공되는 가상 환경이 spec 또한 좋지 않기에 업로드하는 데이터의 row 수 또한 고려하기
예전에 비정형 데이터 분석하다가 메모리 터지는 것을 확인했습니다. 아래 내용은 제가 OOM Case를 캡처한 사례입니다. (혹시 가상 환경 spec 아시는 분 알려주시면 감사하겠습니다. 궁금합니다.)
단일 프롬프트 기준으로 60초 이상 걸리는 작업은 여러 시행착오 겪지 말고 포기하기
(누가 system prompt에 인젝션 하셔서 60초 넘게 돌아가는 거 되면 저도 한번 보고 싶긴 하네요. 그래도 안될 것 같네요!)
위 실험 내용은
1) Label이 달려있는 임의의 데이터를 랜덤으로 생성하라고 했습니다.
2) Classification 문제에서 전통 통계 방법에서 가장 대표격인 로지스틱 회귀분석과 머신러닝에서 제일 무난한 tree model 알고리즘 중 랜덤포레스트 테스트를 하였습니다.
3) 데이터를 조금씩 개수를 늘려가면서 위와 같이 시간을 측정하라고 수행했습니다.
위는 간단한 Tree model이지만, 실제 필드에서는 hyperparameter들을 튜닝해야하기 때문에 저는 머신러닝 모델을 ChatGPT 위에서 돌리는 것을 추천드리지 않습니다. (특히 더 시간이 오래 걸리는 CatBoost는 더더욱 멀리해야합니다.) 즉, 모델 train, inference 까지는 하지말자 주의입니다.
그래서 ChatGPT에서의 Data Analysis는 어디에 활용하는 것이 좋은가?
그래서 주어진 제약사항을 고려하여 데이터 분석에서 사용하기 좋은 영역은 제 생각을 덧붙여서 다음과 같이 정리하겠습니다.
통계 분석 : 기초 통계량 산출, 전통적인 통계 검정 방법이나 통계 분석 방법론 적용 가능하다. rough하게 데이터가 많은 경우에 강점이 있는 방식이 머신러닝, small data 에서는 전통적인 통계 방식이 좋다. (단, small data를 다룰 때 데이터 분포에 대한 검정 후 적용하는 것이 올바른 통계 방법론을 활용 방법이라고 생각합니다.) 또한 EDA를 많이 해보면서, 데이터 문해력이 뛰어난 사람들은 특히 통계 분석의 깊이가 늘어난다.
데이터 전처리 : 여기 영역이 제일 무궁무진하며, 노가다 같은 작업을 해소해주는 것이 가장 큽니다. 특히 변수 명을 문맥에 맞게 수정하거나 정의해주거나 영어로 변환하는데 제일 편하게 사용했었습니다.
데이터 시각화 : 간단한 데이터를 바탕으로 자연어 → 코딩 → 시각화 수행 가능하며 내가 다양한 차트나 대시보드를 구현해본 경험이 있다면 더 폭넓은 데이터 표현이 가능하다.
프로그래밍 능력 : 이 영역 또한 개발과 EDA 경험이 많을 수록 지시할 수 있는 폭이 넓어지고, 자연어로 명확하게 구현해서 내가 말한 자연어가 코딩에 잘 입혀졌는지 검수+확인만 하면 된다.
데이터 분석(Data Analysis)과 개발(Development)을 전부 다 해본 제 입장에서는 데이터 분석보다 개발이 할 수 있는 영역이 엄청 크다고 생각합니다. (개발은 코드 생성, 버그 수정부터 리팩토링, 주석처리, 개발 문서 작성 등 폭이 더 넓다고 생각합니다.)
하지만 데이터를 가지고 있는데 어디서부터 해야할 지 모르는데, 자연어로 분석에 대한 조언을 받거나 유의해야할 부분을 피드백을 받는 등 활용 폭은 데이터 분석을 많이 해본 파일럿에게는 엄청난 도구라고 생각합니다.
또한 저도 자연어처리를 했었는데, 기초 통계 말고 디테일한 시각화를 할 일이 많이 없었습니다. 과거에는 나머지 자세한 그림을 그릴 때에는 matplotlib과 seaborn을 구글링한다고 시간을 많이 빼앗겼었던 기억이 나는데, 자연어 → 코딩 → 시각화가 너무 사기인 것 같습니다.
앞으로 지시를 잘 하는 인간이 살아남는다는 이야기가 있는데, 높은 데이터 문해력과 데이터 분석 실력을 갖춘다면 엄청난 인간이 되지 않을까 싶습니다. 여기에 특정 도메인에 강점이 있다면 더더욱 말할 필요가 없습니다.
시각화와 정량적인 분석 Case 글을 한번 다음 편에서 작성해보겠습니다.
추가내용 1) 간단한 GPTs를 만들어 봤는데요. “초보자들을 위한 데이터 분석 서포터” GPTs 를 만들었습니다. 데이터 업로드하면 뭔가 알아서 해줄 것 같습니다. (피드백 부탁드립니다~!)
추가내용 2) 위에 대화 내용 캡처 본으로 대체합니다. 팀 계정을 써서 그런 것인데요. 대화 세션 전체 share 가능하게 하시는 분 댓글 달아주시면 감사하겠습니다…!