Firebase 예측을 사용한 프로모션 전략 실험

Firebase 예측을 사용하면 사용자의 인앱 구매 가능성에 따라 사용자별로 인앱 프로모션을 최적화할 수 있습니다. 예를 들어 지출 가능성이 큰 사용자에게는 고가의 '프리미엄' 번들을, 다른 사용자에게는 저렴한 기본 번들을 홍보할 수 있습니다.

그런 다음 Firebase A/B 테스팅으로 실험을 진행하면 단순히 기본 번들 또는 프리미엄 번들을 무조건 홍보하는 방식과 비교하여 이러한 예측 기반 전략이 인앱 구매 수익에 주는 영향을 확인할 수 있습니다.

시작하기 전에

예측을 사용하여 앱의 프로모션 전략을 결정하려면 먼저 앱에서 Firebase용 Google 애널리틱스를 사용해야 합니다. 특히 다음과 같은 작업이 필요합니다.

  • Firebase 콘솔에서 애널리틱스 데이터 공유를 사용 설정합니다.
  • ecommerce_purchase와 같이 자동으로 수집되지 않는 지출 관련 이벤트를 명시적으로 로깅합니다. Firebase는 App Store 및 Play 스토어에서 처리되는 인앱 구매의 in_app_purchase 이벤트를 자동으로 로깅합니다. 최대한 많은 데이터를 분류할 수 있도록 앱과 관련된 다른 모든 이벤트도 로깅하는 것이 일반적입니다.
  • 유의미한 예측을 위해 충분히 많은 양의 Firebase 이벤트 데이터를 확보합니다. 일반적으로 월간 활성 사용자 10,000명, 긍정적 예 500개, 부정적 예 500개를 확보하면 Firebase 예측에 충분한 데이터를 제공할 수 있습니다.

프로모션을 원격으로 구성 가능하도록 설정

우선 원격 구성 매개변수의 값에 따라 기본 번들 또는 프리미엄 번들을 홍보하도록 앱을 설정합니다. 다음 단계에서는 예측 및 A/B 테스팅을 구성하여 다양한 기준에 따라 원격으로 매개변수를 설정하지만, 지금은 앱에서 항상 기본 번들을 홍보합니다.

예:

  1. 애널리틱스 및 원격 구성 SDK를 가져옵니다.

    iOS(Swift)

    Podfile에 SDK를 추가합니다.

    pod 'Firebase/Core'
    pod 'Firebase/RemoteConfig'
    

    그런 다음 가져옵니다.

    import Firebase
    

    Android

    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-config:16.4.0'
    
  2. 원격 구성을 초기화하고 promoted_bundle 변수의 기본값을 basic으로 설정합니다. 이후에는 예측 및 A/B 테스팅을 설정하여 이 변수를 원격으로 설정하지만, 앱에서 기본값을 설정하면 원격 구성 변수가 검색되기 전에도 앱이 항상 올바르게 작동합니다.

    iOS(Swift)

    self.remoteConfig = RemoteConfig.remoteConfig()
    self.remoteConfig.setDefaults(["promoted_bundle": "basic"])
    

    자바
    Android

    mConfig = FirebaseRemoteConfig.getInstance();
    
    Map<String, Object> remoteConfigDefaults = new HashMap<>();
    remoteConfigDefaults.put("promoted_bundle", "basic");
    mConfig.setDefaults(remoteConfigDefaults);

    Kotlin
    Android

    config = FirebaseRemoteConfig.getInstance()
    
    val remoteConfigDefaults = HashMap<String, Any>()
    remoteConfigDefaults["promoted_bundle"] = "basic"
    config.setDefaults(remoteConfigDefaults)
  3. promoted_bundle 값에 지정된 번들을 홍보합니다. 예측을 설정할 때까지 이 값은 항상 basic입니다.

    iOS(Swift)

    self.remoteConfig.fetch() { (status, error) -> Void in
        if status == .success {
          self.remoteConfig.activateFetched()
        }
    
        // Act on the retrieved parameters
    
        // Set the bundle to promote based on parameters retrieved with Remote
        // Config. This depends entirely on your app, but, for example, you might
        // retrieve and use image assets based on the specified bundle name.
        self.promotedBundle = self.remoteConfig.getString("promoted_bundle")
    
        // ...
    }
    

    자바
    Android

    mConfig.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        mConfig.activateFetched();
                    }
    
                    // Act on the retrieved parameters
    
                    // Set the bundle to promote based on parameters retrieved with
                    // Remote Config. This depends entirely on your app, but for
                    // example, you might retrieve and use image assets based on the
                    // specified bundle name.
                    mPromotedBundle = mConfig.getString("promoted_bundle");
                    // ...
                }
            });

    Kotlin
    Android

    config.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    config.activateFetched()
                }
    
                // Act on the retrieved parameters
    
                // Set the bundle to promote based on parameters retrieved with
                // Remote Config. This depends entirely on your app, but for
                // example, you might retrieve and use image assets based on the
                // specified bundle name.
                promotedBundle = config.getString("promoted_bundle")
                // ...
            }

