로그인

회원가입 | ID/PW 찾기

NDC

[NDC 19] 아, 잘 달리는 쿠키 찾으시는구나!

구체적인 데이터와 알고리즘을 통해 완성된 '쿠키런 : 오븐브레이크' 추천 시스템

송주상(무균) 2019-04-25 18:28:07

빅 데이터와 AI산업이 큰 주목을 받은 영향 탓인지 데이터를 다양한 영역에서 활용하고 싶어 하는 사람이 늘고 있다. 데이터를 잘 활용하기 위해 두꺼운 책을 주의 깊게 보거나, 노트북에서 코드와 씨름하기도 하지만, 사실 백 번 보는 것보다는 실제 세상에서 구체적인 도전을 하는 것이 낫다.


그리고 여기, 구체적인 데이터 분석과 현실을 잘 녹인 알고리즘을 실제 유저에게 적용하기 위한 고군분투기가 있다. 횡스크롤 러닝 액션 게임 <쿠키런 : 오븐브레이크> 개발사인 데브시스터즈의 신현석 데이터 엔지니어와 여찬구 데이터 사이언티스트는 여러 시행착오를 통해 '떼탈출' 모드를 위한 쿠키와 펫 추천 시스템을 개발했다. 
 
추천 시스템이 도입된 이후, <쿠키런 : 오븐브레이크>에는 더 많은 유저가 참여했다. 아이템 구매 유저는 3배 가까이 늘었고, 신규 유저의 매출은 79% 증가했다. 이들은 어떻게 데이터와 알고리즘을 통해 정확한 목표를 갖고, 좋은 알고리즘으로 잘 구현된 시스템을 가질 수 있었을까? / 디스이즈게임 송주상 기자

 

※ 이 강연은 기초적인 프로그래밍 지식이 필요합니다.

 



여찬구 데이터 사이언티스트(왼쪽)와 신현석 데이터 엔지니어

# 알고리즘 기획의 시작 : <쿠키런 : 오븐 브레이크> 유저에겐 추천 시스템이 필요하다

 

 

서비스 3년 차에 접어들고 있는 <쿠키런 : 오븐브레이크>는 기본적으로 쿠키가 달리는 게임이다. 쿠키는 항상 펫의 도움을 받는다. 쿠키와 펫은 십 초에 한 번씩 속도가 빨라지거나, 장애물을 다 파괴하는 능력이 있는 등 다양한 능력이 있다. 또 각 쿠키와 펫에는 각자의 레벨이 있었다. 

2017년 10월 데브시스터즈는 여러 쿠키가 이어달리기하는 '떼탈출'모드를 도입하였다. 초기 이어달리기에는 스무 종류의 쿠키가 참여했으며, 각 쿠기의 점수를 합산한 최종 점수에 따라 차등 보상을 제공했다. 하지만 이 모드가 도입된 초기에 유저들은 어떠한 정보 없이 80여종의 쿠키에서 적절한 스무 종류의 쿠키를 알아서 골라야 했기에 다소 불편함을 느껴야만 했다. 

▲ 위는 80가지의 경우 중 20가지를 선택하는 경우의 수다. 아래는 쿠키와 펫을 각각 선택해 조합하는 경우의 수다. 
 

신현석 데이터 엔지니어는 이런 불편함을 해소하기 위해 처음에는 단순히 고득점 유저의 조합을 복사할 수 있도록 했다. 하지만 일반 유저와 고득점 유저 사이에 쿠키와 펫 구성과 레벨이 달랐기 때문에, 이 시스템은 사실 초보자들에게 썩 유용하지는 않았다.  

 

 

결국 이런 부분은 2018년 말, 떼탈출 모드의 쿠키와 펫 '추천 시스템'이 도입되면서 어느 정도 해소될 수 있게 되었다. 추천 시스템이 자동으로 적절한 쿠키의 조합을 알려주기 때문이었다. 

 

# 알고리즘 기획의 근거 : 데이터 분석에서 구체적인 근거가 나온다

 

 

여찬구 데이터 사이언티스트는 추천 시스템의 필요성을 '느꼈지만' 명확하지 않았다고 밝혔다. 이 필요성을 수치로 나타내고 데이터를 통해 증명하고 싶었다. 먼저 떼탈출 이용자의 등급 분포를 분석하니, 전체 유저의 95%가 떼탈출 모드에서 최고 등급을 달성하지 못했다. 최고 등급의 보상은 좋지만, 많은 유저가 누리지 못하고 있었다.

 


단순히 최고 등급의 보상을 누리지 못하는 유저가 많다는 사실 역시 구체적이 못했던 여찬구 데이터 사이언티스트는 추가 데이터 분석을 통해 최고 등급을 달성한 유저들이 구매를 더 하는 경향을 확인했다. 떼탈출 모드에서 유저의 최고 등급 달성을 매출과 관계가 깊었고, <쿠키런 : 오븐브레이크>의 큰 터닝 포인트가 될 수 있다고 확신했다.

