brunch

You can make anything
by writing

C.S.Lewis

by gimmesilver Mar 25. 2016

데이터 분석에서 예측한다는 것은 무엇을 의미하는가

    얼마 전 회사에서 옆 팀 차장님 한 분이 조언을 구한 적이 있었다. 회사에서 현재 서비스 중인 '블레이드 앤 소울'이란 게임의 약 5년 치 서버 모니터링 데이터가 있는데 이 데이터를 이용해서 앞으로 나올 신규 게임 운영에 필요한 CPU 코어나 메모리 등을 예측할 수 없겠느냐는 것이었다. 다시 말하자면 과거 게임에서 사용한 서버 리소스 내역을 분석해서 앞으로 신규 게임에 들어갈 시스템 리소스를 미리 예측하고 싶다는 뜻이었다(만약 정확한 예측이 가능하다면 예산 계획을 세울 때도  유리할뿐더러 클라우드 서비스 같은 임대 서비스를 이용할 때 장기 계약을 통해 좀 더 저렴한 비용으로 사용할 수 있기 때문에 회사 입장에서는 투자/운영 비용을 효율화하는데 매우 유리하다).  


    얼핏 생각해 보면 위 문제는 전형적인 데이터를 이용한 예측 분석인 것처럼 보인다. 게다가 분석을 위한 데이터 역시 충분해 보인다. 소위 말하는 빅데이터인 것이다. 그러나 결론부터 말하자면 위 데이터를 이용해서는 신규 게임의 시스템 리소스를 예측할 수 없다. 왜 그런지 이해하려면 데이터 분석에서 말하는 '예측'이 무엇인지에 대해 먼저 알아야 한다. 


    데이터 분석을 하다 보면 '예측(prediction)' 이란 용어가 자주 등장한다. 실제로 데이터 분석의 가장 큰 목적은 '예측(prediction)'이다. 그래서 아예 '예측 분석(Predictive  Analytics)'이라는 말도 자주 사용한다. 심지어 구글의 클라우드 기반 기계 학습 서비스 이름은 'Prediction  API(https://cloud.google.com/prediction/docs)'이다.


    그런데 데이터 분석에서 말하는 예측은 우리가 일반적으로 말하는 예측과 그 의미가 좀 다르다. 우리는 보통 예측이라 하면 미래의 사건을 예상하는 것을 생각한다. 그러나 엄밀히 말해 데이터 분석에서 말하는 예측은 미래를 예견하는 것과는 전혀 다르다. 


    그렇다면 데이터 분석에서 말하는 예측은 무엇을 의미하는가? 한 마디로 말하자면 '내삽(Interpolation, 다른 말로 보간이라고도  함)'을 의미한다. '내삽' 이란 용어는 흔히 사용하는 단어가 아니기 때문에 쉽게 와 닿지 않을 수 있다. 예를 들어 설명하자면 다음과 같다.

<그림 1> 서울시 서초구 아파트 주거 면적 당 평균 실거래가 (2015년 10월 기준, 출처: 국토교통부 실거래가 공개시스템)


    그림. 1을 보면 우리는 주거 면적과 가격 사이에 개략적인 선형 관계가 있다고 추정할 수 있다. 그래서 실제 데이터 상으로는 알 수 없지만 누군가 '주거 면적이 70제곱미터인 아파트는 얼마 정도 할까?'라고 물어본다면 6억 5천만 원 정도 될 것이라 추정할 수 있다. 그 이유는 위 데이터를 토대로 아래와 같은 가상의 선을 그릴 수 있기 때문이다.

