brunch

You can make anything
by writing

C.S.Lewis

by HRKIM Jul 30. 2023

Code Interpreter로 승진 확률 분석하기

People Analytics 교재와 동일하게 분석 수행해보기

들어가며


 2023년 7월 6일 코드 인터프리터 기능이 Chat GPT 4에 베타 버전으로 추가되었습니다. Chat GPT 4에서 제공하는 부가기능이기 때문에 기본적으로 유료 사용자만 가능합니다. 7월 6일 유료 사용자 중에서도 코드 인터프리터 기능이 순차적으로 풀렸는데요. 저도 사용이 가능하게 되어 한번 사용해 보았습니다. 코드 인터프리터를 쉽게 설명하자면 ChatGPT를 내에서 Python 코드를 실행하고 실행결과를 Chat GPT 내에서 직접 볼 수 있도록 해주는 기능입니다. 즉, 이를 통해 비디오 편집, 이미지 편집, 데이터 분석, 데이터 시각화 등 Python에서 사용하던 다양한 기능들을 Chat GPT에서 바로 사용할 수 있게 해 줍니다.

 

 코드 인터프리터와 관련하여 아래와 같은 두 가지 의문이 들 수 있습니다. 첫번째 의문은 '코드 인터프리터(Code Interpreter)를 사용하려면 Python을 꼭 사용할 줄 알아야 돼?' 입니다. 이에 대한 대답은 '아니요'입니다. Chat GPT가 너무 친절하게 '한국말'로 진행과정을 설명해 주고 명령 또한 한국말로 지시하면 Chat GPT가 스스로 코드로 전환하여 분석을 실시하고 이를 또 친절하게 한국말로 설명해 주기 때문에 Python 코드를 알지 못해도 충분히 코드 인터프리터(Code Interpreter)를 사용하실 수 있습니다. 두번째 의문은 'Chat GPT로 직접 분석을 시행하면 할루시네이션 현상이 생기지 않을까?' 입니다. 이데 대한 대답도 '아니요'입니다. Chat GPT 내에 내장되어 있는 Python 프로그램으로 실행을 하기 때문에 우려하는 할루시네이션은 발생하지 않습니다. 


 이번 'HR Analytics 끄적끄적'에서는 People Analytics 학습교재인 McNulty, K. (2021)의 "Handbook of regression modeling in people analytics: with examples in R and Python" 5장 Binomial Logistic Regression for Binary Outcomes 파트를 코드 인터프리터를 활용하여 동일하게 분석해 보고자 합니다. 이를 통해 분석이 어떻게 진행되는지, 분석과정에 할루시네이션 현상이 나타나는지 직접 살펴보도록 하겠습니다.


1. 코드 인터프리터 설치 및 시행 방법


 위에서 설명드린 바와 같이 코드 인터프리터는 Chat GPT4 기반으로 사용되기 때문에 코드 인터프리터를 사용하기 위해서는 기존 다른 플러그인(Plugin)과 동일하게 유료사용자여야 이용하실 수 있습니다. 아래 화면은 유료사용자임에도 불구하고 Chat GPT4에 코드 인터프리터가 활성화되어 있지 않을 경우 활성화시키기 위한 방법을 정리한 것입니다. 


 우선 왼쪽 아래 화면과 같이 검은색 바탕 작업줄 화면에 본인이 아이디가 나와 있는 부분을 클릭해 줍니다. 아이디를 클릭하면 위에 새로운 화면이 생기고 그중 Settings & Beta 메뉴를 확인하실 수 있습니다. 이 메뉴를 클릭하시면 오른쪽 아래 화면이 활성화됩니다. 오른쪽 화면에서 왼쪽에 'Beta features'를 클릭한 후 'Code interpreter' 오른쪽에 있는 버튼을 오른쪽으로 밀어 활성화시키시면 코드 인터프린터를 사용하실 수 있게 됩니다.

(좌) Settings & Beta 메뉴 클릭, (우) Code interperter 활성화