이제 유저의 최고 달성을 도와주는 게임 프로그램 내 '알고리즘'이 필요했다.

 

▶ 알고리즘이 뭐죠?

 

알고리즘(Algorithm) 쉽게 말해 규칙입니다. 주로 컴퓨터에서 어떤 문제 해결을 위하여 입력 자료를 토대로 원하는 출력값을 유도하는 규칙입니다. 이 규칙은 하나의 단계 또는 여러 단계로 구성될 수 있습니다.

 

잘 와닿지 않는다면, '길 찾기' 어플을 생각하면 됩니다. 물론 컴퓨터 개발의 알고리즘은 컴퓨터가 해결할 수 있는 논리가 좋지만, 정해진 틀이 있는 것은 아닙니다. 어떤 문제를 문제없이 효율적으로 해결한다면 좋은 알고리즘이라고 할 수 있습니다. 하지만, 그게 쉽다면 개발자의 퇴근이 빨랐겠죠?

 

 

# 우리는 모든 조합의 경우를 계산 할 수 없다. 

 

▲ 추천 시스템의 전체 과정이다. 이 중 '추천 알고리즘'에 대한 이야기다.

신현석 데이터 엔지니어는 목표하는 알고리즘의 기능적인 핵심으로 '고득점 유저 조합을 단순 복사'하는 한계를 벗어나는 것으로 설정했다. 예를 들어 1등 유저는 최상급 쿠키와 펫, 적절한 조합, 그리고 게임 실력이 있다. 하지만 대부분의 유저는 최상급 쿠키와 펫이 없다. 게임 실력은 개인의 문제였다. 남은 것은 쿠키의 '적절한 조합'이었다. 구체적으로 유저가 가지고 있는 쿠키와 펫으로 재현 가능한 조합을 추천하는 알고리즘을 목표로 했다.

 

 

첫 번째 추천 시스템 모델은 전체 유저가 사용한 전체 조합(최대 20개 쿠키가 달린 하나의 세트)을 토대로 거대한 DB(데이터 베이스)를 만들었다. 해당 DB에서 일반 유저가 가지고 있는 쿠키와 펫으로 가능한 조합을 찾고, 조합이 존재한다면 그 중 가장 높은 기록을 가져온다.

하지만, 유저마다 쿠키와 펫의 레벨이 다양했고, 우연하게 일치하는 조합이 존재하더라도 추천 요청자보다 더 높은 점수의 조합이 존재해야 작동한다는 문제점이 있어 폐기했다.


두 번째 추천 시스템 모델은 모든 경우의 수를 포함한 DB를 만들었다. 모든 경우가 포함되어 가장 정확한 추천이 기대되지만, 모든 경우를 계산하는 시간은 상상을 초월했다. 신현석 데이터 엔지니어는 '전체 탐색이 어렵다면, 일부분만 탐색하면 어떨까?'라는 생각으로 다음 시도를 이어나갔다.

전체가 아닌 일부만 탐색하는 '그리디 알고리즘'​을 세 번째 추천 시스템 모델에 도입했다.


이번 추천 시스템 모델은 첫 번째 주자가 도착한 시간을 기준으로 일정한 크기의 '검색 범위(search range)'를 결정한다. <쿠키런 : 오븐브레이크>가 기록한 모든 유저의 도착 시간 중  검색 범위에 해당하는 다음 주자의 후보 쿠키들을 고른다. 이 후보 쿠키들 중 가장 점수가 높은 쿠키를 다음 주자로 정한다. 그리고 이 방법을 마지막까지 반복한다.

그리드 알고리즘을 통해 추천된 쿠키 조합은 데브시스터즈 사내 테스트에서 긍정적인 피드백을 받았다. 하지만, 또 다른 암초가 기다리고있었다.

 

▶알고리즘은 알겠는데, '그리디 알고리즘'은 뭐에요?

 

알고리즘에는 종류가 정말 많습니다. 수많은 알고리즘 중에 수학적으로 특별한 효율을 약속한 알고리즘이 있습니다. 그중 하나가 '그리디 알고리즘(Greedy Algorithm, 욕심쟁이/ 탐욕 알고리즘)입니다. 

 

그리디 알고리즘은 단순한 규칙을 지킵니다. '매 순간 선택에서 당장 최적의 답을 선택하고, 적합한 결과를 도출'합니다. 예를 들어 10개 장소를 거칠 때 가장 짧은 거리를 선택한다고 가정합시다. 모든 경우를 계산하면 360만 가지가 넘습니다. 하지만, 그리디 알고리즘을 적용하면 처음 장소에서 가장 가까운 장소를 선택하고, 선택된 장소에서 또 가장 가까운 장소를 선택하는 방법을 반복하다. 

 

