BLOG

[Techblog] 인도 최고의 보험 회사 Edelweiss, Amazon SageMaker를 통해 교차 판매 개선
작성일: 2021-06-18

*이 게시물은 Edelweiss Tokio Life Insurance 수석 데이터 과학자 Nikunj Agarwal 공동 작성했습니다. Edelweiss Tokio Life Insurance Company Ltd 인도의 선도적인 생명 보험 회사로 생명 보험, 건강 보험, 퇴직 정책, 향상 계획, 교육 자금 등의 서비스를 제공합니다.

 

여러분은 예금 계좌 행동에 따라 신용카드를 어떻게 추천 받고 있으신가요? 자동차 보험을 가입할 때 추천 받는 생명보험 상품이나, 배달 앱에서 메인 음식을 주문할 때 추천 받는 사이드 메뉴는 무엇인가요? 이들은 교차 판매라고 불리는 관행을 이용하여 이루어지는데, 이 관행은 고객이 현재 구매하고 있는 상품을 기준으로 관련 상품이나 무료 상품을 구매하도록 유도합니다. 특히 보험 사업에서는 신규 고객을 확보하는 것보다 기존 고객에게 교차 판매하는 것이 더 쉬운 경우가 많습니다. 투자나 퇴직 보험을 기존 생명 보험 고객에게 판매하는 것이 무작위적인 새로운 영업 기회에 접근하려는 것보다 더 나은 확률이기 때문이죠. 하지만 교차 판매 방식이 데이터 중심적이지 않으면 고객 또는 정책을 잘못 선택하는 경우가 많습니다. 관련 없는 제품이 반복적으로 제공되면 소비자의 불만이 발생하고 이 경우 교차 판매 전략이 좋은 효과를 거두지 못합니다. 이렇게 기업은 기회를 놓치고 고객 만족도는 낮아지게 됩니다.

 

인도의 선도적인 생명 보험 회사인 Edelweiss Tokio Life Insurance는 머신 러닝 (ML)을 사용하여 데이터 기반 솔루션을 고안했고, 이로써 고객의 요구 사항을 더 잘 이해하며 그 요구 사항에 가장 적합한 정책 제품을 식별할 수 있게 되었습니다. 이 솔루션을 개발하기 위해 Edelweiss는 Amazon ML Solutions Lab과 파트너 관계를 맺고 교차 판매 권장 사항을 정확하게 만드는 최상의 모델링 기술을 선택했습니다. 

 

그렇다면 이 맞춤형 교차 판매 솔루션을 개발하기 위해 어떻게 Amazon SageMaker에서 모델을 구축했는지 보여 드리겠습니다.

 

 

ML 솔루션 공식 

정확한 교차 판매 솔루션을 구상하는 동안 변화하는 고객 행동 및 제품(정책) 기능에 적응할 수 있는 능력을 염두에 두었습니다. 이러한 맥락에서 ML은 자연스러운 선택이었고, 솔루션은 2개의 다른 ML 모델 조합으로 정의했습니다.

  • 교차 판매 성향 모델 – 교차 판매할 수 있는 고객이 수만 명일 때 최우선 순위는 가장 유망한 잠재 고객을 찾는 것입니다. 이를 위해 감독된 분류 모델이 개념화되었습니다. 전환 가능성을 나타내는 0-1 사이의 성향 점수와 함께 교차 판매 잠재 고객을 식별하도록 설계되었습니다(1이 가장 높음). 성향 점수를 사용하여 분류 된 잠재 고객을 우선 순위 세그먼트로 그룹화하여 비즈니스팀이 추가로 살펴볼 수 있습니다.
  • 정책 추천 모델 – 교차 판매 잠재 고객을 식별한 후에는 어떤 정책이 가장 적합한 지 알아야 합니다. 그곳이 바로 추천 엔진이 뜨는 곳이고, 각 잠재고객에 대해 상위 3개 정책의 순위를 매기고 권장합니다.

 

 

데이터에서 얻은 초기 통찰력

