들어가며
이번 'HR Analytics 끄적끄적'에서는 Cursor AI라는 편집기를 활용하여 입코딩으로 HR Analytics를 실시하는 방법에 대해서 보여드리고자하며, 그 중에서도 EDA(탐색적 데이터 분석) 부분을 중점으로 살펴보고자 합니다. 이전 HR Analytics에서 다루던 생성형 AI를 활용한 Data 분석은 생성형 AI 할루시네이션 현상 가능성으로 인해, 데이터 분석 오류 가능성도 상존하고 있었던 것이 사실입니다. 더 나아가 이제는 본인이 가지고 있는 생각과 Cursor AI와 직접 대화를 나누고 협업을 통해 데이터 분석을 실시하는 방법에 대해서 살펴보고자 합니다. 따라서 이를 위해서는 부수적인 코딩 또는 데이터분석 공부가 추가적으로 필요합니다.
1. 기존 Python 책 코딩 내용 따라하기
이전 글인 HR Analytics를 위한 Python 학습 로드맵에서도 소개했던 이상석님(2023)의 『데이터 드리븐 리포트』 책 pp.149~167에 있는 분석 내용을 Cursor AI를 활용하여 재현해보았습니다. 생성형 AI를 통해 데이터를 분석했을 시에 생길 수 있는 할루시네이션 리스크를 최소화하기 위해 교재 내용을 다시 실행해보았습니다.
분석에 사용된 데이터는 World Happiness Report입니다. 해당 웹사이트에서 데이터를 다운로드한 후, 압축을 풀면 2015년부터 2019년까지의 연도별 파일이 있습니다. 우리는 2019년 데이터를 사용하여 분석을 진행합니다.
본격적인 분석에 앞서 ChatGPT에 데이터를 업로드하고, 데이터 분석의 순서를 문의해보았습니다. 일반적인 데이터 분석 절차에 대해 안내를 받았습니다.
Cursor AI에서도 동일한 작업을 수행할 수 있습니다. 바로 Mention 기능을 활용하는 것인데요. 오른쪽 채팅창(활성화 방법: Ctrl + L)의 프롬프트 입력 부분 하단에 @Mention이라고 표시되어 있습니다. 이 버튼을 클릭하여 웹 링크, 파일, 폴더 등 다양한 요소를 첨부하고, 그 내용을 기반으로 대화를 주고받을 수 있습니다. 이 기능은 새로운 라이브러리를 사용할 때 설명 문서를 함께 첨부하거나, 더 객관적인 지식에 근거한 대화를 진행할 때 매우 유용합니다.
코드를 살펴보면 알 수 있지만, 자동화 EDA 분석 내용은 Happiness_profile_report.html 파일로 저장됩니다. 이 파일은 Cursor AI를 실행할 때 설정한 폴더 내에 저장되어 있습니다. 해당 파일을 클릭하고 마우스 오른버튼 눌러 연결하기 메뉴를 선택후 웹브라우저 프로그램을 선택하면 웹브라우저로 EDA(Exploratory Data Analysis) 분석 리포트를 볼 수 있습니다. 또한 Cursor AI의 Output 화면에서 직접 보고 싶다고 요청하면, EDA 분석 결과 리포트를 바로 확인할 수 있으며, 화면 내 메뉴를 클릭하여 각 분석 결과를 상세히 살펴볼 수 있습니다.
이렇게 생성된 HTML 분석 리포트를 Cursor AI 또는 ChatGPT에 업로드하고, 향후 데이터 분석에 참고해야 할 내용을 문의하면, 데이터 분석 시 고려해야 할 사항들을 항목별로 안내해줍니다.
자동화된 EDA 프로그램 외에도 Cursor AI와 직접 대화하며 변수 간 상관관계 분석, 세계 지도상 국가별 행복지수 표시 등 다양한 데이터 시각화를 진행할 수 있습니다.
이상석님(2023)의 『데이터 드리븐 리포트』 책 pp.149~167에 있는 분석 내용을 비교대조한 결과 직접 코딩한 내용과 동일한 분석결과를 도출할 수 있음을 확인하였습니다.
2. 새로운 데이터로 직접 입코딩 해보기
이번에는 Kaggle에서 데이터를 다운로드 받아 EDA를 실시하는 과정을 진행해보겠습니다. 사용한 데이터셋은 Kaggle의 HR Analytics: Job Change of Data Scientists입니다. 이 데이터셋은 데이터 과학자들이 현재 직장을 떠나 새로운 직업을 찾는 경향을 분석할 수 있도록 구성되어 있습니다. 후보자의 고유 ID, 도시 코드, 도시 개발 지수, 성별, 관련 경험, 등록한 대학 과정 유형, 교육 수준, 전공, 총 경력 연수, 현재 회사의 직원 수, 회사 유형, 이전 직장과 현재 직장 사이의 기간, 완료한 교육 시간 등의 정보를 포함하고 있어, 후보자가 직업을 변경하려는 의도를 예측하고, 어떤 요인들이 이러한 결정에 영향을 미치는지 분석할 수 있습니다.
분석에 앞서 Mention 기능을 활용하여 데이터의 URL을 제공하고, 데이터에 대한 설명을 요청했습니다.
Cursor AI는 홈페이지 내용을 바탕으로 이 데이터를 통해 할 수 있는 분석 내용들을 설명해주었고, 실제로 분석을 진행할 것인지 묻습니다. 분석을 진행하겠다고 답하면 본격적인 분석이 시작됩니다. 데이터셋은 총 3개로 구성되어 있는데, 우리는 로지스틱 회귀분석을 위해 '퇴직 여부' 변수가 포함된 aug_train.csv 파일을 사용합니다.
Cursor AI가 추천한 자동화 EDA 프로그램인 ydata-profiling(Pandas-profiling)을 활용하여 자동화 EDA를 실행합니다. Cursor AI가 제공한 코드를 살펴보면 자동화 EDA는 'train_report.html'로 파일 저장되는 것을 확인할 수 있습니다. 위에서 확인했던 것과 동일하게 Cursor AI에서 파일 저장 폴더로 지정된 곳(지정은 File-Openfolder 순서대로 클릭 후 폴더 지정)에 저장되어 있습니다. 해당 폴더를 확인합니다.
위에서 살펴볼 수 있는 것과 같이 EDA를 통해 기본 통계량 확인, 결측치 및 이상치 분석, 상관관계 파악, 범주형 변수 분석 등 다양한 작업을 수행합니다. 데이터의 분포와 범위를 파악하고, 히스토그램이나 박스 플롯과 같은 시각화 도구를 활용하여 변수들의 분포 형태와 이상치를 식별합니다. 또한 피어슨 또는 스피어만 상관계수를 계산하여 변수 간의 상관관계를 수치적으로 확인하고, 상관 행렬이나 히트맵을 통해 시각화합니다.
이러한 과정을 통해 데이터에 대한 전반적인 이해를 높이고, 데이터의 문제점을 사전에 파악하여 모델링 단계에서의 위험 요소를 줄일 수 있습니다.
이와 같은 자동화 EDA 파일 내용을 Cursor AI에 전달하기 위해 채팅 입력창 왼쪽 상단의 '+' 버튼을 클릭한 후 'train_report.html'을 입력하여 검색합니다(폴더에 상관없이 검색됩니다). 파일이 나타나면 해당 파일을 클릭하여 업로드합니다. 파일을 업로드하면 Cursor AI Chat은 해당 파일을 참고하여 답변을 제공할 수 있습니다. 다음으로, 멘션 기능을 사용하여 해당 Kaggle 데이터가 설명된 URL을 추가로 첨부합니다. 두 가지 자료를 참고하여 어떤 분석을 할 수 있을지 아이디어를 요청했습니다.
Cursor AI는 자동화 EDA 결과와 Kaggle 안내문을 바탕으로 데이터로 분석할 수 있는 다양한 아이디어를 제시해줍니다. 이 아이디어를 따라 데이터를 분석할 수도 있고, 반대로 우리가 아이디어를 제시하여 데이터 분석 방법을 설정할 수도 있습니다. 데이터 분석을 위한 코딩 과정에서 전처리도 함께 요청할 수 있으며, 코드를 작성한 후 어떤 전처리를 수행했는지 확인하고, 필요한 경우 추가 전처리를 요청할 수 있습니다.
이번 분석에서는 교육 프로그램이 이직에 어떤 영향을 주는지 살펴보는 코드를 작성해달라고 요청했습니다. 코드 실행 중 에러가 발생하면, Output에 표시된 에러 메시지를 복사하여 Chat에 전달하면 Cursor AI가 에러를 수정한 코드를 다시 제공해줍니다.
이렇게 대화를 통해 코드를 보완해가며 최종적으로 코드를 완성하고 실행합니다. 결과적으로 교육 시간에 따른 이직 여부를 박스플롯, 히스토그램, 막대그래프 등 다양한 시각화 기법으로 확인할 수 있었습니다.
이제 본격적으로 로지스틱 회귀분석을 실시했습니다. 코딩을 통해 로지스틱 회귀분석 결과를 도출하고, 해당 결과를 Chat에 붙여 넣어 설명을 요청했습니다.
아래는 요청 결과 Cursor AI가 알려준 분석결과입니다.
로지스틱 회귀분석 결과를 해석해드리겠습니다:
1. 모델 적합도
- Pseudo R-squared: 0.1407 (14.07%의 설명력)
- Log-Likelihood: -9245.4
- LLR p-value: 0.000 (모델이 통계적으로 유의미)
2. 주요 변수들의 효과
1) 교육시간(training_hours_scaled)
- 계수: -0.0549
- p-value: 0.003 (매우 유의미)
- 다른 변수들을 통제했을 때, 교육시간이 증가할수록 이직 가능성이 감소
- 오즈비: exp(-0.0549) ≈ 0.947, 즉 교육시간이 1 표준편차 증가할 때 이직 가능성이 약 5.3% 감소
2) 다른 주요 변수들:
a) 도시발전지수(city_development_index_scaled):
- 계수: -0.7357
- p-value: 0.000
- 도시발전지수가 높을수록 이직 가능성 크게 감소
b) 성별(gender_encoded):
- 계수: 0.0220
- p-value: 0.262 (통계적으로 유의미하지 않음)
- 성별은 이직에 유의미한 영향을 미치지 않음
c) 대학등록상태(enrolled_university_encoded):
- 계수: -0.1188
- p-value: 0.000
- 대학 등록 상태가 높을수록 이직 가능성 감소
d) 교육수준(education_level_encoded):
- 계수: -0.1545
- p-value: 0.000
- 교육수준이 높을수록 이직 가능성 감소
e) 회사규모(company_size_encoded):
- 계수: 0.1354
- p-value: 0.000
- 회사규모가 클수록 이직 가능성 증가
종합적 해석:
1. 교육시간은 이직 의도에 부정적 영향을 미침 (교육시간이 많을수록 이직 가능성 감소)
2. 이 효과는 다른 변수들을 통제한 후에도 통계적으로 유의미함
3. 도시발전지수가 가장 강한 영향을 미치며, 그 다음으로 회사규모, 교육수준 순
4. 성별의 효과는 통계적으로 유의미하지 않음
나가며
이번 분석을 통해 Cursor AI를 활용하여 입코딩 방식으로 HR Analytics를 효과적으로 수행할 수 있음을 확인했습니다. 생성형 AI와의 대화를 통해 데이터 전처리부터 시각화, 로지스틱 회귀분석까지 단계별로 진행할 수 있었습니다. 특히 교육 시간이 이직 가능성에 부정적인 영향을 미친다는 결과는 기업의 인재 관리에 중요한 시사점을 제공합니다. 앞으로도 이러한 도구를 활용하여 데이터 기반의 의사결정을 지원하고, HR 분야의 다양한 이슈를 해결할 수 있기를 기대합니다.
Reference
이상석. (2023). 데이터 드리븐 리포트. 한빛미디어
United Nations Sustainable Development Solutions Network (UNSDSN). (n.d.). World Happiness dataset. Kaggle. Retrieved November 16, 2024, from https://www.kaggle.com/datasets/unsdsn/world-happiness
Arashnic. (n.d.). HR analytics: Job change of data scientists [Dataset]. Kaggle. Retrieved November 16, 2024, from https://www.kaggle.com/datasets/arashnic/hr-analytics-job-change-of-data-scientists?resource=download