코드 인터프리터가 활성화되었다면 이제는 코드 인터프리터를 시행해 보도록 하겠습니다. 아래 화면에 표시되어 있는 바와 같이, Chat GPT4를 선택하신 후 아래 추가 메뉴에서 코드 인터프리터(Code Interpreter)를 클릭하시면 오른쪽에 v표시가 생깁니다. v표시가 생긴 경우 코드 인터프리터가 정상적으로 시행된 것입니다. 코드 인터프리터 시행된 이후에는 아래 프롬프트 창 옆에 + 표시가 생깁니다. 해당 +를 클릭하면 데이터를 탑재할 수 있습니다. 데이터를 탑재와 함께 지시를 시행하면 데이터를 분석할 수 있습니다.


(좌) 코드 인터프리트 시행, (우) 코드 인터프리터에서 데이터 탑재를 위한 버튼 클릭


2. 코드 인터프리터 실습: 승진 확률 분석하기


 코드 인터프리터로 분석을 실시하기 위해 McNulty, K. (2021)의 "Handbook of regression modeling in people analytics: with examples in R and Python" 5장 Binomial Logistic Regression for Binary Outcomes에 제시되어 있는 샘플 데이터를 활용하여 해당 챕터에서 실시한 로지스틱 회귀분석과 동일하게 코드인터프리터를 활용하여 로지스틱 회귀분석을 실시해 보도록 하겠습니다. (5장 Binomial Logistic Regression for Binary Outcomes 내용은 아래 링크를 참고해 주세요.)


https://peopleanalytics-regression-book.org/bin-log-reg.html


1) 기초통계 분석 결과 및 시각화 자료


 위 챕터 5에 제시되어 있는 샘플 데이터를 아래 링크를 통해 다운로드하고 기초통계 분석을 실시해 보겠습니다. 아래 URL을 통해 salespeople.csv를 다운로드합니다. 


http://peopleanalytics-regression-book.org/data/salespeople.csv


 다운로드한 후에는 아래와 같이 데이터를 코드 인터프리터에 탑재한 후 데이터의 기초통계를 구하고 시각화해달라고 지시하면 아래와 같이 기초통계와 기초통계에 대한 내용을 시각화해줍니다.


(좌) 각 변수의 의미 설명, (우) 각 변수의 분포 시각화


 데이터를 불러온 후 기초통계 및 시각화를 Chat GPT 코드 인터프리터에게 요청한 결과, 상단 좌측 화면과 같이 각 변수의 의미를 설명해 주고 상단 우측 화면과 같이 변수의 분포를 시각화 결과를 보여주었습니다. 또한 하단 아래 우측 그림과 같이 Chat GPT 코드 인터프리터는 각 변수의 평균, 표준편차, 최솟값, 최댓값, 사분위수 등의 기초통계를 보여주었습니다. 하단 좌측 그림에 나와있는 MCNulty, K(2021) 책 5 챕터의 기술통계표와 비교하면 할루시네이션 현상 없이 정확한 분석이 이루어진 것을 확인할 수 있습니다.


(좌) MCNulty, K.(2021) 챕터 5 기술통계 표, (우) 코드 인터프리터를 통해 도출한 기술통계 표


2) 변수 간 상관관계 분석


 하단 우측 화면은 Chat GPT 코드 인터프리터에게 promoted, sales, cusomer_rate, performance 4개 변수 간 상관관계를 시각화해달라고 요청하여 받은 변수 간 상관관계 표입니다. 하단 좌측 화면의 MCNulty, K(2021) 챕터 5 상관관계표와 비교해보면 정확하게 상관관계를 나타내는 주는 것을 확인할 수 있습니다.


(좌) MCNulty, K. (2021) 챕터 5 상관관계 표, (우) 코드 인터프리터를 통해 그린 상관관계 표
(좌) MCNulty, K. (2021) 챕터 5 Sales-promoted 상관관계 표, (우) 코드 인터프리터를 통해 그린 Sales-promoted 상관관계 표


3) 로지스틱 회귀분석


 이제 본격적으로 직원 승진 요인을 예측하기 위한 로지스틱 회귀분석을 실시하겠습니다. 우선 MCNULty, K.(2021) 5챕터에서 실시한 Performance 더미화와 동일하게 Performance의 1값을 기준으로 하여 2, 3, 4를 더미화 하도록 하겠습니다. 아래 좌측은 MCNULty, K.(2021)의 파트5 상의 Performance 더미화 결과이며 아래 우측은 Chat GPT 코드 인터프리터를 통해 Performance 변수 1값을 기준으로 2, 3, 4를 더미화한 결과입니다.


