[데이터 분석][HR Analytics] 퇴직 가능자 예측 머신러닝 모델 실습 ② - 문제 정의

2021-11-08
조회수 872

안녕하세요. 히든그레이스 데이터분석팀입니다.

지난 시간에 이어서 머신러닝에서 문제 정의 관련 내용을 자세히 알아보는 시간을 가져보겠습니다. 실습으로 진행될 데이터를 지난 포스팅에 업로드 해놨으니깐 혹시 받지 못하신 분은 지난 포스팅을 참고해주세요.

이전 포스팅 확인


📊 데이터 확인

오늘은 데이터도 같이 보면서 진행해보려 합니다. 저는 로컬에 세팅해 놓은 쥬피터 노트북을 이용해서 확인 할 예정입니다. 구글 코랩에서 할수도 있겠죠? 언제 기회가 된다면 쥬피터 노트북 세팅, 구글 코랩 세팅 방법도 포스팅 해보겠습니다.


어떤 환경이든 자신이 편하게 자주 사용하는 분석 환경을 열어주시고, retirement_prediction.csv 파일을 불러와보겠습니다. 그러기 위해서 먼저 라이브러리를 입력해야합니다.


# 데이터 분석에 가장 기본인 넘파이 & 판다스 라이브러리

import numpy as np
import pandas as pd

(참고로 머신러닝 실습은 파이썬 언어를 기반으로 진행될 예정이니 참고해주세요.)


라이브러리를 불러왔으면 이제 우리가 분석하고, 모델을 만들기 위해 사용할 데이터를 불러와 보겠습니다.


path = './retirement_prediction.csv'
df = pd.read_csv(path)

path는 파일 경로를 의미하고, 판다스의 메써드 중에서 csv 파일을 읽을 수 있는 read_csv() 를 활용하여 df라는 변수에 담아서 데이터를 불러와 보겠습니다. 여기까지 진행하면 아무것도 등장하지 않을텐데요. df 변수에 담긴 데이터를 눈으로 볼 수 있게 해보겠습니다.


# 데이터를 표로 볼 수 있는 방법

# 1. 변수명만 입력하면 내용을 자동으로 출력
df

# 2. display() 메써드를 사용해서 확인 가능
display(df)

위에서 원하는 방법 사용해서 데이터를 표의 형식으로 확인해보겠습니다. 실행시키면


다음과 같이 데이터프레임 형식으로 데이터가 나옵니다. 쉽게 엑셀 표라고 생각하시면 좋습니다. 행(row)은 총 15,000개가 있고, 열(column) 속성은 10개로 이루어진 하나의 Data Table이네요.


🔎 머신러닝 문제정의 기준

그럼 이 데이터의 속성들을 하나씩 살펴봐야 하는데요. 그 전에 우리가 이 데이터를 사용해서 무엇을 할 예정이죠? 네. 바로 퇴직자를 예측하는 머신러닝 모델을 만드는 게 목표입니다. 어떻게 모델을 만들까 접근할 때 판단하는 기준이 있습니다.


① 데이터 유무

우리가 만들려는 모델에 적합한 데이터가 있냐 없냐를 우선 확인해봐야 하는데요. 이번 퇴직자 예측 모델은 제가 처음부터 데이터를 공유해서 이런 생각은 안 해봤을 것 같아요. 그리고 대부분 기존 데이터를 활용해서 모델을 만들기도 해서 간과하는 부분입니다. 하지만 현업에서는 우리가 풀려고 하는 문제를 위한 데이터가 없는 경우가 더 많습니다 :)

그럼 데이터가 있고 없고에 따라 어떻게 접근할 수 있는지 알아보겠습니다.


https://m.blog.naver.com/k0sm0s1/221863569856


머신러닝에서 문제 접근 방식은 크게 3가지로 구분할 수 있습니다.(물론, 더 깊게 들어가면 더 많습니다) 

학습 방법의 차이로도 볼 수 있는데요.

 첫 번째, 지도학습

 두 번째, 비지도학습

 세 번째, 강화학습

 1) 데이터가 있는 경우 : 지도학습 & 비지도학습

 2) 데이터가 없는 경우 : 강화학습


이렇게 구분할 수 있어요.

 즉, 지도학습이나 비지도학습으로 모델을 만들려면 반드시 기존 데이터가 많이. 아주 많이 있어야 합니다.

 많으면 많을수록 좋습니다. (물론, 양질의 데이터가 많아야겠죠)


그럼 데이터가 없다면 모델을 못 만드냐! 그건 아닙니다. 우리가 잘 알고 있는 알파고 가 바로 데이터 없이 강화학습으로 만든 인공지능 모델입니다. 물론 데이터가 완전히 없다 그런건 아니에요. 그런데 너무 깊게들어가면 복잡하니깐 일단 데이터가 없을 경우 강화학습으로 문제를 풀 수 있다고 이해해 볼게요.

https://opentutorials.org/course/4548/28949