Edelweiss는 고객 및 정책에 대한 200개 이상의 속성을 가진 약 10만 개의 레코드로 시작했습니다. 기존 교차 판매 사례는 일련의 비즈니스 규칙을 사용하여 레이블을 지정할 수 있습니다.

 

데이터의 특성, 품질 및 예측력을 평가하기 위해 데이터 세트의 탐색 데이터 분석 (EDA)을 수행했습니다. 기술(일변량) 분석은 결측값, 낮은 분산, 낮은 엔트로피, 높은 카디널리티, 왜도 등과 같은 품질 문제가 있는 특징을 탐지하고 교정 조치를 취하는 데 도움이 되었습니다.

 

EDA 프로세스는 교차 판매와 고객 세그먼트, 수입 및 교육 간의 관계와 같은 몇 가지 직접적인 이해를 확립하는 데 도움이 되었습니다. 또한 더욱 미묘한 통찰력을 발견했습니다. 예를 들어 각 가족의 이전 구매자가 있는 신규 고객은 교차 판매 고객이 될 가능성이 더 높거나 조직에서 상대적으로 경험이 적은 에이전트가 교차 판매에 더 많이 기여했습니다. 이는 경험이 부족한 에이전트가 상대적으로 적은 수의 고객을 처리하고 있으므로 포트폴리오 내에서 교차 판매를 개선하는 데 더 많은 시간을 투자 할 수 있다는 사실에 기인할 수 있습니다.

 

이러한 통찰력은 교차 판매 성향 분류 모델의 성능에 큰 영향을 미칠 수 있는 특징에 대한 지표를 제공했습니다. 모델링 단계의 일부로 기능 점수 및 순위를 매겨 보았고, 이 통찰력이 대부분 실제 관련성이 있는 것으로 입증되었습니다.

 

 

심층 탐구

Pearson의 상관 계수에 의해 측정되는 쌍별 상관 관계는 두 연속형 특성 간의 통계적 연관성을 측정하는 가장 널리 사용되는 이변량 분석 기법입니다. 이 값은 두 형상의 공분산을 표준 편차의 곱으로 나눈 값으로 측정되며, 직관적으로 쌍 연결의 크기와 방향을 나타냅니다.

 

데이터 세트에 적용했을 때, 쌍별 상관 분석은 기본 보험료 및 연간 보험료, 보험료 및 총액 보장 등과 같은 많은 연속 기능 쌍간에 상당한 수준의 상관 관계를 나타냈습니다. 

따라서 PCA와 t-SNE와 같은 기술을 이용한 치수 감소의 범위가 있었고, PCA 결과는 다음 그래프에서 증명된 바와 같이 수치적 특징 공간의 축소 기회를 시사했습니다.

 

다음 단계로 Edelweiss는 어떤 기능이 주요 주요 구성 요소에 가장 많이 기여하는지 이해하기 위해 깊이 파고 들었습니다. 이를 이해하기 위해 다음 그래프와 같이 상위 구성 요소의 기능 맵을 추출했습니다.

 

수치 속성의 하위 집합에 대한 PCA 분석

 

기능 맵 보기는 중요한 기능과 그 상호 관계를 식별하는 데 도움이 되기 때문에 중요한 입력입니다. 구성 요소의 기능 조합을 전체적으로 살펴보면 해당 구성 요소가 나타내는 개념을 쉽게 이해할 수 있습니다. 예를 들어, 한 구성 요소는 제안자의 재정 및 소득 관련 속성을 나타내는 반면 다른 구성 요소는 관계 관리자 및 현장 에이전트의 경험 또는 빈티지 수준을 나타낼 수 있습니다.

 

데이터에 대한 탐색적 분석을 통해 데이터를 더 잘 이해하고 누락된 값 대치, 매우 낮은 분산 또는 엔트로피가있는 기능 회피, 상관된 기능으로 인한 중복 및 높은 차원성 감소, 새로운 기능 엔지니어링 등과 같은 적절한 개선 조치를 취하는 데 도움이 되었습니다. 또한 볼륨, 분산, 수치적 대범주적 영향, 카디널리티 및 왜도와 같은 데이터의 주요 특성을 이해하여 적합한 모델링 접근 방식을 선택하는 데 도움이 되었습니다.

 

 