(좌) MCNulty, K. (2021) 챕터 5 Performance 변수 더미화, (우) 코드 인터프리터를 통해 Performance 변수 더미화


이제 총 세번의 분석을 진행할 예정입니다. 판매량(sales)과, 고객평가 점수(customer_rate), 더미화된 성과(performance)가 모두 포함된 분석, 판매량(sales)과, 고객평가 점수(customer_rate)가 포함된 분석, 판매량(sales)만 포함된 분석을 각각 실시하고 각 분석 모델의 AIC 값을 계산하여 모델의 복잡성과 적합도 간 최적의 모델을 찾아보겠습니다.


 첫 번째로 판매량(sales)과, 고객평가 점수(customer_rate), 더미화된 성과(performance) 데이터를 모두 포함하여 로지스틱 회귀분석을 실시하도록 하겠습니다. 결측치 처리방법에 따라 분석결과에 약간 차이가 있지만 전체적으로 영향관계는 MCNULty, K.(2021) 분석결과와 코드 인터프리터를 통해 분석결과가 동일한 것을 확인할 수 있습니다. 판매량(sales)과, 고객평가 점수(customer_rate)는 동일하게 승진(promoted)에 유의미한 영향을 미치지만 성과(performance)는 유의미한 영향을 미치지 못하는 것을 분석표를 통해 파악할 수 있습니다.


(상) MCNulty, K. (2021) 챕터 5 로지스틱 회귀분석 결과, (하) 코드 인터프리터 로지스틱 회귀분석 결과


 두 번째로, 성과(peformance) 변수를 제외하고 판매량(sales)과 고객평가 점수(customer_rate)만 포함된 모델(Simpler model)로 분석을 실시해 보겠습니다. 아래 좌, 우 모두에서 살펴볼 수 있는 바와 같이 판매량(sales)과 고객평가 점수(customer_rate)는 모두 승진(promoted)에 유의미한 영향을 미치는 것을 살펴볼 수 있습니다. 


(좌) MCNulty, K. (2021) 챕터 5 Simpler model 로지스틱 회귀분석 결과, (우) 코드 인터프리터 Simpler model 로지스틱 회귀분석 결과


 세 번째로 판매량(sales)만 포함된  로지스틱 회귀분석을 실시하도록 하겠습니다. 로지스틱 회귀분석결과 판매량(sales)은 승진(promoted)에 유의미한 영향을 미치는 것으로 분석되었습니다.


(좌) sales과 승진 간 로지스틱 회귀분석 그래프, (우) sales과 승진 간 로지스틱 회귀분석 결과


 다음으로는 모델단순화를 위해 AIC 분석을 수행해 보겠습니다. AIC(Akaike Information Criterion)의 주요 개념은 모델의 복잡성과 적합도 간의 균형을 찾는 것입니다. AIC 값이 작은 모델이 데이터를 잘 설명하면서도 과적합 위험이 덜한, 즉 더 우수한 모델로 판단됩니다. 그러나 AIC는 모델들 간의 상대적 품질만을 비교할 수 있으며, 어떤 특정 모델이 '좋은' 모델인지를 절대적으로 판단할 수는 없습니다. 그러므로, AIC는 주로 여러 개의 모델 중에서 최적의 모델을 선정하는 데에 사용되며, 이를 통해 모델의 복잡성과 적합도 간의 최적의 균형을 찾아갈 수 있습니다.


