한국어
    • 한국어
    • ENGLISH
    • 日本語
    • 中文-繁體

    2017.04.11 Data Science

    데이터 분석을 이용한 게임 고객 모델링 #3

    게임 회사는 고객들의 유형과 특성을 정확히 파악하는 것이 매우 중요합니다.

    이는 고객들을 위한 맞춤형 콘텐츠를 기획하고, 보다 편리한 서비스를 제공하기 위함인데요.

    고객 유형 분석에 쓰이는 다양한 데이터 분석 방법을, 엔씨소프트 데이터분석팀 이은조 팀장이 소개합니다.  (*´∀`*)


    이번에는 ‘사회 연결망 분석(Social network analysis)’을 통해 고객의 특성을 파악하는 방법을 소개하도록 하겠습니다.

    사회 연결망 분석을 위해서는 먼저 게임 고객 간의 관계를 ‘연결망(or 네트워크)’이라 부르는 구조로 만들어야 합니다.

    연결망은 보통 ‘노드’라고 하는 여러 개의 개체를 연결한 것인데요, 흔히 ‘소셜 네트워크’라고 하는 사회 연결망은 사람들이 사회적 관계를 통해 연결된 구조이죠.

    다양한 소셜 미디어 채널 

    온라인 게임에서 고객들은 다양한 사회적 관계를 맺습니다. 같은 혈맹에 속하기도 하고, 파티를 맺고 인던을 돌거나 아이템을 주고받는 상호 작용을 하죠.

    그래서 이런 관계나 게임 활동을 분석하면 게임 고객 네트워크를 만들 수 있습니다.

    어떤 파티에 속해있는지 알면 고객의 성향도 파악할 수 있다는! #블소 #파티원 

    보통 네트워크 분석을 할 때는 우리가 수학 시간에 배우는 ‘행렬’로 네트워크 구조를 표현합니다.

    예를 들어 네 명의 사람이 아래와 같이 연결돼 있으면, 이들을 행과 열에 놓고 두 사람 사이가 연결되어 있으면 1, 아니면 0으로 표시하는 것이죠.

    네트워크 구조를 행렬로 표현한 예

    그냥 그림으로 그리면 될 것을, 왜 이렇게 머리 아프게 행렬로 표시하나 싶으실 텐데요.

    컴퓨터가 분석에 필요한 계산을 자동으로 처리하도록 프로그래밍할 때는 이렇게 행렬을 이용하는 게 편하답니다.

    하지만 역시 숫자보다는 그림이 더 직관적이기 때문에 보통 네트워크는 그림으로 많이 표현하죠. 아래 그림은 인터넷 네트워크를 시각화한 것인데요.

    뭔지 모르겠지만 왠지 멋짐.jpg 

    그런데 이와 비슷하게 온라인 게임에서도 게임 고객 간의 네트워크를 시각화할 수 있습니다.

    아래 그림은 엔씨소프트 모 게임에서 고객과 고객 사이에 서로 아이템을 주고 받는 관계를 네트워크로 시각화한 것입니다.

    그리는 방식에 약간(?) 차이는 있지만, 자세히 보면 위의 이미지와 구조상 흡사한 이미지 

    한편 보통 네트워크는 여러 개의 작은 집단으로 나눌 수 있습니다. 위 그림에서는 각기 다른 색깔로 표현한 수백 개의 소집단으로 구분할 수 있죠.

    이런 소집단은 같은 집단에 속한 노드 간의 연결선이 외부 노드와의 연결선에 비해 상대적으로 밀도가 높은데요.

    이런 여러 개의 소집단이 모여서 전체 네트워크를 이룹니다. 이런 소규모 집단을 ‘커뮤니티’라고 부르죠.

    세 개의 커뮤니티로 구성된 네트워크 

    각각의 커뮤니티는 저마다 다양한 네트워크 구조를 갖고 있습니다.

    예를 들어 모 게임의 고객 네트워크를 보면, 아래와 같은 다양한 커뮤니티 구조를 발견할 수 있습니다.

    다양한 구조의 게임 고객 커뮤니티

    따라서 유사한 행동 패턴으로 고객들을 나누듯이, 커뮤니티 역시 비슷한 네트워크 구조를 갖는 것끼리 군집화할 수 있습니다.

    이때 군집화를 위해 커뮤니티 구조가 얼마나 비슷한지 측정하려면, 우선 각 커뮤니티 구조를 나타내는 적절한 값을 구해야 하는데요.

    이를 위해 사용하는 여러 네트워크 지표가 있는데 일일이 다 설명하기엔 지면이 부족하니 대표적인 것 몇 가지만 소개하면 다음과 같습니다.

    대체 이 짤 없이 어떻게 살았을지...

    Degree

    Degree는 네트워크 상의 노드가 몇 개의 노드와 연결되어 있는지 나타내는 값입니다. 즉, 노드에 연결된 선의 개수죠.

    이때 개별 노드의 degree를 구한 뒤 커뮤니티 별로 노드의 degree 평균이나 표준 편차를 구하면 각 커뮤니티 구조의 차이를 아는데 도움이 됩니다.

    또 서로 비슷한 degree를 갖는 노드끼리 연결되었느냐 차이가 큰 노드끼리 연결되었느냐를 측정하는 지표로 ‘degree assortativity(동질성)’라는 것이 있습니다.

    아래 그림에서 왼쪽 커뮤니티는 비슷한 degree를 갖는 개체끼리만 연결되었기 때문에 이 수치가 높은 반면, 오른쪽 커뮤니티는 반대로 매우 낮은 값을 갖습니다.

    동질성이 큰 커뮤니티(왼쪽)와 작은 커뮤니티(오른쪽)의 예

    Radius

    우리말로 하면 반경인데요, 쉽게 말해 커뮤니티 내에서 가장 멀리 떨어진 개체 사이의 거리를 의미합니다.

    이것 역시 네트워크 구조를 파악하는데 많이 사용하는 지표입니다.

    Radius 가 큰 커뮤니티(왼쪽)와 작은 커뮤니티(오른쪽)의 예

    이런 다양한 지표를 구해서 군집화를 하면, 마치 탄소 분자의 얽힘 구조를 보고 다이아몬드와 석탄을 구분하듯이 비슷한 커뮤니티끼리 분류할 수 있습니다.

    아래 그림은 다양한 네트워크 지표를 기반으로 군집화 알고리즘을 사용해 게임 고객 네트워크를 다섯 가지 유형의 커뮤니티로 분류한 것입니다.

    커뮤니티를 다섯 가지 유형으로 군집화한 예

    이렇게 분류하면 행동 패턴만 볼 때는 같은 유형의 고객처럼 보이더라도, 어떤 커뮤니티에 속해 있는지에 따라 좀 더 세세한 관리가 가능합니다.

    더 나아가 네트워크 구조를 잘 파악하면 개체의 특성만으로는 알 수 없는 독특한 패턴을 발견할 수도 있죠.

    따라서 보험 사기나 주식 작전 세력, 악성 코드에 감염된 좀비 PC 등을 탐지할 때 이런 네트워크 분석 기법을 많이 활용하고 있습니다.

    네트워크 구조를 파악하면 좀비PC도 구별 가능! 

    엔씨소프트 데이터분석팀에서도 악성 유저를 탐지할 때 이런 기법을 활용하곤 합니다.

    예를 들어 아래 커뮤니티의 경우, 각 캐릭터들의 게임 활동만 보면 일반 고객과 큰 차이가 없습니다.

    하지만 캐릭터 간의 관계 구조를 시각화하면 매우 규칙적이고 인위적인 구조가 나타납니다. 그래서 이런 정보가 큰 도움이 되죠.

    이것은 사람이 아니므니다…

    실제로는 이 외에도 매우 다양한 네트워크 분석 기법이 있으며 여러 분야에서 폭넓게 활용되고 있답니다.

    지금까지 게임 고객을 모델링하기 위해 사용하는 데이터 분석 기법 세 가지를 소개해 드렸습니다.

    다음 편에서는 세 가지 기법을 실전에서 어떻게 적용하는지 설명하면서, 미처 다루지 못한 내용을 FAQ 형식으로 정리하도록 하겠습니다.