SageMaker로 성향 모델 구축

성향 분류 모델에 대한 솔루션을 결정하는 동안 데이터 볼륨과 데이터의 특성이 주요 고려 사항이었습니다. 데이터가 완전히 구조화되고 볼륨이 너무 높지 않았기 때문에 신경망 기반 변형은 가장 적합한 옵션이 아니었습니다. 반면 앙상블 방법 기반 분류기는 특히 데이터의 높은 차원성과 많은 수의 범주형 특징을 고려할 때 적절한 선택인 것처럼 보였다.

 

원-핫 인코딩은 고심도 기능에 대해 확장되지 않기 때문에 레이블 인코딩, 해시 인코딩 및 대상 인코딩과 같은 다른 옵션을 고려해야 했습니다. 때문에 범주형 데이터를 처리하고 결합하기 위한 강력한 메커니즘을 제공하는 그라디언트 부스팅 기반 앙상블 학습 프레임워크인 CatBoost를 사용했습니다. 앙상블 모델링 원칙에 따라 CatBoost는 많은 이진 결정 트리(취약 학습자)를 결합하여 통합 모델(강력 학습자)을 형성합니다. 한 각 고심도 범주형 특성의 범주를 나타내는 목표 통계량을 추정하고 그 후에 이러한 범주 값을 소수의 그룹으로 군집화합니다. 그런 다음 범주형 특징을 나타내는 소수의 그룹이 원-핫 인코딩되거나 레이블 인코딩됩니다.

 

이 접근 방식은 대상 변수와의 연관성을 잃지 않고 매우 높은 카디널리티를 처리하는 데 도움이됩니다. 다른 주목할만한 이점은 정렬된 부스팅, 일반 그라디언트 부스팅 접근 방식에서 탐욕스러운 부스팅으로 인한 예측 변화(잠재 대상 누출)문제를 해결하고, 여러 범주 적 특징을 결합하여 새로운 기능을 생성함으로써 모델의 예측 능력을 향상시키는 데 도움이 되는 기능 조합입니다.

 

 

CatBoost 모델 훈련

다음 예제 코드 CatBoostClassifier를 훈련하며 이는 후에 SageMaker를 통해 실행됩니다.

%%writefile catboost_training.py

 

import boto3

import argparse

import logging

import os

import numpy as np

import pandas as pd

from catboost import CatBoostClassifier

from sklearn.metrics import balanced_accuracy_score, recall_score, precision_score, f1_score

 

if __name__ ==’__main__’:

 

    logger = logging.getLogger()

    logger.setLevel(logging.INFO)

 

    print(‘Extracting arguments’)

    parser = argparse.ArgumentParser()

   

    parser.add_argument(‘–train_file’, type=str)

    parser.add_argument(‘–test_file’, type=str)

    parser.add_argument(‘–model_file’, type=str)

    parser.add_argument(‘–target’, type=str)

    parser.add_argument(‘–categorical_fields’, type=str)

    parser.add_argument(‘–learning_rate’, type=str)

    parser.add_argument(‘–depth’, type=str)

    parser.add_argument(‘–imbalance_penalty’, type=str, default=’3′)

 

    args, _ = parser.parse_known_args()

   

    logging.info(‘Reading data . . .’)

    train_df = pd.read_csv(args.train_file)

    test_df = pd.read_csv(args.test_file)

 

    logging.info(‘Building training and testing datasets . . .’)

    categorical_fields = args.categorical_fields.split()

    X_train = train_df[[col for col in train_df.columns if col != args.target]]

    X_val = test_df[[col for col in train_df.columns if col != args.target]]

    y_train = train_df[args.target]

    y_val = test_df[args.target]

       

    # Sample fixed hyper-parameters

    model_params = dict()

    model_params[‘iterations’] = 1000

    model_params[‘loss_function’] = ‘Logloss’

    model_params[‘eval_metric’] = ‘F1’

    model_params[‘random_seed’] = 21

   

    # Read hyperparameters as arguments (to tune in future using SageMaker)

    model_params[‘depth’] = int(args.depth)

    model_params[‘learning_rate’] = float(args.learning_rate)

    imbalance_penalty_factor = int(args.imbalance_penalty)

   

    # minority_weight assignment for binary classes: 0 and 1

    minority_class_weight = imbalance_penalty_factor * (len(y_train) – sum(y_train)) / sum(y_train)

    model_params[‘class_weights’] = [1, minority_class_weight]

 

    model = CatBoostClassifier(**model_params)

   

    model.fit(X_train, y_train,

        cat_features=categorical_fields, eval_set=(X_val, y_val), verbose=False)

   

    y_val_pred = model.predict(data=X_val)

   

    precision = precision_score(y_val, y_val_pred)

    recall = recall_score(y_val, y_val_pred)

    f1 = f1_score(y_val, y_val_pred)

    # Increase the influence of recall in the model evaluation metric

    model_score = f1 * recall

   

    logging.info (‘Precision: {:.3f}’.format(precision))

    logging.info (‘Recall: {:.3f}’.format(recall))

    logging.info (‘F1: {:.3f}’.format(f1))

    logging.info (‘ModelScore: {:.3f}’.format(model_score))

   

    # persist model

    model.save_model(args.model_file)