(좌) MCNulty, K. (2021)의 AIC 분석결과, (우) 코드 인터프리터의 AIC 분석결과


 상단의 좌우 화면에서 확인할 수 있듯이, MCNULty, K.(2021)에 의한 AIC 분석 결과와 코드 인터프리터에 의한 AIC 분석 결과 모두 'Sales'와 'Customer_rate'가 포함된 모델(Simpler model)이 가장 낮은 AIC 값을 보여주므로, 이 모델이 상대적으로 과적합을 방지하기 위한 최적의 모델임을 확인할 수 있습니다.


 이어서, 해당 모델의 설명력 적합도를 분석하기 위해 Pseudo-R^2를 살펴보도록 하겠습니다. Chat GPT 코드 인터프리터에 따르면, 판매량(sales)과 고객평가 점수(customer_rate)만을 포함한 모델은 높은 설명력을 보였습니다. 판매량(sales)과 고객평가 점수(customer_rate)만이 포함된 모델의 McFadden-R^2, Tjur-R^2 값은 MCNULty, K.(2021) 상의 분석 결과와 코드 인터프리터로 분석한 값이 거의 일치함을 확인하였습니다.


(좌) MCNulty, K. (2021)의 PsedoR^2 분석결과, (우) 코드 인터프리터의 PsedoR^2 분석결과


 이 모델을 이용해, 특정 'Sales' 값과 'Customer_rate'를 가진 인원의 승진 확률을 계산해 보겠습니다. 총 3명의 판매량(sales)과 고객평가 점수(customer_rate)는 각각 (420, 3.4), (510, 2.3), (710, 4.2) 이었습니다. 해당 수치를 넣고 인원들의 승진확률을 계산해보았습니다. 하단 좌측은 MCNULty, K.(2021)에 명시되어 있는 분석 결과이고, 하단 우측은 코드 인터프리터의 분석 결과입니다. 두 결과를 비교해 본 결과 예측한 승진 확률이 거의 동일하였습니다.


(좌) MCNulty, K. (2021)의 승진확률 예측, (우) 코드 인터프리터의 승진확률 예측


나가며


 지금까지 'HR Analytics 끄적끄적'에서 진행했던 분석은 Chat GPT에서 코드를 받아와 R로 분석을 실행하는 방식이었습니다. 따라서 Chat GPT의 '할루시네이션' 요소는 크게 고려할 필요가 없었습니다. 왜냐하면, Chat GPT로 부터 코드를 받긴 하지만 최종적으로 분석을 수행하는 프로그램은 R이었기 때문입니다. 하지만 코드 인터프리터의 등장으로, 이제는 R 코드를 받아서 분석하는 과정을 생략할 수 있게 되었습니다. Chat GPT 코드 인터프리터는 내장된 Python 프로그램을 통해 분석을 수행하고, 그 결과를 다시 Chat GPT 창을 통해 알려줍니다.


 이로 인해 '할루시네이션'에 대한 우려가 다시 등장할 수 있습니다. 이를 검증하기 위해, People Analytics 분야의 주요 교재인 McNulty, K(2021)의 "Handbook of regression modeling in people analytics: with examples in R and Python" 중 5장의 내용을 코드 인터프리터를 활용하여 동일하게 분석해 보았습니다. 교재의 내용과 비교하여 '할루시네이션' 현상이 발생하지 않는지 관찰하였습니다. 그 결과, 코드 인터프리터를 통해 시행한 분석에서 '할루시네이션' 현상은 나타나지 않음을 확인할 수 있었습니다.


 코드 인터프리터는 Auto GPT와 비슷한 기능을 중간에 수행하기도 했습니다. 분석 도중 코드 오류가 발생했을 때, 사용자의 추가 지시 없이 스스로 에러를 인지하고 그에 따른 코드를 수정하였습니다. 그리고 분석과 관련한 모든 과정을 사용자가 이해하기 쉽게 자세히 설명하며 분석을 진행해 주기도 하였습니다. 코드 인터프리터의 등장은 데이터 분석 분야에 새로운 패러다임을 열었다고 말할 수 있을 정도로, 혁신적인 변화를 가져올 것으로 예상됩니다. 따라서 앞으로도 코드 인터프리터를 이용하여 다양한 분석을 계속해서 시도해 볼 예정입니다.




Reference


McNulty, K. (2021). Handbook of regression modeling in people analytics: with examples in R and Python. CRC Press.





 HRKIM의 첫 책 '베테랑 HR 담당자가 만든 HR 담당자를 위한 '찐 실전 챗 GPT ( 생성형 AI & HR 대혁명)'이 출간되었습니다. 많은 관심 부탁드립니다.


https://www.yes24.com/Product/Goods/129378508


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