본문 바로가기
데이터 사이언스

머신러닝을 이용한 월급 예측 데이터 분석 포트폴리오

by 빛나는존재 2022. 5. 14.

데이터 분석 포트폴리오를 작성하게 된 계기

예전에 내가 가입했던 데이터 사이언스 온라인 코칭 프로그램에는 포트폴리오의 중요성, 어떻게 작성해야 하는지 등에 대해 알려주며 포트폴리오 작성용 데이터셋과 함께 예시 분석 코드도 제공했다. 이를 참고하여 나는 나만의 코드와 분석 방법으로 포트폴리오를 완성하려고 한다. 이전에 나는 코로나 환자의 입원 기간을 예측하는 포트폴리오를 작성하긴 했지만 그때에는 지금보다 훨씬 데이터 분석에 대한 이해도가 낮은 편 이어서 이것을 사용해 취업을 하기가 어렵다는 판단이 들고, 결정적으로 포트폴리오를 계속 작성하지 않으면 나의 데이터 분석 실력이 퇴화하는 것이 느껴진다. 내가 비록 현재 회사에서는 데이터 사이언스 팀에 속해 있지만, 데이터 사이언스에 해당하는 업무를 하기보다는 이게 가능하도록 하는 행정 업무 및 탐색적 데이터 분석 정도의 얕은 수준의 일만 하고 있기 때문에 따로 개인적으로 이런 포트폴리오라도 작성해야겠다는 생각이 들었다.

내가 분석할 데이터는 온라인 취업 게시판에 등록된 정보를 바탕으로 산업분야(교육, 서비스, 자동차, 헬스, 금융), 직위(인턴, 과장, 부사장, 대표 등), 일을 시작한 경력 (연 단위), 직장과 대도시와의 거리 등이 feature로 들어간 데이터이다. target은 월 급여로, 이는 연속형 숫자 데이터이기 때문에 분류가 아닌 정량적 예측 문제이다. 이 데이터는 feature에 대한 train, test 데이터 만 있고, target에 대한 데이터는 train 만 있어, test 데이터는 존재하지 않으며 이를 예측을 통해 내가 만들어서 제출해야 한다.

 

데이터 전처리 및 탐색적 데이터 시각화

본격적인 데이터 분석에 앞서 우선 데이터를 시각화 해야 한다. 내가 선택 한 방법은 우선 각 변수들 각각의 분포를 보는 것이다. 범주형 변수의 경우 bar graph, 연속형 변수의 경우 density plot을 그릴 수 있다. 이 작업을 하기 전에 물론 데이터에 유효하지 않은 값 또는 오타가 있는 경우는 제외해야 하기 때문에 각 변수마다 데이터의 정합성을 체크해야 한다. 우선 각 변수마다의 unique 한 값을 체크해서 이상한 값이 들어있지 않은지 체크해 볼 수 있다. 월 급여가 0과 같은 경우는 상식적으로 있기 어려운 일이므로 잘못 기입이 된 것으로 생각되어 제거했다. 직위, 학력, 산업분야의 변수에 속하는 값은 거의 비슷한 수준임을 알 수 있었다. 하지만 전공의 경우 “전공 없음”이라는 값이 기타 전공 (공학, 수학, 철학 등)에 비해 압도적으로 많아 비율이 균형 잡히지 않은 양상을 보여줬다.

 

그다음으로 살펴본 것은 각 feature들과 target (월급)과의 관계이다. 전반적으로 직위가 올라갈수록 더 높은 급여를 받는 것으로 나타났으며, 이것은 흔히 상식적으로 생각할 수 있다. 한 가지 의외였던 것은 학력이 높아질수록 그에 비례하여 급여가 높아지지는 않는다는 것이었다. 물론 대학교를 졸업했는지 여부에 따라 급여 수준이 달라졌지만 일단 대학교를 졸업 한 이후에는 학사, 석사, 박사 간의 급여 간의 차이가 거의 없었다. 대학교를 졸업했다 하더라도 학사와 석사, 석사와 박사 간의 전문성의 차이는 굉장히 크다. 특히 박사학위의 경우 박사학위를 획득하는데 많은 시간 비용이 필요하며 실제로 내가 알기로는 박사학위를 받은 사람들의 월급이 그렇지 못한 사람들에 비해 많은 것으로 알고 있어 이러한 부분이 반영되지 않은 것이 내 예상을 빗나갔다. 그리고 일한 경력은 월급과 약한 양의 상관관계를 보였다. 일을 오래 할수록 전문성이 증가하므로 경력이 많은 사람에게는 더 많은 급여를 줄 것을 기대할 수 있다. 대도시로부터 떨어진 거리는 멀수록 급여가 줄어드는 양상을 보였으며 이는 대도시로 갈수록 인구수가 많고 집값이 높으므로 대도시와 가까운 직장에서 직원을 채용하기 위해서는 높은 집값을 고려하여 그렇지 않은 지역에 비해 더 많은 월급을 제시해야 하는 것으로 보인다.

 

그다음 단계로는 모든 feature와 target 간의 관계를 한 번에 볼 수 있도록 heatmap을 그렸다. 이때 주의해야 할 점은, 아무 조치도 하지 않고 heatmap 만 그리게 되면 범주형 데이터는 전혀 고려되지 않고 연속형 변수 간의 관계만 나타나게 된다. 이게 python을 이용하면서 제일 불편한 부분이다. R에서 분석할 때에는 이런 부분을 신경 쓰지 않아도 자동으로 categorical 한 데이터도 고려되어 시각화를 쉽게 할 수 있었다. Python에서 범주형 변수가 heatmap에 나타나게 하기 위한 방법으로는 범주형 데이터 중 ordinal 한 데이터, 예를 들어 학위나 직위 같은 경우는 계급이 올라갈수록 임의로 각 계급에 해당하는 순위에 따라 숫자를 할당할 수 있다.

반응형