한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
Firebase 예측 활용하기 - 앱에 머신러닝을 적용해보세요!
2018년 1월 25일 목요일
<이 블로그 포스트는 구글의 Developer Advocate Laurence Moroney의
Machine Learning in Firebase: Using Predictions
를 번역한 내용입니다. 블로그 번역은 양찬석(Google), 김태호(Google)님이 참여해 주셨습니다.>
Firebase 예측 (Firebase Prediction) 소개
Firebase 예측은 ‘예측 된 동작’을 기반으로 사용자 그룹을 생성합니다. Firebase 용 Google 애널리틱스를 기반으로 기계 학습을 적용하여, 앱 내에서 돈을 지출 할 가능성이 높은 사용자, 지출하지 않을 사용자, 앱 사용을 중단할 사용자와 계속 앱을 사용할 것 같은 ‘사용자 그룹’을 만들 수 있습니다. 이 그룹은 매일 업데이트되며 Firebase 알림, 원격 구성 등의 타겟팅에 사용할 수 있습니다.
이 블로그 포스트에서는 Firebase 예측의 설정 방법, 작동 방법, 사용자 정의 이벤트를 기반으로 예측을 설정하고 이를 추적하는 방법을 단계별로 설명합니다.
Firebase 예측의 동작 원리
Firebase 예측은 구글의 기계 학습 프레임워크인 텐서플로우(TensorFlow)를 사용합니다. 개발자의 앱에서 ‘Firebase 용 Google 애널리틱스’를 통해 수집된 최근 100일간의 데이터를 가져와 지도 학습(Supervised Learning) 형식으로 학습을 진행합니다. 이를 기반으로 사용자 행동을 예측(ML 용어로는 라벨링) 할 수 있는 주요 피쳐 및 모델을 생성합니다. 기본적으로 위에 언급한 4종류의 행동(구매자 / 비구매자 / 사용자 이탈 / 사용자 유지)을 예측할 수 있는 모델이 생성됩니다. 예를들어 어떤 사용자가 앱 사용을 중지할지 말지 여부(chrum)를 판별하는 경우, 지난 100일간 모든 앱 이벤트를 기반으로 앱 사용을 중지한 사용자의 행동 패턴을 학습합니다. 이렇게 학습된 모델을 기반으로 앞으로 7일내에 앱 사용을 중지할 것으로 예측되는 사용자를 구분합니다. 유사한 방식으로 향 후 7일간 앱을 계속 사용할 유저, 혹은 앱 내에서 아이템등을 구매할 사용자등을 예측할 수 있습니다. 아래 그림을 참고하시기 바랍니다.
Figure 1. Using Features for Predict Labels
Firebase 예측 시작하기
예측을 사용하기 위해서는 몇 가지 사전 조건이 있습니다.
1. 애널리틱스를 앱에 추가합니다. 예측은 Firebase 용 Google 애널리틱스에서 데이터를 가져옵니다. 애널리틱스를 추가하는 것은 매우 간단합니다. 추가로 코드를 작성할 필요 없이 SDK를 탑재하는 것 만으로도 가장 기본적인 이벤트 데이터를 수집할 수 있습니다.
Android의 경우 build.gradle 파일에 다음을 추가하십시오.
compile 'com.google.firebase:firebase-core:11.8.0'
(Android Gradle Plugin 3.0 미만)
implementation 'com.google.firebase:firebase-core:11.8.0'
(Android Gradle Plugin 3.0 이상)
iOS의 경우 Podfile에 다음을 추가하십시오.
pod 'Firebase/Core'
코드를 사용하여 자체 분석 이벤트에 대한 맞춤 분석을 작성하는 방법을 비롯하여 자세한 내용은
https://firebase.google.com/docs/analytics/
문서를 참고하세요.
2. Firebase 콘솔을 통해 해당 앱을 관리하는 Firebase 프로젝트를 선택합니다. ‘Grow’ 항목에서 ‘Prediction’ 메뉴를 선택합니다.
Figure 2. Firebase Console navigation
예측 기능을 아직 사용하지 않았다면, 정책 동의가 필요합니다. 이 때, 안내되는 내용을 잘 살펴보시면 예측 기능에 관한 유용한 정보를 확인하실 수 있습니다. 예측 기능은 최소 한 달에 1만명 이상의 활성 사용자가 있는 경우에 잘 동작할 수 있습니다. 정책 내용을 살펴보시고 ‘예, 수락합니다.’ 버튼을 클릭하면, 예측 기능을 활용할 수 있습니다.
Figure 3. Opting in to predictions.
이 후 기본으로 제공되는 4가지 예측 항목을 확인할 수 있습니다. 데이터를 학습하는데 시간이 필요하기 때문에, 각각의 예측 결과는 바로 확인할 수는 없고, 일반적으로 24시간이 지난 후에 확인할 수 있습니다. 다만, 활성 사용자 수가 너무 적거나, 쌓여있는 데이터가 100일 미만인 경우 학습에 더 많은 시간이 걸릴 수도 있습니다.
예측 이해하기
시간이 지나면, 아래와 같이 ‘예측 카드'를 통해 예측 결과를 확인할 수 있습니다. 결과가 좋지않네요. 향후 7일 이내에 앱에서 약 29% 사용자가 앱 사용을 중지 할 것으로 예측되고 있습니다.
조금 더 세부적인 타겟팅을 위해 ‘위험 허용 범위’ 슬라이드를 활용해 보겠습니다. 잘못된 예측(False Positive - 이탈하지 않을 사용자를 이탈 사용자로 판명하는 경우)을 최소화 하고 싶으면, ‘위험 허용 범위'를 ‘Low’로 설정할 수 있습니다. 위험 허용 범위는 ‘Low’, ‘Medium’, ‘High’ 세 단계로 선택할 수 있으며 각 단계 마다 타겟팅 되는 사용자의 수가 달라질 수 있습니다.
정확도 탭을 열어보면, 전반적인 예측 정확도를 확인할 수 있습니다. 예측값의 정확도가 94%로 상당히 높게 나타나고 있습니다. 위험 허용 범위를 변경한 후 값을 확인하면, 예측 정확도도 함께 변경되는 것을 확인할 수 있습니다. 예측된 수치를 신뢰할 수 있다면, 이를 기반으로 여러 실험을 진행할 수 있습니다.‘사용자 타겟팅' 버튼을 선택하여, 해당 예측 값을 기반으로 사용자를 타겟팅하고, Firebase의 다양한 기능을 활용할 수 있습니다.
예측 값 활용하기
예측 결과로 도출된 사용자 그룹은 매일 업데이트 됩니다. 해당 그룹을 대상으로 원격 구성이나 알림 기능을 사용하는 경우, 해당 그룹의 속한 사용자는 하루가 지난 후 다시 변경 될 것 입니다.
Firebase 원격 구성은 타겟팅된 사용자를 대상으로 앱 내부 값을 서버단에서 변경할 수 있는 기능입니다. 이를 활용해, 앱 재배포 없이도 사용자 그룹에 따라 앱의 동작 방식을 변경 할 수 있습니다. 예를 들어, Firebase 예측 기능을 통해 향 후 특정 행동을 할 것으로 예측되는 사용자가 있다면, 해당 사용자에게만 특별한 구성 값을 적용할 수 있습니다.
Firebase 알림은 타겟팅된 사용자를 대상으로 푸시 메세지를 보낼 수 있는 기능입니다. 이 때 게임 아이템등 사용자가 다시 앱을 실행하도록 유인할 수 있는 데이터를 첨부할 수 있습니다.
예측 기능의 활용 예
Halfbrick Studios
‘Dan the Man’은 Halfbrick Studio에서 출시된 매우 인기있는 액션 플랫폼 게임입니다. 이 게임은 이미 Firebase 원격 구성 기능을 활용하고 있었습니다. 여기에 더해 Firebase 예측 기능을 활용해 게임을 이탈할 것으로 예측되는 사용자를 대상으로, 어떻게 사용자 리텐션 비율을 높일 수 있는지 실험을 진행했습니다.
Halfbrick Studio는 사용자를 ‘세번째 스테이지를 클리어한 사용자’와 ‘게임을 이탈할 것으로 예측된 사용자’ 로 나누고 동일한 무료 게임 아이템을 제공했을 때 사용자 리텐션 비율이 어떻게 변경되는지 살펴보았습니다.
Figure 6. Reward for users in Dan the Man.
실험 완료 후, 두 그룹과 아이템을 전혀 제공하지 않는 통제 그룹의 결과를 비교한 결과는 다음과 같았습니다.
Group
1-day retention
7-day retention
Group 0: No Promotion
59.52%
25.35%
Group 1: Gift after Level 3
59.07%
25.34%
Group 2: Predicted to Churn
62.12%
30.24%
표로 정리된 결과에서 알 수 있듯이, 세 번째 스테이지를 클리어한 사용자 그룹을 대상으로 무료 아이템을 제공해도 사용자 리텐션 비율에는 큰 변화가 없었습니다. 하지만, Firebase 예측 결과로 게임을 떠날 것으로 예측된 사용자를 대상으로 무료 아이템을 제공했을 때, 7일 내 사용자 리텐션 비율이 약 20% 향상되는 것을 확인할 수 있습니다.
결과적으로 Halfbrick Studio는 두 가지 교훈을 얻을 수 있었습니다. 첫번째로 세 번째 스테이지를 클리어한 사용자는 비교적 오랫동안 게임을 플레이할 것으로 기대했지만 그렇지 않은 사용자와 비교해 사용자 리텐션 비율에 큰 차이가 없었습니다. 두 번째는 Firebase 예측 기능이 올바르게 동작했고, 이를 기존 데이타와 결합하면 더 효과적으로 활용할 수 있을 것이라는 점 입니다.
Rockbite
앱 수익화도 사용자 리텐션을 높이는 것 만큼이나 중요합니다. Rockbite는 Firebase 예측 기능을 활용해 앱 수익화를 최대화 할 수 있는 방법을 실험했습니다. Rockbite는 향후 게임내에서 구매자로 예측되는 사용자들에게 최적의 UX를 제공하고 싶었습니다. Rockbite 게임에는 ‘크리스탈’과 ‘상자’ 두 종류의 아이템이 있습니다. 사용자는 돈을 내고 크리스탈을 구매하거나 게임을 진행하면서 보상으로 크리스탈을 얻을 수 있습니다. 반면에 상자는 반드시 크리스탈을 통해서만 구매할 수 있습니다. Rockbite는 지금까지의 경험을 기반으로 상점 페이지에서 크리스탈이 먼저 표시되는 것을 선호하는 사용자가 있고, 반면에 상자가 먼저 표시되는 것을 선호하는 사용자도 있다는 것을 알고 있었습니다.
이에 대해 Rockbite는 다음과 같은 가정을 세웠습니다. “한 번도 구매를 하지 않은 사용자의 경우 우선 크리스탈을 구매할 것이다. 이를 통해 상자나 다른 아이템을 구매할 수 있다.” 타당해 보입니다. 크리스탈이 없는 사용자에게 상자는 아무런 의미가 없을테니까요. 이 가정을 기반으로 Rockbite는 다음과 같은 로직을 구성했습니다.
Firebase 예측을 통해 이 후 돈을 사용할 것으로 예측되는 사용자는 상점 최상단에 상자 아이템을 배치하고 크리스탈을 그 아래 배치했습니다. 이를 통해 전체 수익이 약 25% 증가했습니다.
Figure 7. Screen for Predicted Spenders
마찬가지로 돈을 지불하지 않을 것으로 예상되는 사용자 그룹을 대상으로는 크리스탈을 상점 페이지 최상단에 표시했습니다. 앞의 결과와 마찬가지로 이 경우에는 해당 그룹의 구매가 약 24% 증가했습니다.
Figure 8. Screen for Predicted Non-spenders
적절한 실험 설계와 이를 통한 수익 증대는 Firebase 예측 기능과
Firebase A/B 테스팅
기능을 결합하여 구현할 수 있었습니다. 아이템 배치 위치에 대한 적절한 가설을 세우고, 이를 예측된 사용자 그룹에 적용하고, 실험 결과를 통제 그룹 비교해 쉽게 비교할 수 있습니다.
Concrete Software
인 앱 구매와 광고를 모두 활용하는 앱이 많이 있습니다. Concrete Software는 앱을 통한 수익을 높이고 동시에 사용자 경험을 향상 시키고 싶었습니다. 이를 위해 앱 내에서 아이템을 직접 구매하거나 구매할 것 같은 사용자에게는 광고를 표시하지 않기로 했습니다. Firebase 예측 기능을 통해 사용자 그룹을 새롭게 만들고, 해당 사용자들에게는 전면 광고가 표시되지 않도록 앱을 업데이트 했습니다. 이 후 결과를 확인해보니, 해당 유저들의 앱 내 구매를 통한 수익이 21% 증가했습니다.
알림 사용하기
Firebase 알림 기능을 사용하는 경우, 알림 작성화면에서 Firebase 예측 결과를 활용해 사용자 그룹을 타겟팅 할 수 있습니다. 이때, 위험 허용 범위도 변경 가능합니다.
Figure 9. Targeting Predicted users with a notification.
Firebase 알림으로 전송된 알림 메시지를 앱에서 수신하기 위해서는, Firebase Cloud Messaging SDK를 사용해야 합니다. 각 플랫폼 별 보다 자세한 내용은 공식 개발자 문서를 참고하면 됩니다.
사용자 정의 이벤트를 기반으로 예측 만들기
기본으로 제공되는 예측 기능은 매우 유용합니다. 다만, 여러분의 앱에서 사용자 이탈이 혹은 앱 내 구매만큼 중요한 이벤트가 있을 수도 있습니다. 이런 경우, Firebase 예측 기능을 사용해 사용자 정의 이벤트를 기반으로 예측 모델을 만들 수도 있습니다.
예를 들어, 여러분의 앱에서 새로운 게임 스테이지를 구매할 수 있는 기능이 있다면, 해당 구매는 주요한 사용자 전환 (Conversion)으로 불 수 있습니다. 이 경우, 해당 전환에 대한 이벤트 (예를들어 purchase_level)를 정의할 수 있습니다. 이 후, 예측 메뉴에서 ‘예측 만들기' 버튼을 선택합니다. 예측 하고 싶은 이벤트 (purchase_level)을 선택하고, 일주일내에 해당 이벤트를 발생시킬 것으로 예상되는 사용자 혹은 예상되지 않는 사용자를 지정해서 설정할 수 있습니다. 아래 그림은 새로운 게임 레벨을 구매할 것으로 예상되는 사용자를 예측하기 위한 예측 카드 설정 화면 입니다.
Figure 10. Creating a Purchase level prediction
시간이 지나면, 예측 결과가 만들어집니다. 이 후에는 기본적으로 제공되는 예측과 마찬가지로 해당 예측 결과를 기반으로 사용자를 타겟팅해 활용할 수 있습니다.
Figure 11. Custom prediction
예측 결과, 약 3%의 사용자가 새로운 레벨을 구매할 것으로 예측되었습니다. 해당 사용자들의 구매를 촉진하기 위해 약간의 넛지를 줄 필요가 있을 수도 있겠네요. 예를 들어, 게임 내 아이템 같은 것 말이조, 혹은, 반대로 새로운 스테이지를 구매하지 않을 것으로 예상되는 사용자를 대상으로 별도의 프로모션을 진행해볼 수도 있을 것 입니다.
유용한 팁
각각의 앱마다 특징이 다를 수 있습니다. 그런 만큼 예측 기능을 활용하는 방법도 앱 마다 달라져야 합니다. 다만, 예측 기능을 활용하면서 알게된 몇 가지 팁을 공유드립니다.
가능한 빨리 기본 예측 기능을 활용해보세요. 적용하기 쉽고 무료입니다. 지금 바로 예측 기능을 활성화 하고 데이터를 확인해보시기 바랍니다. 예측 결과를 기반으로 즉시 액션을 취할 수도 있지만, 대략적인 수치를 확인하는 것 만으로도 여러분의 앱의 향후 성적에 대해 그리고 사용자들이 앱을 얼마나 잘 사용하고 있는지에 관한 의미있는 통찰을 얻을 수 있습니다.
이탈자나 구매자로 예측되는 사용자를 대상으로 앱 사용 경험을 지금 바로 변경할 필요는 없지만, 사용자 행동을 상세히 분석하는데 사용할 수 있습니다. 예를들어 원격 구성 기능을 활용해 각각의 예측 사용자 그룹마다 서로 다른 값을 부여하고, 이를 기반으로 앱 이벤트 데이터를 나누어 살펴볼 수 있습니다. 앱을 이탈할 것으로 예상되는 사용자가 어떤 패턴으로 게임 스테이지를 클리어하고 있는지, 아니면 어디서 어려움을 겪고 있는지 등등을 확인하고, 주요 이탈 지점을 확인할 수도 있습니다. 이를 기반으로 앞으로는 앱 이탈율이 줄어들 수 있게 앱을 개선할 수도 있겠죠?
Firebase A/B 테스팅 기능을 함께 사용할 수 있습니다. 위에서 사례로 언급된 게임에서 매우 효과적으로 활용되었습니다. 이탈자 방지를 위해 세운 가설을 모든 사용자에게 바로 적용하기 보다는 A/B 테스팅을 통해 결과를 검증하고, 효과가 검증된 방법만을 점진적으로 사용자에게 적용할 수 있습니다.
사용자 정의 이벤트를 활용할 수 있습니다. 사용자 정의 이벤트가 너무 적으며 의미있는 결과를 얻기 힘들 수 있습니다. 그리고 그 반대도 마찬가지 입니다. 항상 반복하고 반복하고 또 반복해야 합니다. 새로운 것을 시도하는 것을 두려워하지 말고, 불필요하다고 생각되면 과감히 정리할 필요가 있습니다.
마무리
이 블로그 포스팅에서는 Firebase 예측 기능을 소개하고 어떻게 ML 기반으로 사용자 행동을 예측할 수 있는지, 그리고 이를 어떻게 활용할 수 있는지 살펴보았습니다. 또한, 사용자 정의 이벤트를 기반으로 예측 그룹을 만들고 예측된 결과를 기반으로 앱 지표를 개선한 몇몇 사례를 살펴보았습니다. Firebase 예측에 관해 더 자세히 알고 싶은 분들은 아래의 공식 개발자 문서를 추가로 참고하시기 바랍니다.
https://firebase.google.com/products/predictions/
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed