좋은 기능 선택하기
Decisioning Studio 모델은 고객 기능을 입력으로 사용하여 개인화된 추천을 제공합니다. 의사 결정 공간에 잘 맞는 고품질 기능은 모델 성능을 개선하는 데 가장 영향력 있는 요소 중 하나입니다. 이 문서에서는 제공할 수 있는 기능의 유형, 이를 잘 구성하는 방법, 그리고 에이전트가 선택하게 될 행동과 기능을 어떻게 정렬할지에 대해 다룹니다.
내부 데이터 사이언스 또는 데이터 엔지니어링 팀이 있다면, 데이터에서 어떤 신호가 의미 있는지에 대한 맥락을 가장 잘 파악하고 있으므로 기능을 구성하고 관리하는 데 가장 적합합니다.
Braze 고객의 경우, 고객 기능은 일반적으로 고객 프로필의 커스텀 속성을 통해 Decisioning Studio에 전달됩니다. 커스텀 속성과 커스텀 이벤트 및 각각의 업데이트 전략에 대한 자세한 내용은 스냅샷 대 이벤트 스트림을 참조하세요.
고객 기능의 유형
고객 기능에는 네 가지 일반적인 범주가 있습니다:
| 기능 유형 | 캡처하는 내용 | 예시 |
|---|---|---|
| 사용자 프로파일링 | 고객 상태에 대한 객관적 사실 | age, loyalty_tier, days_enrolled, city, acquisition_channel |
| 사용자 성향 | 고객이 특정 행동을 할 가능성에 대한 모델 기반 점수 | churn_risk_score, purchase_intent_score, upsell_affinity |
| 사용자 행동 | 특정 기간 동안의 고객 활동 요약 | clicks_past_30d, purchases_past_7d, app_logins_past_14d |
| 환경적 | 고객 외부의 상황별 신호 | is_promotional_period, is_holiday, regional_economic_index |
이러한 기능 유형을 함께 사용하면 모델이 세그먼트를 식별하고, 고객 간의 차이를 구분하며, 그에 따라 추천을 조정하는 데 필요한 정보를 제공합니다.
일반 가이드라인
기능을 선택하고 구성할 때 다음 사항을 유의하세요:
- 커버리지: 기능은 타겟 오디언스의 모든 고객을 포함해야 합니다. 오디언스의 상당 부분에서 누락되거나 null인 기능은 해당 고객에 대해 모델이 활용할 수 있는 정보가 줄어듭니다.
- 세분화: 모든 기능은 고객 수준으로 집계되어야 합니다. 실제로 “고객 수준”이 무엇을 의미하는지에 대한 안내는 Braze 외부 ID 사용을 참조하세요.
- 최신성: 기능은 이벤트 기반이 아닌 시간 기반 스케줄에 따라 업데이트되어야 합니다. 이것이 중요한 이유는 스냅샷 대 이벤트 스트림을 참조하세요.
- 유효성: 기능 값은 정의에 맞는 범위 내에 있어야 합니다. “지난 30일간 구매” 기능은 절대 음수가 되어서는 안 됩니다.
- 희소성: 명확한 비즈니스 이유가 없는 한, 대다수 고객에 대해 0이거나 null인 기능은 피하세요. 희소한 기능은 신호를 추가하지 않으면서 노이즈만 더합니다.
- 상관관계: 서로 높은 상관관계를 가진 기능을 포함하는 것은 피하세요. 중복 기능은 편향을 유발하고 예측을 개선하지 않으면서 학습 속도를 저하시킬 수 있습니다.
행동 기능 구성
행동 기능은 정의된 기간 동안 고객의 행동 이력을 요약합니다(예: “지난 28일간 구매 횟수”). 이러한 기능은 정적 프로필 특성뿐만 아니라 고객이 실제로 어떻게 행동하는지를 캡처하기 때문에 추천 시스템에서 가장 가치 있는 기능 중 하나입니다.
기간 선택
적절한 기간은 측정하려는 행동을 고객이 얼마나 자주 수행하는지에 따라 달라집니다:
- 짧은 기간(7~28일): 앱 로그인, 이메일 열기, 웹사이트 방문 등 빈도가 높은 활동에 사용합니다.
- 긴 기간(90~365일): 제품 구매, 구독 갱신, 고객 서비스 문의 등 빈도가 낮은 활동에 사용합니다.
유용한 진단 방법: 기능 값의 상당 비율이 0이라면 기간이 너무 짧을 가능성이 높습니다. 고객 간에 의미 있는 분산이 나타날 때까지 기간을 넓히세요.
집계 방식 선택
- 값이 없는 이벤트(발생했거나 발생하지 않은 것)의 경우: 카운트 집계를 사용합니다. 예:
email_opens_past_30d. - 연관된 값이 있는 이벤트(매출, 기간, 수량)의 경우: 합계와 평균 집계를 모두 사용합니다. 예:
purchase_value_sum_past_90d및purchase_value_avg_past_90d. 이들은 총 볼륨과 이벤트당 규모에 대한 보완적인 정보를 제공합니다.
기능을 행동 공간에 정렬
Decisioning Studio는 성향 모델이 아니라 랭킹 시스템입니다. 목표는 각 고객에 대해 정의된 옵션 세트 중 어떤 행동이 최상의 결과를 낼 가능성이 가장 높은지를 식별하는 것입니다. 이로 인해 특정 요구 사항이 생깁니다: 기능은 가능한 한 주어진 고객에 대해 사용 가능한 옵션을 구분하는 데 도움이 되는 정보를 모델에 제공해야 합니다.
이것이 중요한 이유
예를 들어, 에이전트의 행동 공간이 세 가지 메뉴 항목(커피, 홍차, 버블티) 중 하나를 추천하는 것이라고 가정해 보겠습니다.
기능이 고객을 높은 수준에서 설명하는 경우(“음료를 자주 주문함” 또는 “이메일 참여도가 높음”), 모델은 고객을 넓은 그룹으로 분류할 수 있습니다. 하지만 특정 고객에 대해 커피와 버블티를 랭킹할 때, 넓은 범위의 기능은 큰 도움이 되지 않습니다. 두 고객이 높은 수준의 기능에서는 동일하게 보이지만 완전히 반대되는 선호도를 가질 수 있습니다.
모델이 모순된 신호를 만나면(예: 겉보기에 유사한 두 고객에게 커피를 추천했지만 한 명만 전환한 경우), 효과적으로 학습할 수 없습니다. 노이즈가 정확한 랭킹을 만드는 능력을 저하시킵니다.
행동 공간에 맞는 기능 구축
행동 공간과 동일한 세분화 수준에 매핑되는 기능은 모델에 훨씬 강력한 랭킹 신호를 제공합니다. 카페 예시에서 coffee_orders_past_14d와 같은 기능은 고객이 커피를 선호하는지 모델에 직접 알려줍니다. black_tea_orders_past_14d와 같은 기능은 홍차에 대해 동일한 역할을 합니다. 이제 모델은 충분한 정보를 바탕으로 랭킹 결정을 내릴 수 있습니다.
행동에 정렬된 기능을 사용하면 모델은 포화 및 피로도도 감지할 수 있습니다. 고객의 coffee_orders_past_14d 값이 높지만 최근 커피 추천에서 전환하지 않았다면, 모델은 커피를 다시 추천하는 것이 최선의 선택이 아닐 수 있음을 학습하고 대안을 테스트하기 시작합니다.
정확한 정렬이 불가능한 경우
정확한 기능-행동 정렬이 이상적이지만, 데이터 가용성에 의해 제한되는 경우가 많습니다. 완벽하게 정렬된 기능을 구축할 수 없을 때 도움이 되는 두 가지 접근 방식이 있습니다:
데이터 요약: 홍차와 버블티 구매를 구분할 수 없는 경우, 집계된 tea_orders_past_14d 기능을 사용하세요. 이는 일부 정밀도를 잃지만 차를 선호하는 고객과 커피를 선호하는 고객을 구분하는 데 여전히 도움이 됩니다.
간접 신호: 행동 공간에 직접 포함되지 않는 기능이라도 논리적 관계가 있다면 여전히 가치가 있을 수 있습니다. 예를 들어, dessert_purchased_past_30d는 달콤한 것에 대한 선호도의 합리적인 대리 지표이며, 이는 버블티 선호도와 상관관계가 있을 가능성이 높습니다. 모델은 직접적인 기능 매칭이 없어도 이러한 간접 신호로부터 학습할 수 있습니다.
기본 원칙은 더 관련성 있고 세분화된 정보가 항상 도움이 되지만, 모델은 불완전한 기능으로부터도 학습할 수 있다는 것입니다. 현재 가지고 있는 것부터 시작하고, 더 많은 데이터가 사용 가능해지면 시간이 지남에 따라 개선하세요.