앞의 코드에서는 교차 판매 사례를 분류하는 방법을 학습하는 데 실패한 모델에 대한 패널티를 주기 위해 imbalance_penalty_factor(# minority_weight assignment for binary classe 코멘트 참고)를 사용하여 소수 클래스에 대한 더 높은 클래스 가중치를 보정했습니다. 이는 과거 데이터가 왜도를 나타내었기 때문입니다. 교차 판매 사례의 비율이 단일 판매 사례에 비해 상당히 낮았습니다. 높은 차원의 데이터로 인해 SMOTE와 같은 오버 샘플링 기법을 사용하지 않기로 결정했습니다.

 

 

SageMaker에서 교육 코드 이식 및 실행

관리형 교육 및 자동 모델 튜닝과 같은 기능을 활용하기 위해 교육 코드를 조직 전체의 ML 플랫폼인 SageMaker에 원활하게 이식했습니다.

이를 수행하는 한 가지 쉬운 방법은 코드 및 구성 파일로 구성된 SageMaker 호환 Docker 이미지를 생성하는 것입니다. 이미지가 생성되면 Amazon ECR(Elastic Container Registry)로 푸시됩니다. 교육 또는 호스팅이 시작되면 SageMaker는 이 이미지를 사용하여 컨테이너를 시작하고 파이프 라인을 관리하는 데 필요한 모든 무거운 작업을 수행합니다.

다음 코드 조각은 몇 줄의 코드로 SageMaker에서 교육을 시작하는 방법을 보여줍니다. Docker 이미지가 Amazon ECR에 등록되면 Estimator 클래스에 매개 변수로 전달할 URL을 가져옵니다.

import tarfile

from sagemaker.estimator import Estimator

program = ‘catboost_training.py’

project = ‘cb_classifier’

src_zip = ‘scripts.tar.gz’

 

# compress the code and upload in S3

tar = tarfile.open(source, ‘w:gz’)

tar.add(program)

tar.close()

 

submit_dir = sess.upload_data(

    path=src_zip,

    bucket=bucket,

    key_prefix=project+ ‘/’ + src_zip)

   

output_path = “s3://{}/{}/training_jobs”.format(bucket, project)

# Create the SageMaker Estimator using custom container and training script

# container_image_uri indicates the ECR uri of the container docker image

# program and submit_dir relate to the python training script

# categorical_fields is a string listing the categorical fields

# ‘cross_sell’ is the classification target field

model = Estimator(container_image_uri,

                      role=role,

                      train_instance_count=1,

                      train_instance_type=’ml.m5.xlarge’,

                      output_path=output_path,

                      hyperparameters={‘sagemaker_program’: program,

                                       ‘sagemaker_submit_directory’: submit_dir,

                                       ‘categorical_fields’: categorical_fields,

                                       ‘target’: ‘cross_sell’})

 

자동 모델 튜닝으로 모델 하이퍼 파라미터 튜닝

트리 깊이, 배깅 온도, 학습률 및 불균형 페널티 계수와 같은 모델 하이퍼 파라미터 는 다양한 하이퍼 파라미터 조합으로 여러 훈련 작업을 시작하는 SageMaker의 자동 모델 튜닝을 사용하여 튜닝되었습니다. SageMaker는 Bayesian 최적화를 기반으로 메타 ML 모델을 훈련하여 훈련 작업에 대한 하이퍼 파라미터 조합을 추론합니다.  hyperparameter_ranges(다음 코드) 경험을 바탕으로 선택되었습니다. 교육 시간과 비용을 절약하기 위해 너무 넓은 하이퍼 파라미터 범위를 피합니다. 그러나 하이퍼 파라미터가 최적화 후 초기 범위의 하한 또는 상한에 도달하여 범위가 충분하지 않음을 나타내는 경우 해당 하이퍼 파라미터에 대해 지정된 더 넓은 범위로 모델을 다시 조정해야 합니다.

 

다음 샘플 코드 snippet은 HyperparameterTuner클래스를 사용하여 사전 정의된 목표에 대해 하이퍼 파라미터를 최적화하는 방법을 보여줍니다.

from sagemaker.tuner import HyperparameterTuner

from sagemaker.tuner import IntegerParameter, CategoricalParameter, ContinuousParameter

 

hyperparameter_ranges = {‘learning_rate’: ContinuousParameter(0.05,0.25),

                         ‘depth’: IntegerParameter(3,5),

                         ‘imbalance_penalty’: IntegerParameter(1,4)

                        }

 

objective_metric_name = ‘ModelScore’

objective_type = ‘Maximize’

#’ModelScore’ metric used below is being logged from catboost_training.py

metric_definitions = [{‘Name’: ‘ModelScore’,

                       ‘Regex’: ‘ModelScore: ([0-9\\.]+)’}]

 

tuner = HyperparameterTuner(estimator=model,

                            objective_metric_name=objective_metric_name,

                            hyperparameter_ranges=hyperparameter_ranges,

                            metric_definitions=metric_definitions,

                            max_jobs=64,

                            max_parallel_jobs=8,

                            objective_type=objective_type,

                            strategy= “Bayesian”)

                           

tuner.fit({‘train’:train_data_s3_location, ‘test’: test_data_s3_location}, logs=True)

 

print (tuner.best_estimator().hyperparameters())

 

boto3.client(‘sagemaker’).describe_hyper_parameter_tuning_job(

    HyperParameterTuningJobName=tuner.latest_tuning_job.job_name)

   

print (‘Best training job: {}’.format(tuner.best_training_job()))

 

 

배치 예측 생성

최적의 모델이 학습된 후 온라인 또는 배치로 예측을 생성할 수 있습니다. Edelweiss는 배치 모드에서 예측이 필요했습니다. 이를 위해 SageMaker 의 배치 변환 기능을 사용했습니다.

다음 코드 조각 transformer은 조정된 모델을 나타내는 SageMaker 추정기 객체의 함수를 사용하여 배치 예측을 실행하는 방법을 보여줍니다.

# S3 location for the batch prediction output

transform_output_folder = “batch-transform-output”

output_path=”s3://{}/{}”.format(bucket, transform_output_folder)

 

# Get the batch transformer for the trained model (estimator)

transformer = model.transformer(instance_count=1,

                               instance_type=’ml.m4.xlarge’,

                               output_path=output_path,

                               max_payload = 100,

                               strategy=’MultiRecord’,

                               accept=’text/csv’)

test_data = sess.upload_data(path=”test.csv”, bucket=bucket)

 

# Run batch transformation (prediction)

# Predictions will be available at output_path

transformer.transform(test_data, content_type=’text/csv’, split_type=’Line’)

transformer.wait()

 

 

성향 모델 결과

정밀도, 재현율 및 F1을 모델 메트릭으로 사용했습니다. Edelweiss의 경우 비즈니스 관점에서 더 많은 교차 판매 잠재 고객을 찾는 것이 각 잠재 고객 분류로 올바른 것보다 더 중요했기 때문에 모델을 조정하여 더 높은 리콜을 달성했습니다. 이는 검증에서 실제 교차 판매 사례의 몇 퍼센트를 나타냅니다. 세트가 모델별로 올바르게 분류되었습니다.  F1 점수의 곱으로 파생된 객관적 메트릭(ModelScore )을 만들고 이를 조정하여 재현하고 최대화함으로써 달성했습니다. 정밀도에 대한 원하는 상대적 재현 우선 순위가 미리 알려지면 Fbeta 점수와 같은 F1 점수의 변형도 객관적인 메트릭으로 간주될 수 있습니다.

 

교차 판매 잠재 고객이 분류된 후에는 각각의 성향 점수에 따라 우선 순위가 지정되고 정렬됩니다. 기능 엔지니어링 및 초 매개 변수 조정을 몇 번 반복한 후 허용 가능한 성능 메트릭을 달성했습니다(정밀도 40 % 이상으로 80 % 이상 재현).

 

교차 판매 잠재 고객을 분류 한 후 순위를 매기고 우선 순위 세그먼트로 그룹화해야 합니다. 우리는 성향 점수(확률)를 기준으로 10 분위 그룹으로 구성하고 예측의 품질을 이해하기 위해 각 10 분위의 리프트를 계산했습니다. 이 정보를 활용하면 각 교차 판매 잠재 고객에게 연락 할 십 분위수와 순서를 결정할 수 있습니다.

 

모델 평가 및 선택 측면에서 모델의 장점은 가능한 한 많은 실제 교차 판매 고객을 1, 2 및 3으로 분류 할 수 있는 능력으로 측정되었습니다. 다음 십분 위 표에서 알 수 있듯이, 첫 번째 십 분위수는 높은 확률 대역으로 교차 판매 사례의 58 %를 포착합니다. 두 번째 및 세 번째 십분 위에는 각각 80 % 및 88 % 사례가 포함됩니다.

 

십 분위수 최소 확률 최대 확률 교차 판매 분수 누적 교차 판매 비율 승강기
1 0.89 1.0 0.78 0.58 5.75
2 0.67 0.89 0.30 0.80 3.98
0.51 0.67 0.10 0.88 2.92
4 0.41 0.51 0.07 0.93 2.31
5 0.32 0.41 0.03 0.97 1.91

 

이 평가 전략은 여러 반복을 통해 경험적으로 모델에 대해 허용 가능한 정밀도 및 재현율 수준을 결정하는 데 도움을 주었습니다. 또한 십 분위수 수준 교차 판매 커버리지 통계는 모델의 성능을 지속적으로 모니터링하는 데 도움이 됩니다. 상위 십분 위의 범위가 많을수록 좋습니다.

 

추천 모델 구축

정책 추천 엔진은 SVD를 사용하여 개발되었습니다. SVD는 고객(U)을 다양한 정책 유형 (V)과 연결하는 잠재 개념을 식별하려는 잘 확립된 매트릭스 분해 메커니즘입니다. 잠재 개념은 고객이 일반적으로 보험 정책에서 찾는 기능(예: 보호, 수율 및 총 수익)을 나타낼 수 있습니다. 추천 모델은 각 교차 판매 잠재 고객에 대해 상위 3 가지 정책 권장 사항을 제공하도록 설계되었습니다. 요인 수, 시대, 학습률 및 정규화 조건과 같은 모델의 주요 하이퍼 파라미터는 프로덕션에 배포하기 전에 조정되었습니다.

 

또한 Apriori 및 FP-Growth와 같은 빈번한 패턴 추출 알고리즘을 사용하여 트랜잭션 데이터를 마이닝하는 임시 기능을 구축하여 인기있는 제품 모음, 즉 고객이 일정 기간 동안 구매하는 경향이있는 보험 정책 조합을 이해합니다. . 우리는 이러한 통찰력을 사용하여 정책 권장 사항을 검증하고 필터링 할 수 있으며, 우리 제품과 소비자의 선호도 및 구매 패턴 간의 상호 관계를 더 잘 이해할 수 있습니다.

 

결합

초기 분석에서 고객이 두 가지 다른 프로필에 속한다는 것이 밝혀졌습니다.

  • 고객은 중개 에이전트를 통해 오랜 시간을 거슬러 올라갑니다. 이러한 에이전트 중 상당수는 더 이상 기업에 적극적으로 관여하지 않았습니다.
  • 중개자 또는 외부 기관이 관여하지 않은 직접 보험 구매자. 이러한 고객의 대부분은 비교적 최근에 인수되었으며 쉽게 접근 할 수 있었습니다.

 

이 두 세트는 많은 중요한 속성에서 통계적으로 유의미한 차이를 보였습니다. 따라서 우리는 이들을 개별적으로 처리하고 두 개의 개별 ML 파이프 라인을 구축하기로 결정했습니다.

 

다음 다이어그램은 두 ML 파이프 라인 각각의 주요 단계를 보여줍니다.

 

파이프 라인에는 다음 구성 요소가 포함됩니다.

  • 고객 데이터, 조직 데이터, 제품 데이터, 상호 작용 및 기타 정보로 구성된 입력 데이터
  • 모델 구현에 사용되기 전에 기능 생성
  • 잠재 고객의 우선 순위를 지정하는 데 사용할 수 있는 잠재 고객 십 분위수를 생성하는 교차 판매 성향 모델
  • 십 분위수 계산을 통한 교차 판매 잠재 고객 우선 순위 지정
  • 주어진 잠재 고객에게 가장 적합한 세 가지 정책을 생성하는 교차 판매 추천 모델

 

글을 마치며

머신 러닝 기반 교차 판매 프로세스를 통해 이제 더 광범위한 데이터 기반 관점에서 교차 판매 권장 사항을 추진할 수 있습니다. 우리는 고객층 중에서 크로스 셀 제품에 가장 관심이 있는 고객과 그들의 요구에 가장 적합한 정책을 식별 할 수 있습니다. 이렇게 하면 전환율이 향상되고 원치 않는 판매 연결이 줄어 듭니다.

 

주요 구성 요소 구성, 기능 중요도 메트릭 및 인기있는 제품 번들 분석과 같은 중간 분석 결과 중 일부는 다양한 인구 통계, 조직 및 정책 제공 관점에서 고객의 요구 사항과 주요 교차 판매 영향 요인에 대한 추가 통찰력을 얻는 데 도움이 되었습니다.

 

노트북, 관리 형 교육, 배치 변환 및 자동 모델 튜닝과 같은 여러 SageMaker 기능은 모델 개발, 추론 및 유지 관리 작업 흐름을 표준화하고 가속화하는 데 중요한 역할을 했습니다.

 

교차 판매 모델을 통해 우리는 이전 회계 연도에 비해 교차 판매율을 200 % 높일 수 있었으며 높은 성향 세그먼트에서 75 %의 전환율을 기록했습니다. 이제 SageMaker에서 ML 워크로드를 표준화 했으므로 고객을 위한 최고의 경험을 지속적으로 생성할 수 있기를 기대합니다. 제품 및 프로세스에서 ML 사용을 가속화하는 데 도움이 필요하면 ML Solutions Lab 프로그램에 문의해 주시기 바랍니다.

원문URL: https://aws.amazon.com/ko/blogs/machine-learning/edelweiss-improves-cross-sell-using-machine-learning-on-amazon-sagemaker/

 

메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.