<그림 2> 아파트 실거래가 데이터에 추정선을 추가한 플롯. 파란색 수직, 수평선은 각각 x = 70, y=65000 위치에서 그린 직선이다>


    위와 같이 이미 주어진 자료를 토대로 자료 사이에 비어 있는 값을 추정하는 것을 내삽이라고 한다. 기계 학습이나 데이터 마이닝을 이용해서 예측 분석을 하는 것은 바로 이런 내삽을 잘 하기 위해 데이터를 변형하거나 패턴을 찾는 작업이다. 즉, 위의 예에 나온 좌표계에 대각선을 가로지르는 가상의 추정선을 긋는 것을 '예측  모델링'이라고 하며 이렇게 만든 추정선(모델)을 이용해서 주어진 데이터에는 없는 새로운 데이터를 추정하는 것(즉, 70제곱미터 면접의 아파트 가격을 추정하는 것)을 '예측'이라고 말한다.


    따라서 어떤 문제가 예측이 가능한지를 판단하려면 현재 보유한 데이터로 내삽이 가능한지 파악해야 한다. 글의 첫머리에서 소개한 예의 경우 이런 내삽이 불가능하다. 주어진 문제는 신규 게임에 필요한 시스템 리소스를 예측하는 것인데 보유하고 있는 데이터는 '블레이드 앤 소울'이라는 게임에 투입된 서버 리소스에 대한 5년 치 시계열 데이터이다. 얼핏 5년 동안 쌓인 방대한 데이터를 이용해서 데이터 분석을 하면 뭔가 그럴듯한 예측 모델을 만들 수 있을 것 같지만 실상 이것은 '블레이드 앤  소울'이라는 게임에 대한 예측 모델은 될 수 있을지언정 다른 새로운 게임에 대한 예측 모델은 될 수 없다. 다시 말하면 내삽을 하고자 하는 차원(dimension)과 보유하고 있는 데이터의 차원(dimension)이 다르다. 이를 표로 표현하면 아래와 같다.


날짜    A       B

1일차  100     ?

2일차  95      ?

3일차  90      ?

4일차  88      ?

5일차  80      ?

...


    A 칼럼이 블레이드 앤 소울의 매월 사용한 시스템 리소스 양을 나타내고 예측하고자 하는 값은 B칼럼에 들어갈 데이터라고 가정하자. 이런 상황에서 신규 게임에 필요한 시스템 리소스를 예측하려면 매 행마다 '?'에 들어간 값을 채우기 위해 내삽을 해야 하는데 각 행마다 보유한 데이터가 한  개뿐이기 때문에 내삽을 할 수 없다. 


    그렇다면 신규 게임에 필요한 리소스를 예측하려면 어떤 데이터가 필요할까? 한 마디로 말하자면 가급적 다양한 게임의 리소스 사용 데이터가 필요하다. 즉, 위 표에서 아래와 같이 여러 개의 열이 추가되어야 한다.


  

날짜    A       B    C    D    E    ...   

1일차  100     ?    80   94    99   ...

2일차  95      ?    82   90    88   ...

3일차  90      ?    78   85    80   ...

4일차  88      ?    75   80    83   ...

5일차  80      ?    70   79    80   ...

...


    위와 같은 데이터가 있다면 각 열에 해당하는 게임의 특성(특질, feature)을 이용해서 B 게임에 대한 리소스를 내삽(예측)할 수 있다. 물론 이렇게 데이터가 마련되더라도 예측은 쉽지 않지만 적어도 풀어볼 만한 문제는 된다. 그 전 상태에서는 아예 모델링 자체가 불가능하다. 


    이제 두 번째 표와 같은 데이터가 있다고 했을 때 B 게임에 대한 리소스 사용량을 얼마나 정확하게 예측할 수 있느냐는 A, C, D, E, ... 게임에 대한 정보(장르, 재미, 서비스 출시 시기, 주변 게임 업계 현황 등등)를 폭넓고 다양하게 보유하고 있으며 이 중에서 B와 비슷한 특성을 갖고 있는 게임이 있는지 등에 따라 결정된다. 예를 들어 중국의 텐센트 같은 경우 매번 출시를 앞둔 게임에 대해 매출이나 성공 가능성에 대한 예측을 하는데 이건 이미 수백 개의 게임을 서비스한 경험과 데이터를 보유하고 있기 때문에 가능한 일이다. 

 그런데 엄밀히 말하자면, 이렇게 텐센트처럼 다양한 게임에 대한 서비스 데이터를 보유하고 있더라도 신규 게임에 대한 매출이나 리소스 사용량을 예측하는 것은 어려운 문제이다. 그 이유는 크게 보면 두 가지를 꼽을 수 있다. 하나는 이것은 미래에 대한 예측이고 따라서 '내삽' 보다는 '외삽(extrapolation)'에 더 가깝기 때문이며, 또 하나는 온라인 게임은 네트워크 효과와 같은 '양의 되먹임(positive feedback)' 현상이 작용하기 때문이다. 따라서 예측에서 크게 벗어날 가능성을 내포하고 있다. 그러나 이런 것까지 완벽하게 예측하는 것은 불가능하니 이런 위험도를 감안한 평균적인 예측이 가능하다는 정도로 이해하면 되겠다.

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