알파고 이야기가 나왔으니깐 이 알파고는 어떻게 학습하냐면 알파고란 인공지능이 직접 바둑의 수를 두면서 좋은 수를 두면 +1, 나쁜 수를 두면 -1 을 부여하면서 상,벌을 통해 스스로 학습하면서 상을 많이 받는쪽으로 바둑을 두는 방법을 학습니다. 그럼 이건 기존의 데이터를 보고 학습하는 게 아니라 인공지능이 학습하면서 데이터를 만드는거라고 이해하면 좀 쉽게 이해가 되겠죠


여기까지 데이터 유무에 따라 지도/비지도학습 , 강화학습 을 구분해봤습니다.


② 정답(label) 유무

두 번째 기준은 데이터가 있을경우 지도학습비지도학습 중 어떤 방식을 선택해야 하는지에 대한 기준인데요. 바로 정답 즉, 종속변수가 있는지 없는지에 따라 구분할 수 있습니다.


💡
 정답이 있을 경우 : 지도학습 / 정답이 없을 경우 : 비지도학습



새로 빨간 박스 친 부분을 보시면 column 명이 left라는 데이터가 있는데 이게 퇴직 여부를 의미합니다. 그럼 우리는 이 데이터를 보고 정답이 있구나! 조금 어려운 말로 label이 있구나! 라고 판단할 수 있고, 그럼 이 데이터로는 지도학습 방식으로 문제를 풀 수 있겠다 판단할 수 있습니다.


그럼 비지도학습 은 정답(label)이 없을 때 접근하는 방식인데요. 위 데이터를 그대로 활용해보면 위 데이터에서 left라는 데이터만 없다고 생각해볼게요. 그럼, 특정 한사람 한사람의 인사 정보만 남게 되겠죠? 퇴직 여부가 데이터에 없어서 어떤 사람이 퇴직했는지 알 수 없어요.

그럼 비지도 학습은 어떻게 학습을 하냐! 바로 데이터의 특징을 파악하고 학습해서 비슷한 특징을가진 데이터끼리 묶습니다. 즉, 군집화(Clustering) 합니다.



https://blogsabo.ahnlab.com/2605


예를 들어 left 가 없는 즉, 정답(label)이 없는 데이터를 활용해서, 비지도학습 방식 중 군집화로 학습 모델을 만들었다고 가정해볼게요. 그 결과를 보면 특징이 비슷한 데이터끼리 한그룹, 한 그룹으로 묶은 결과를 출력합니다. 만약 2그룹으로 분리했다고 가정해보고, 한 그룹의 공통점을 살펴보니깐 퇴직한 사람들인거에요, 나머지 다른 그룹은 근무중이고요. 그럼 우리는 이 모델을 다음과 같이 이해할 수 있겠죠.

데이터에 퇴직 여부(정답lable) 정보가 없지만, 비지도학습을 이용해서 모델을 만들어서 군집화 해보니 퇴직한 사람과 그렇지 않은 사람을 구분할 수 있었다.


후~ 오늘 포스팅은 내용이 정말 기네요 :) 

거의 끝났습니다. 마지막 조금만 힘내봅시다.


③ 정답(label) 데이터 유형에 따른 구분

종속변수가 연속형(이산형) 숫자일 경우(ex. 35, 40, 45, 42 ...) : 회귀
종속변수가 범주형으로 특정 대상을 의미 할 경우(ex. 개&고양이 / 퇴직&근무중) : 분류


이 구분은 지도학습 중에서 정답(label) 데이터의 형태에 따라 접근 방식을 분리한 내용입니다. 회귀랑 분류는 앞으로도 많이 자세히 다룰 예정이니 이번 포스팅에서는 깊게 들어가지 않겠습니다. 대부분 머신러닝 문제를 회귀분류로 풀어가기 때문에 많이 접하게 될거에요 :)


자 그럼 지금 우리가 만들려는 퇴직 가능자 예측 모델을 어떻 방식으로 만들어갈지 답할 수 있겠죠?


일단 데이터가 있습니다. 그럼, 강화학습은 아니겠네요. 지도학습비지도학습 중 하나를 선택하면 되겠네요. 데이터 안을 살펴보니 정답(Label)이 있네요. 그렇다면 지도학습으로 모델을 만들 수 있겠네요. 그 정답(label) 데이터 유형을 보니깐 퇴직했으면 1, 아니면 0 으로 범주형 데이터네요. 그렇다면! —> 분류 네! 그럼 우리가 만들 모델은 지도학습 중 분류 로 접근해서 문제를 풀 수 있겠다고 판단할 수 있습니다.

https://opentutorials.org/course/4548/28934


오늘 포스팅은 정말 길고 복잡하고 어렵게 느껴지실 수도 있는데요. 그만큼 중요한 내용입니다. 

머신러닝 문제는 처음 정의를 어떻게 하느냐에 따라 모델 알고리즘이 달라지기 때문에 문제를 정확하게 이해하고 어떻게 풀어갈지 정확히 판단해야 합니다. 한 번 개념을 잘 정리해서 숙지해 놓으시면 그 다음부터는 크게 어렵지 않으니깐 정확히 이해하고 넘어가는 시간이 되었으면 좋겠네요.


다음 포스팅은 위에서 봤던 데이터 속을 하나하나 뜯어보고 확인하는 내용을 다뤄보겠습니다.







1 0