본문 바로가기
데이터사이언스/인공지능을 처음공부하는 사람들을 위한 글

데이터 분석에 있어서 데이터 전처리의 중요성

by 미스터탁 2022. 9. 23.

우리가 현업에서 다루는 데이터는 잘 정제되어 있지 않을 확률이 높다. Raw 데이터로부터 우리는 모델링 할 수있게 끔 행렬 형태의 데이터로 가공할 필요가 있다. 그렇기 때문에, 데이터 사이언티스트들은 모델링하는 실력외에도 R과 Python을 활용하여 적절하게 데이터를 가공할 수 있는 능력을 필요로 한다. 

 

게임 유저 이탈 예측 모델을 만든다 라고 가정해보자. 우리는 다음과 같은 데이터를 다루게 될 것이다. 우리는 보통 하나의 행이 하나의 관측치이며 하나의 열이 하나의 독립변수라고 생각을 하지만, 실제 우리가 다루는 데이터의 형태를 그렇지 않을 확률이 높다. 이 또한 매우 간단한 예제에 속한다. 

 

우리는 이와 같은 데이터를 다음과 같은 형태로 가공할 필요가 있다. 하나의 행이 userid(관측치)이며 각 열들을 이탈여부에 영향을 끼치는 변수로 만들 필요가 있다. 여기서 매우 중요한 점은 당연하게도 이탈여부에 매우 영향을 끼칠 확률이 높은 변수를 만들어야 한다는 것이다. 기존의 데이터는 위 그림과 같은 형태로 되어 있기 때문에, 각 변수들을 그대로 사용할 수 없으며 해당 관측치를 대표할 수 있는 변수를 새롭게 만들어야 한다.

 

기본적으로 우리는 첫번째 그림의 정보를 기반으로 다음과 같은 형태의 데이터를 만들 수 있을 것이다. User별로 각 변수를 합계를 내거나 평균을 내어 해당 유저의 특성을 나타낼수 있을 것이다. 우리는 여기서 한 발짝 더 나아갈 필요가 있다. 이러한 변수들은 이탈 여부에 많은 영향을 끼친다고 말할 수 있을것인가? 물론 해당 변수들은 유저들의 특성을 어느정도 파악할 수 있는 정보를 제공하지만, 이탈과 관련이 직접적으로 있다고 말하기는 어렵다. 이와 같은 변수들을 기반으로 우리는 노력한것 대비 성과가 부족 할 때 그리고 투자한 비용 대비 성과가 떨어 질 때 사람들은 게임 이탈을 할 것이다 라는 가설을 세울 수 있다. 이 가설을 바탕으로 우리는 독립변수를 만들고 성능을 측정하여 효과를 확인 할 수 있다. 

 

 

그렇다면 우리는 다음과 같은 파생 변수를 만들 수 있을 것이다. 누적 획득 경험치를 지불 금액으로 나누어주면, 비용대비 누적 획득 경험치를 만들 수 있으며, 누적 던전 클리어수를 누적 던전 입장수로 나누어 주면 던전 클리어 비율(성과)을 계산할 수 있으며, 이를 다시 지불 금액으로 나누어 주면 비용 대비 누적 던전 클리어 비율을 구할 수 있다. 또는 게임 누적 접속일로 나누어 주면, 시간 대비 누적 던전 클리어 비율을 구할 수 있다. 단순히 누적던전 클리어수 보다 비용 대비 누적 던전 클리어 비율 또는 시간 대비 누적 던전 클리어 비율이 게임 이탈에 직접적으로 영향을 끼칠 것이라는 것은 매우 합리적이다. 이러한 내용은 앞서 언급하였던 '선형성'과도 관계되어 진다. 시간과 비용대비 성과가 낮으면 낮을 수록 게임 이탈자의 수는 높아질 것이다. 즉, 시간과 비용대비 성과와 게임 이탈 확률은 반비례에 관계가 있다라는 것을 알 수 있다. 우리는 이러한 선형성에 주목하여 파생 변수를 만들 필요가 있다. 

 

 

반응형

 

 

혹자는 이와 같이 생각할 수 있다. 게임 누적 접속일, 누적 획득 경험치, 지불금액, 등등 이러한 변수들이 있으면 머신 러닝 모델들이 알아서 조합을 하여 위와 같은 새로운 변수들을 만들고 학습시키는 것이 아닌가? 당연히, 절대 그렇지 않다. 머신 모델들의 역할은 주어진 데이터와 주어진 변수 내에서 정해진 알고리즘을 학습시키는 것이다. 모델 들은 절대 만능이 아니다 라는 것을 알아야 한다. 

 

돌아와서, 게임 데이터를 가지고 우리가 누군가를 설득해야 하는 입장이라면, 우리가 새로 만든 변수를 가지고 학습한 모델들과 기존의 변수 (누적경험치, 던전 입장수 등)를 가지고 학습한 모델들의 성능을 비교하면, 새로 만든 변수들의 효과성을 입증 시킬 수 있을 것이다. 

 

종속변수에 영향을 끼치는 독립변수의 생성과 선택은 매우 매우 중요하다. 사실 우리는 머신러닝 알고리즘에 많이 집중하여 학습하지만, 실제 모델의 성능을 절대적으로 끼치는 것은 데이터이다. 데이터의 크기와 좋은 독립변수가, 즉 데이터의 질이, 모델의 종류보다 훨씬 더 중요하다. 데이터의 특성과 도메인에 따라 다르지만, 좋은 변수 10개를 가지고 학습한 간단한 모델보다 모든 변수 1,000개를 모두 학습 시킨 매우 복잡한 모델을 비교하면 전자가 더 성능이 높을 가능성이 높다. 후다가 더 좋은 성능을 보인다 할지라도 성능 차이는 크게 나지 않을 것이며, 모델의 크기와 효율성을 비교하면 전자를 선택하는 것이 백번 옳다. 

 

이러한 내용들은 모두 과적합과 feature selection등에 연관지어 설명 할 수 있다. 변수를 줄이면 줄일 수록 이와 같이 모델의 성능 또한 올라가며 과적합을 방지할 수 있다. 그렇기 때문에, feature selection이 매우 매우 중요한 분야라고 할 수 있다.  

 

 

반응형

댓글