이 시점에서 App Store 또는 Play 스토어에 앱을 배포할 수 있습니다. 사용자에게 기본 프로모션 동작이 제공되므로 항상 기본 번들이 홍보되지만, 프로모션은 원격 구성 변수에 의해 제어되므로 사용자에게 앱 업데이트를 배포하지 않아도 Firebase 콘솔만 사용하여 프로모션 전략을 바꿔가며 실험해 볼 수 있습니다.

사용자 지출 예측 시작

다음으로, Firebase 프로젝트를 설정하여 사용자의 지출 행동을 예측하기 시작합니다.

Firebase 콘솔에서 예측 섹션을 엽니다. 예측 서비스 약관에 아직 동의하지 않았다면 동의합니다.

서비스 약관에 동의하면 프로젝트에 예측이 사용 설정됩니다. Firebase 콘솔의 예측 섹션에서 맞춤 예측을 정의할 수 있지만, 지출 예측의 경우에는 애널리틱스 이벤트를 집계하여 사용자가 인앱 구매 또는 전자상거래 구매를 할지 여부를 예측하는 기본 제공 spendnot_spend 예측을 사용할 수 있습니다. 구독 구매는 현재 이 예측에 고려되지 않습니다. 예측을 사용 설정하고 지출 이벤트가 몇 주 정도 로깅된 후에 이러한 예측이 제공됩니다.

프로모션 전략 실험 만들기

이제 항상 기본 번들을 홍보하는 방식 및 항상 프리미엄 번들을 홍보하는 방식과 비교하여 예측 기반 프로모션 전략의 수익 효과를 테스트하는 A/B 테스팅 실험을 만듭니다.

실험에서는 통제그룹, 매개변수를 무조건 설정하는 그룹, 예측 기반 그룹이라는 세 가지 변수를 만드는 것이 좋습니다. 이렇게 하면 실험을 통해 예측 기반 방식의 효과가 단순한 일괄 적용 방식보다 더 우수한지 여부를 판단할 수 있습니다. 그러나 세 가지 변수가 있는 실험에는 충분한 데이터를 수집하기 위해 더 많은 참여자가 필요합니다. 세 가지 변수가 있는 실험을 진행하기에 앱의 사용자가 부족하다면, 모든 사용자에게 무조건 적용하는 실험을 빼고 두 가지 변수만 가지고 실험을 해도 무방합니다.

실험을 만드는 방법은 다음과 같습니다.

  1. Firebase 콘솔에서 A/B 테스팅 섹션을 엽니다.

  2. 새 실험을 만듭니다.

    1. 실험 만들기 > 원격 구성을 클릭합니다.

    2. 목록에서 앱을 선택하고 실험에 포함할 사용자 수를 지정합니다. 고액 지출자 등 특정 사용자 카테고리를 실험에서 제외하도록 선택할 수도 있습니다.

    3. 목표 측정항목 목록에서 구매 수익을 선택하고 추가로 추적할 측정항목(예: 사용자 참여, 유지, 앱 삭제, 광고 클릭)을 선택합니다.

    4. 세 가지 변수를 정의합니다.

      • 항상 기본 번들 홍보(통제그룹)
      • 항상 프리미엄 번들 홍보
      • 지출 예측에 따라 기본 또는 프리미엄 번들 홍보

      통제그룹에서 promoted_bundle 매개변수를 만들고 (no change)로 설정합니다. 통제그룹에 할당된 사용자에게는 항상 기본 프로모션을 표시하는 기본 동작이 적용됩니다.

      항상 프리미엄 번들 홍보 변수에서 promoted_bundle 매개변수를 premium으로 설정합니다. 이 변수에 할당된 사용자에게는 항상 프리미엄 프로모션이 표시됩니다.

      지출 가능성이 높으면 프리미엄 번들 홍보 변수에서 promoted_bundle 매개변수를 premium으로 설정하고 사용자 부분집합을 예측: 지출(중간 위험 허용 범위)로 설정합니다. 이 변수에 할당된 사용자에게는 지출이 예측될 경우 프리미엄 프로모션이 표시됩니다.

실험을 시작하고, A/B 테스팅에서 우세한 변수가 판명될 때까지 며칠 정도 실행합니다. 실험에서 주요 변수가 판명되지 않은 경우 더 많은 사용자를 대상으로 실험을 확대해야 할 수 있습니다.

가장 좋은 변수를 모든 사용자에게 적용

A/B 테스팅에서 우세한 변수(이 경우 구매 수익이 극대화되는 변수)를 판명하기에 충분한 정보가 수집되었으면 가장 좋은 변수 또는 다른 변수를 모든 사용자에게 적용할지 여부를 결정할 수 있습니다.

Firebase 콘솔A/B 테스팅 섹션에서 완료된 실험의 세부정보 뷰를 엽니다. 뷰에서 목표 측정항목 및 선택한 보조 측정항목에 따른 각 변수의 성과를 확인할 수 있습니다. 이 정보를 근거로 주요 변수 또는 다른 변수의 전체 적용 여부를 결정할 수 있습니다.

모든 사용자에게 변수를 적용하려면 실험의 세부정보 페이지에서 more_vert > 주요 변수 구현을 클릭합니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.