이 방법을 통해서 빠르게 가장 짧은 거리의 도시 방문 순서를 선택할 수 있다. 그러나 그리디 알고리즘을 통해 나온 도시 방문 순서는 반드시 가장 짧은 거리가 아니다. 그리디 알고리즘의 약점이다. 


 

# 하지만, '그리디 알고리즘'은 최적의 경우을 보장하지 않는다

 


내부 테스트에 참여한 개발자가 추천 조합이 자신이 만든 조합보다 점수가 낮게 나온다고 지적했다. 신현석 데이터 엔지니어는 그리드 알고리즘만으로 추천 시스템을 만들 경우, 피할 수 없는 문제가 있다고 밝혔다. 바로, 최적의 조합이라는 사실이 보장되지 않는다는 점이다. 


이 문제를 해결하기 위해, 유저의 기존 조합과 그리디 알고리즘을 이용한 추천을 섞는 모델을 만들었다. 20 종류의 쿠키가 있기 때문에, 총 21가지 조합이 생긴다. 추천 시스템을 통해 점수가 상승한다고 유저가 느끼기 위해서는 유저의 기존 조합이 최소한으로 존재해야 했고, 테스트 결과 만 명 중 620명(6.2%)만이 자신의 조합을 추천받았다. 해당 결과를 바탕으로, 신현석 데이터 엔지니어와 여찬구 데이터 과학자는 <쿠키런 : 오븐브레이크> 추천 시스템이 유저가 사용해도 되는 수준이라 판단했다.

▶ 왜 21가지 조합인가요? 섞으면 더 만들 수 있지 않나요?

 

위 모델에서 나온 21가지 조합은 항상 '유저 기존 조합'이 앞에 있고, '그리디 알고리즘으로 나온 조합'이 뒤에 있습니다. 먼저, 여찬구 데이터 사이언티스트는 그리디 알고리즘의 기록이 기존 유저의 기록과 똑같긴 어렵기 때문에 '유저 기존 조합'과 '그리디 알고리즘으로 나온 조합'을 나눴다고 말했습니다. 

 

또, 기존 유저의 기록은 확실하게 결정되어 있지만, 그리디 알고리즘으로 나온 기록은 '검색 범위'에 따라 다르게 결정됩니다. 현실적으로 결정된 값과 범위, 범위와 범위를 짝맞추기 어렵기 때문에 '유저 기존 조합'을 먼저나옵니다. 알고리즘은 모든 경우를 고려하기보다는, 항상 효율적인 상황을 상상하며 접근합니다. 


 

# 마지막으로, 알고리즘은 현실을 잘 설명해야 의미가 있다

 

위 과정을 거쳐, 2018년 12월 31일 <쿠키런 : 오븐브레이크>에 떼탈출 모드의 쿠키 및 펫 추천 시스템이 도입되었다. '와사비 쿠키'가 유저들이 보유한 쿠키 중에서 가장 적절한 조합을 말해줬지만, 와사비 쿠키는 '와사기꾼'이라고 불릴 정도로 유저의 불신은 컸다.

 

당시 그리디 알고리즘을 변형시켜 만든 추천 시스템에는 큰 문제가 하나 있었다. 검색 범위에서 적절한 다음 주자의 쿠키를 찾지 못하면 유저가 가지고 있는 기존 조합에서만 적절한 조합을 찾았다. 다시 말해 21가지 경우 중 유저가 가지고 있는 기존 조합만 결과값으로 내놨다. 유저의 불만이 커지는 건 당연했다.

해결 방법은 간단했다. 후보 쿠키를 찾는 검색 범위를 넓혀, 기존 조합을 탈피하도록 수정했더니, 기존 유저가 자신의 조합을 만나는 반환율이 0.46%로 크게 줄었다. 여찬구 데이터 사이언티스트는 높은 신뢰도를 위해 그리드 알고리즘의 검색 범위를 좁게 잡은 게 큰 실수라고 밝혔다. 검색 범위를 조금씩 넓히면서 실제로 잘 재현하는 알고리즘을 찾는 실험과정이 필요했다며 아쉬움을 토로했다. 이론적으로 좋은 알고리즘은 많다. 하지만, 알고리즘이 현실을 설명하지 못하고 도움이 되지 않는다면 의미가 없다.

<쿠키런 : 오븐브레이크>의 다양한 시스템에도 비슷한 추천 시스템을 개발하면 좋겠다는 바람을 밝힌 여찬구 데이터 사이언티스트는 이번 강연이 데이터를 활용하는 사람에게 도움이 되면 좋겠다고 말했다. 그는 이번 <쿠키런 : 오븐브레이크> 추천 시스템은 데이터 전문가가 먼저 기획했다며, 다른 분야가 요구하는 사항만 수동적으로 듣는 데이터 전문가가 되지말자고 말하며 강연을 마쳤다.

 

최신목록 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10