어느덧 저희가 입사한지 한 달이 지났습니다. 신규입사자를 위한 OT와 업무 환경 세팅을 한 것이 엊그제만 같은데, 시간이 참 빠른 것 같습니다. 〣(ºΔº)〣

이번 주 모바일 마케팅 분석은 리니지M 광고 효과 분석을 진행했고, 악성 유저(봇) 탐지 관련하여 지니 계수를 활용한 군집 별 순도 분석을 해보았습니다.

모바일 마케팅 분석 

- R을 이용한 광고 효과 분석

이번 주에는 R을 이용하여 모바일 마케팅 데이터 분석을 진행해보았습니다. 데이터는 전에 이용했던 것과 같은 리니지M 유저들에 대한 데이터였습니다. 오가닉과 광고 매체를 통해서 들어온 유저들의 결제 비율이나 컨텐츠 활동을 비교 분석했다면, 이번에는 매체로 유입된 유저들을 집중적으로 분석해보았습니다.

광고 수익률을 보기 위한 ROAS(Return On Advertisement Spending) 값과 유저 유입 비용인UAC(User Acquisition Cost) 값을 이용해서 시간에 따른 추세를 그려보았습니다. ROAS 값은 (발생 매출)/(광고 비용)으로 계산하였고 사용한 광고비 대비 수익률을 의미합니다.

(보안상의 이유로, 구체적인 값은 표기하지 않은 점 참고 부탁 드립니다.)

UAC 값은 유저 한 명을 유입하기 위해 소모되는 비용으로 (광고 비용)/(유입 유저 수)로 계산할 수 있습니다. UAC의 수치들을 보면 대체적으로 비슷하지만 두드러지게 높은 달들이 보이는데요. 이 이상치는 디바이스를 해킹하여 허위 로그를 남기는 SDK spoofing 유형의 어뷰징을 검출하는 근거로 활용할 수 있었습니다.

악성 유저(봇) 탐지

- 그룹 내 유사도 측정 분석

특정 기준으로 이미 나누어진 유저들의 그룹이 있을 때, 각 유저를 대변하는 범주형 데이터가 있다고 가정합시다. 이 때, 한 그룹에 속해있는 유저들의 범주형 데이터가 얼마나 유사한지를 확인하고자 합니다. 편의상 범주형 데이터는 A, B, C가 나올 수 있다고 가정하고 아래 그림을 살펴봅시다.

이 문제에서 군집분석을 이용하거나 원소간의 거리를 이용한 방법을 적용할 수도 있었지만, 더 간단한 로직이 필요했습니다.

- 지니 계수 활용

지니 계수란 ‘소득의 불평등 측정에 사용하는 지수’와, ‘의사결정트리에서 불순도 지수’가 있었습니다. 이를 통해 그룹이 얼마나 순도가 높은지, 평등한 지 측정하는 지표로 활용할 수 있겠다는 생각이 들었습니다. 같은 이름이지만 다른 지표이기 때문에 두 가지 방식을 각각 달리 적용해보았습니다.

1) 지니 불평등 지수

먼저 지니 불평등 지수 입니다. 는 각 카테고리의 집단을 말하며 은 카테고리 수입니다. 는 1에서 으로 집단의 크기의 오름차순 정렬을 나타내는데요. 각 원소를 카테고리 별로 카운트하는 방식으로 접근 해보았습니다.

예를 들어, 아래 그림처럼 그룹 내 A, B, C의 개수를 집계하였을 때, 그룹1은 그 수치가 가장 낮은 순으로 B, C, A가 됩니다.

이 수치를 통해 한 그룹의 원소들의 집계 결과가 (카테고리 개수 대비) 얼마나 균등한 지 확인했습니다. 값에 대한 해석으로는 값이 0에 가까울수록 평등함(카운트가 골고루 퍼져 있음)을 나타냅니다. 반대로 값이 1에 가깝다면 불평등(카운트 값이 한쪽에 몰려 있음)을 나타냅니다.

위 그림에서 보듯 그룹2보다 그룹1의 경우가 더 평등합니다.

2) 지니 불순도 지수

둘째, 지니 불평등 지수 입니다. 는 각 카테고리 항목이 나올 확률을 나타내며, 은 카테고리 수입니다. 계산 방식은 아래 그림과 같습니다.

이 수치를 토대로 각 카테고리의 값들의 순도가 얼마나 높은지 확인했습니다. 산출된 값에 대한 해석으로는 값이 0 가까울수록 순도가 높음(값이 하나로 몰려있음)을 나타냅니다. 반대로 값이 1에 가깝다면 순도가 낮음(값이 퍼져있음)을 나타냅니다. 따라서 위 그림처럼 그룹1의 경우가 더 불순도가 높습니다.

이 두 방법을 활용해서 그룹 내의 원소들이 얼마나 유사 한지 확인해볼 수 있었습니다. (유의할 점은 지니 계수를 해석할 때 각 그룹의 크기, 카테고리 개수를 함께 살펴볼 필요가 있다는 점입니다.)

이러한 지니 계수 산출 방식은 유저 행동 모델링의 추가적인 분석이나, 요약 정보로 활용할 예정입니다.

업무에 대한 회고 시간

분석모델링팀에서는 약 두 달 정도의 기간을 하나의 Cycle로 정하여 업무를 계획하고 해당 기간이 마무리될 때쯤 Cycle기간 내에 수행한 업무에 대해 회고하는 시간을 갖습니다. 이번 주는 지난 두 달간의 Cycle을 마치는 주간이라 회고하는 시간을 가졌습니다. 각자 Cycle동안 맡은 업무 내역을 공유하고 어떤 점이 어려웠는지, 제안하고 싶은 점이 있는지 등 의견을 나누는 자리였습니다.

팀원 분들이 개발, 모바일 마케팅 분석, 시계열 분석, 기계학습 모델링 등 서로 다른 파트를 맡고 계셔서 어떤 식으로 문제를 접근하고 해결하셨는지 궁금했는데, 이 자리를 통해 진행되고 있는 다양한 업무들을 파악할 수 있어 좋았습니다. 또한 업무를 추진하면서 하셨던 고민이나 팁을 들을 수 있었는데, 훗날 비슷한 문제에 부딪혔을 때 참고할 수 있겠다는 생각이 들었습니다. :)