- Amazon Redshift ML 및 로지스틱 회귀와 같은 SQL 중심 플랫폼을 사용하여 데이터 웨어하우스에 직접 이탈 및 위험 예측 모델을 학습하고 배포하세요.
- 거래 및 웹 이벤트에서 행동 기반 특징을 추출한 다음, 지도 학습을 위해 명확한 이탈 레이블(예: 90일간 활동 없음)을 정의합니다.
- AUC-ROC, 정밀도, 재현율, F1 점수와 같이 이탈률에 적합한 지표를 사용하여 모델을 평가하고, 하이퍼파라미터 튜닝 및 불균형 처리를 통해 모델을 개선합니다.
- SQL에서 모델 함수를 구현하여 대규모 고객 점수를 매기고, 위험군을 우선순위로 지정하고, 높은 ROI를 제공하는 데이터 기반 고객 유지 활동을 추진합니다.
고객 이탈은 조용히 수익을 앗아가는 요인 중 하나입니다. 제대로 측정하고 적시에 대응하지 않으면 성장이 서서히 저해될 수 있습니다. 다행히 오늘날에는 기존의 머신러닝 기법, 관리형 클라우드 서비스, 그리고 매우 실용적인 비즈니스 지표를 결합하여 데이터 웨어하우스 위에 SQL을 사용하여 강력한 고객 이탈 위험 모델을 직접 구축할 수 있습니다.
이 가이드는 SQL을 사용하여 고객 이탈 위험을 평가하는 전 과정을 안내합니다. 다양한 시나리오를 다룹니다. 아마존 레드시프트 ML과 아마존 세이지메이커를 사용하여 순수 SQL로 모델을 학습시키는 것부터 웹 이벤트를 기반으로 로지스틱 회귀 이탈 예측 모델을 구축하는 것, 나아가 파이썬 기반 워크플로우에서 영감을 받은 하이퍼파라미터 튜닝 및 불균형 데이터(이탈 고객과 비이탈 고객) 처리와 같은 고급 기술까지 살펴봅니다. 목표는 원시 데이터에서 마케팅, 고객 성공 및 재무 팀이 실제로 활용할 수 있는 실행 가능한 위험 점수를 도출하는 방법을 자세히 보여주는 것입니다.
SQL을 활용한 고객 이탈 위험 평가가 비즈니스에 중요한 이유
어떤 고객이 이탈할 가능성이 높은지 예측하는 것은 투자 대비 수익률(ROI)이 가장 높은 활용 사례 중 하나입니다. 응용 머신러닝 및 분석 분야에서. 고객을 잃는 것은 유지하는 것보다 훨씬 더 비용이 많이 들며, 고객 유지율의 작은 개선도 매출과 장기적인 수익성에 상당한 영향을 미칩니다.
SQL은 이 여정에서 핵심적인 역할을 합니다. 대부분의 거래, 행동 및 고객 데이터가 이미 데이터베이스와 클라우드 데이터 웨어하우스에 저장되어 있기 때문입니다. 데이터 저장 시스템 개요 이를 활용하는 방법을 이해하는 데 도움이 됩니다. 팀에서 SQL에서 직접 이탈 예측 모델을 생성, 학습 및 배포할 수 있다면 지속적인 데이터 내보내기, 도구 전환 및 복잡한 엔지니어링 파이프라인을 피할 수 있어 가치 실현 시간을 크게 단축할 수 있습니다.
최신 클라우드 플랫폼은 이제 분석과 머신러닝의 경계를 모호하게 만들고 있습니다.Amazon Redshift ML과 같은 서비스를 사용하면 데이터 분석가와 개발자는 익숙한 SQL 문을 사용하여 머신러닝 모델을 구축, 학습 및 활용할 수 있으며, 동시에 Amazon SageMaker 및 SageMaker Autopilot과 같은 완전 관리형 서비스를 활용할 수 있습니다. 즉, 전담 머신러닝 엔지니어가 되지 않고도 고객 이탈 예측 모델을 구축할 수 있다는 의미입니다.
기술적인 측면 외에도, 고객 이탈 분석은 비즈니스 현실과 긴밀하게 연계되어야 합니다.활성 고객을 어떻게 정의하는지, 어떤 신호가 위험을 나타내는지, 비활성 기간이 얼마나 되어야 중요한지(30일, 60일, 90일 등), 그리고 예측된 위험도를 기반으로 고객 유지 캠페인에 얼마나 투자할 의향이 있는지 등을 다룹니다. 여기서는 은행, 통신, SaaS, 전자상거래 등 매우 다양한 산업에 적용할 수 있는 유연한 기법들을 소개합니다.
Amazon Redshift ML을 사용하여 SQL로 고객 이탈 및 위험 모델 구축하기
Amazon Redshift ML은 데이터가 이미 존재하는 곳에서 머신러닝을 구현하는 방법을 보여주는 훌륭한 사례입니다.이 기능을 사용하면 Amazon Redshift 내에서 SQL 명령을 사용하여 모델을 생성, 학습 및 배포할 수 있으며, Amazon SageMaker가 백그라운드에서 대부분의 작업을 처리합니다.
실제로 Redshift ML은 학습된 모델을 SQL 함수로 제공합니다. 쿼리, 대시보드 및 ETL 작업에서 호출할 수 있는 기능입니다. 이탈 및 위험 분석 사례의 경우, "고위험 고객", "신용 부도 확률" 또는 "이탈 가능성"과 같은 예측값을 표준 보고 및 데이터 파이프라인에 원활하게 통합할 수 있습니다.
Redshift ML은 내부적으로 Amazon SageMaker Autopilot을 사용합니다.오토파일럿은 여러 알고리즘과 하이퍼파라미터를 자동으로 탐색하고, 후보 모델을 학습 및 튜닝하며, 목표와 데이터에 따라 최적의 모델을 선택합니다. 사용자는 모든 과정을 완벽하게 파악하고 제어할 수 있지만, 대부분의 저수준 머신러닝 작업은 생략할 수 있습니다.
결과적으로 익숙한 개발자 경험을 얻게 됩니다.Redshift 테이블 위에 SQL CREATE MODEL 문을 작성하고, 중간 결과물을 저장할 S3 버킷을 지정하면, 학습이 완료된 후 데이터 웨어하우스 전체에서 추론에 사용할 수 있는 SQL 스칼라 함수를 얻게 됩니다.
엔드투엔드 예시: Redshift를 이용한 신용 위험 및 고객 이탈 예측
개념을 확실히 이해하기 위해 재무 위험을 기반으로 한 구체적인 예를 살펴보겠습니다.이 경우 목표 변수는 신용 위험(높음 vs 낮음)이지만, 워크플로는 기존의 고객 이탈 예측과 동일합니다. 즉, 레이블이 지정된 과거 데이터를 사용하여 이진 분류기를 학습시킨 다음, 필요에 따라 신규 또는 기존 고객의 신용도를 평가합니다.
샘플 데이터 세트는 UCI 머신 러닝 저장소에서 가져온 것입니다. 이 데이터셋은 1,001개의 레코드로 구성되어 있으며, 각 레코드는 고객의 금융 프로필 및 금융기관과의 관계와 관련된 14개의 속성을 가진 은행 고객을 설명합니다. 현대적인 기준으로 보면 규모가 작지만, 원시 데이터에서 SQL 모델로 변환하는 과정을 설명하기에는 충분합니다.
이 데이터 세트의 주요 속성(특징)은 인구 통계학적 특성과 재정적 행동을 모두 포함합니다.:
- 기존 검사기존 당좌 계좌의 현황입니다.
- 지속관계 기간 또는 신용 기간(개월 수).
- 크레딧 금액요청한 신용 금액.
- 저금현재 저축액 수준.
- 고용 이후현재 고용 기간.
- 섹스: 고객 성별.
- 지위: 혼인 여부.
- 나이: 고객 연령.
- 주택주거 형태 (자가 소유, 임대 등).
- 기존 크레딧: 기존 학점 수.
- 일: 고용 상태.
- 직종: 직종.
- 부양 가족: 부양가족 수.
- 위험: 목표 변수; 고객이 고위험군으로 간주되는지 여부를 나타냅니다.
목표 변수인 위험도는 이진 변수입니다.따라서 이는 전형적인 이진 분류 문제입니다. '위험 = TRUE'는 고객 이탈 예측 라벨과 유사하다고 생각할 수 있습니다. 즉, 채무 불이행이나 이탈 가능성이 높은 고객을 식별하여 선제적으로 대응하고자 하는 것입니다.
데이터셋의 규모는 작지만, 이러한 설정은 실제 머신러닝 워크플로우를 반영합니다.데이터를 학습 세트와 추론 세트로 분할하고, Redshift에 적절한 스키마를 정의하고, 학습 데이터와 아티팩트를 위한 S3 버킷을 생성하고, S3 및 SageMaker에 대한 액세스 권한이 있는 IAM 역할을 구성해야 합니다. 프로덕션 환경에서는 행 수를 늘리고 더 풍부한 특징 집합을 추가하여 간단히 확장할 수 있습니다.
Redshift 환경 및 데이터 준비
모델 학습을 시작하기 전에 Redshift 클러스터와 권한이 제대로 설정되어 있는지 확인해야 합니다.AWS 관리 콘솔을 통해 클러스터를 생성하거나 네트워크 및 보안 구성을 자동화하는 CloudFormation 템플릿을 사용할 수 있습니다.
콘솔을 통해 프로비저닝할 때는 일반적으로 노드 유형과 개수를 선택합니다. (예를 들어 데모용으로 노드가 두 개인 dc2.large 인스턴스를 생성하고) 데이터베이스 포트, 마스터 사용자 이름 및 암호를 설정한 다음, 학습 및 추론 CSV 파일이 저장된 S3 버킷에 클러스터가 액세스할 수 있도록 IAM 역할을 연결해야 합니다.
코드로 인프라를 관리하는 것을 선호한다면 CloudFormation 템플릿을 사용하여 Redshift 클러스터를 생성할 수 있습니다. 보안 그룹, 서브넷 그룹 및 IAM 역할을 한 번에 모두 포함합니다. 이탈 위험 모델링 관점에서 중요한 것은 클러스터가 지정된 S3 버킷에서 읽고 쓸 수 있다는 점입니다.
클러스터가 실행되면 Redshift 쿼리 편집기로 이동합니다.그다음 데이터베이스에 연결하고 자격 증명을 확인한 후, 학습용 테이블(이전에 레이블이 지정된 고객 데이터)과 추론용 테이블(나중에 모델 성능 테스트에 사용할 레코드) 두 개를 생성하는 것으로 시작합니다.
학습 테이블 스키마는 CSV 구조와 매우 유사합니다.:
- 기존 예금, 저축, 고용 시작일, 성별, 상태, 주택, 직업 및 직업 유형과 같은 속성을 위한 텍스트 열입니다.
- 기간, 대출 금액, 연령, 기존 대출 및 부양 가족에 대한 숫자 열입니다.
- 예측 대상으로 사용되는 부울 값의 '위험' 열입니다.
데이터 로딩은 Redshift COPY 명령어를 통해 처리됩니다.이 명령은 IAM 역할을 사용하여 S3에서 데이터를 가져오고, CSV 형식, 헤더 처리 및 구분 기호를 지정하며, 학습 테이블과 추론 테이블 모두에 데이터를 채웁니다. COPY 작업이 성공적으로 완료되면 편집기에서 객체 트리를 확인하여 테이블과 행 수를 확인할 수 있습니다.
SQL을 사용하여 Redshift 머신러닝 모델 생성 및 학습
데이터가 준비되었으므로 다음 단계는 CREATE MODEL 문을 사용하여 Redshift ML 모델을 학습시키는 것입니다.바로 이 부분에서 SageMaker Autopilot이 내부적으로 작동하여 이진 분류 문제에 대한 여러 후보 알고리즘과 하이퍼파라미터를 테스트합니다.
CREATE MODEL 명령은 관련된 모든 예측 변수 열을 선택합니다. `risk_prediction_training`에서 위험 열을 `TARGET`으로 지정하고, 나중에 데이터 웨어하우스에 대한 추론에 사용될 SQL 함수의 이름을 정의합니다.
두 가지 핵심 설정이 필요합니다: IAM_ROLE 및 S3_BUCKETIAM 역할은 S3 버킷의 목록을 보고 읽을 수 있는 권한을 가져야 하며, S3 버킷은 Redshift와 SageMaker가 학습 데이터 및 모델 아티팩트를 교환하는 데 사용됩니다. 또한 Autopilot이 실험을 수행할 수 있는 시간을 초 단위로 MAX_RUNTIME으로 지정할 수 있습니다.
처음 시작할 때는 신뢰 관계 문제에 부딪히는 것이 흔한 일입니다.SageMaker가 Redshift 클러스터와 연결된 IAM 역할을 수임할 수 없는 경우, CREATE MODEL 명령이 실패합니다. 이 경우, sagemaker.amazonaws.com을 신뢰할 수 있는 서비스 주체로 포함하도록 역할의 신뢰 정책을 조정해야 합니다.
이미 동일한 이름의 모델이 있는 경우 해당 모델은 삭제해도 됩니다. 모델을 다시 생성하기 전에 DROP MODEL을 사용하십시오. 이렇게 하면 환경에 더 이상 사용되지 않는 모델이 쌓이지 않고 모델링 전략을 반복적으로 수정하거나 설정을 조정할 수 있습니다.
Redshift ML 모델의 학습 모니터링 및 검증
학습 시간은 데이터 크기와 실행 시간 제한에 따라 달라집니다.하지만 샘플 신용 위험 데이터 세트의 경우 약 한 시간 정도 소요될 것으로 예상됩니다. 그 시간 동안 모델 이름과 함께 SHOW MODEL 명령을 실행하여 모델 상태 및 메타데이터를 확인할 수 있습니다.
쇼 모델이 핵심 정보를 공개합니다 예를 들어, 학습 상태(TRAINING, READY 등), 선택된 알고리즘, 목표 지표 및 검증 점수 등이 있습니다. 이진 분류의 경우, 중요한 지표 중 하나는 0에서 1 사이의 값을 가지며 정밀도와 재현율의 균형을 나타내는 F1 점수입니다.
모델 상태가 '준비됨'으로 바뀌면 예측 성능 평가를 시작할 수 있습니다. 모델이 학습 과정에서 접한 적이 없는 별도의 추론 데이터셋을 사용합니다. 이는 신규 고객을 실시간으로 평가하는 실제 시나리오를 반영합니다.
가장 먼저 간단하게 확인할 수 있는 방법은 전체 정확도를 계산하는 것입니다.이를 위해 다음과 같은 SQL 쿼리를 실행합니다. 실제 위험 레이블을 추출하고, 모델 함수(예: func_risk_prediction_model)를 호출하여 예측 레이블을 얻고, 정확한 예측과 잘못된 예측을 구분한 다음, 이를 종합하여 정확한 예측 수를 전체 예측 수로 나눈 값을 계산합니다.
단순한 정확도 외에도 추론 집합에 대한 종합적인 위험 분포를 계산할 수 있습니다.예를 들어, 각 위험 범주(높음, 낮음, 불확정)에 할당된 고객 수를 집계하여 모델의 동작 방식을 이해하고 추가 검토 또는 사전 예방적 유지 조치가 필요한 사례 수를 파악할 수 있습니다.
SQL 이탈 모델을 위한 고객 행동 특징 정의
신용 위험에서 실제 고객 이탈로 넘어갈 때도 동일한 머신러닝 원칙이 적용됩니다.고객 행동 및 시간 경과에 따른 변화를 포착하는 레이블이 지정된 과거 데이터와 의미 있는 특징이 필요합니다. 전자상거래 또는 디지털 제품의 경우, 이는 일반적으로 고객별 구매 및 상호 작용 지표를 집계하는 것을 의미합니다.
일반적인 SQL 이탈 예측 모델은 웹 이벤트 또는 트랜잭션 테이블에서 시작합니다.각 행은 타임스탬프, 주문 ID, 제품 가격 및 수량, 사용자 식별자와 같은 필드를 포함하는 구매 또는 상거래 이벤트를 나타냅니다.
이러한 원시 이벤트로부터 강력한 행동 기능을 설계할 수 있습니다. 고객의 이력을 요약한 내용:
- 총 구매액고객별 완료된 구매 총 횟수.
- 총수익해당 고객이 창출한 누적 수익.
- 평균 순서 값평균 장바구니 금액; 총 매출액을 총 구매액으로 나눈 값.
- 고객 생애주기: 첫 구매와 마지막 구매 사이의 일수.
- 마지막 구매 이후 경과 일수최근 구매일로부터 기준일까지의 일수로 측정한 최근성입니다.
- 구매 빈도고객이 구매한 특정 개월 수를 나타내어 구매의 규칙성을 파악합니다.
이러한 특징들은 고객 이탈이 무작위로 발생하는 경우가 드물기 때문에 매우 중요합니다.구매 빈도가 줄어들고, 지출액도 감소하며, 마케팅에 무관심한 고객은 이탈을 예고하는 분명한 신호를 보내는 경우가 많습니다. SQL에서 구매 빈도, 최근 구매, 구매 금액(RFM의 고전적인 3요소)을 파악하는 것이 일반적으로 첫 번째 단계입니다.
이 모든 것의 근간에는 신뢰할 수 있는 고객 식별 시스템이 있습니다.많은 디지털 분석 환경에서 experience Cloud ID(ECID) 또는 identityMap.id와 같은 필드에 저장된 유사한 ID를 통해 세션과 기기에 걸쳐 발생한 이벤트를 하나의 고객 기록으로 통합할 수 있습니다.
웹 기반 고객 이탈 모델링을 위한 데이터 요구 사항 및 가정
웹 이벤트를 기반으로 고객 이탈 예측 모델을 직접 학습시키려면 데이터 세트가 특정 최소 요구 사항을 충족해야 합니다.각 행은 고객 수준의 특징으로 집계될 수 있도록 충분한 세부 정보를 포함하는 거래 또는 구매 이벤트를 나타내야 합니다.
일반적으로 필수 입력 항목은 다음과 같습니다.:
- identityMap.id안정적인 세션 간 고객 식별자입니다.
- 제품 목록 항목.가격 합계: 거래당 품목별 총 비용.
- 제품 목록 항목.수량: 총 품목 수량.
- 따라서 오른쪽 하단에이벤트 날짜 및 시간은 DATEDIFF와 같은 날짜/시간 함수와 호환되는 형식(예: YYYY-MM-DD HH:MM:SS)입니다.
- 상거래.주문.구매ID구매가 완료되었음을 확인하는 null이 아닌 값입니다.
역사적 깊이가 중요하다일시적인 비활성 상태와 실제 이탈을 구분하려면, 특히 구매 간격이 긴 업종(여행, 보험, B2B 계약 등)에서는 고객별 여러 구매 주기를 확인할 수 있을 만큼 충분한 데이터가 필요합니다.
이 모델은 또한 고객 이탈에 대한 명확하고 실질적인 정의에 의존합니다.전자상거래에서 흔히 사용되는 실용적인 규칙은 기준일을 기준으로 지난 90일 동안 구매 내역이 없는 고객을 이탈 고객으로 간주하는 것입니다. 이 기준 기간은 일반적인 구매 주기에 따라 30일, 60일, 180일 등으로 조정할 수 있습니다.
데이터 세트의 구조가 완성되고 가정이 명확해지면 SQL을 사용하여 레이블을 생성할 수 있습니다. (이탈 고객 vs. 비이탈 고객)은 마지막 구매 후 경과 일수를 설정한 임계값과 비교하여 구분하고, 이를 바탕으로 로지스틱 회귀 또는 다른 분류 알고리즘에 입력할 학습 테이블을 생성합니다.
SQL을 사용하여 로지스틱 회귀 기반 고객 이탈 예측 모델 구축하기
SQL을 이용한 고객 이탈 예측에는 로지스틱 회귀 분석이 매우 적합합니다. 0에서 1 사이의 확률을 출력하고 최신 분석 데이터베이스 및 고객 데이터 플랫폼에서 기본적으로 또는 머신러닝 확장 기능을 통해 지원되는 경우가 많기 때문입니다.
모델링 과정은 일반적으로 세 단계로 진행됩니다.특징 엔지니어링, 레이블 할당 및 모델 학습.
먼저 웹 이벤트를 고객별 행으로 집계합니다. 총 구매 건수, 총 매출, 평균 주문 금액, 고객 생애 주기, 마지막 구매 이후 경과 일수 및 구매 빈도를 계산합니다. 이는 GROUP BY 절과 윈도우 함수를 사용하여 단일 SQL 문으로 수행하거나 중간 테이블을 사용하여 단계적으로 수행할 수 있습니다.
둘째, 비활성 규칙을 기반으로 이탈 라벨을 생성합니다.예를 들어, 마지막 구매 후 경과 일수가 90일보다 크면 이탈률(churned)은 1이고, 그렇지 않으면 0입니다. 이렇게 레이블이 지정된 데이터 세트는 로지스틱 회귀 학습 루틴의 입력으로 사용되며, 이 루틴은 SQL의 CREATE MODEL 문이나 공급업체별 함수를 통해 호출할 수 있습니다.
세 번째로, 어떤 열을 특징으로 사용할지 지정하여 로지스틱 회귀 모델을 학습시킵니다. 그리고 어떤 열이 목표 레이블(이탈)인지 지정합니다. 머신러닝 엔진은 각 특징이 이탈 위험에 어떻게 기여하는지를 반영하는 계수를 학습하는데, 이는 비즈니스 이해관계자에게 매우 유용한 정보를 제공할 수 있습니다.
모델 출력은 일반적으로 고객별로 한 행씩 있는 테이블 또는 뷰 형식입니다.여기에는 엔지니어링된 특징과 이탈 레이블이 포함됩니다. 나중에 모델을 사용하여 예측할 때 예측 레이블(0 또는 1) 또는 이탈 확률을 나타내는 추가 예측 열이 표시됩니다.
고객 이탈 예측 모델 평가: 실제로 중요한 지표
고객 이탈 예측 모델을 학습시키는 것은 절반의 성공일 뿐이며, 모델의 성능을 철저하게 평가해야 합니다. 실제 운영 환경에 배포하기 전에 SQL 기반 머신러닝 프레임워크는 종종 model_evaluate 함수와 같은 일반적인 지표를 계산하는 평가 도우미 기능을 제공합니다.
고객 이탈률을 분석할 때는 단순히 정확도만 보는 것 이상의 요소들을 고려하는 것이 중요합니다.정확도는 단순히 올바른 예측의 비율을 측정하는 것이지만, 불균형적인 문제(대부분의 고객이 이탈하지 않는 경우)에서는 모델이 "정확"하더라도 비즈니스에 거의 쓸모가 없을 수 있습니다.
고객 이탈 예측을 위한 주요 지표는 다음과 같습니다.:
- AUC-ROC: 모든 분류 임계값에서 이탈 고객과 비이탈 고객을 구분하는 모델의 능력을 측정합니다. 1에 가까운 값일수록 판별력이 강함을 나타냅니다.
- 정밀성이탈 예측 고객 중 실제 이탈 고객의 비율; 높은 정확도는 오경보 감소와 고객 유지 비용의 효율성 향상을 의미합니다.
- 소환: 모델이 정확하게 식별한 실제 이탈 고객의 비율; 높은 재현율은 위험에 처한 고객을 많이 놓치지 않도록 보장합니다.
- F1 점수정밀도와 재현율의 조화평균으로, 많은 이탈 고객을 포착하는 것과 오탐을 최소화하는 것 사이의 균형을 맞출 때 유용합니다.
실제 고객 이탈 예측 프로젝트에서 비즈니스 이해관계자들은 긍정적인 결과에 대한 정확도와 재현율에 더 큰 관심을 갖는 경우가 많습니다. (이탈 예상 고객 수) 예측 정확도가 전반적인 정확도보다 더 중요합니다. 결국 목표는 단일 평균 지표에서 좋은 결과를 내는 것이 아니라, 고객 유지를 위한 맞춤형 제안을 효율적으로 제공하는 것이기 때문입니다.
SQL 기반 평가는 일반적으로 홀드아웃 테스트 세트를 대상으로 수행됩니다. 학습에 사용되지 않은 데이터셋입니다. 이 데이터셋을 model_evaluate 함수 또는 이와 유사한 함수에 전달하여 AUC-ROC, 정확도, 정밀도 및 재현율을 얻은 다음, 이러한 결과를 기반으로 특징 엔지니어링, 임계값 또는 알고리즘을 반복적으로 조정합니다.
파이썬에서 영감을 받은 기법을 활용한 고객 이탈 예측 모델 개선
고객 이탈 모델링에 대한 많은 모범 사례는 더 광범위한 머신러닝 생태계에서 비롯됩니다.파이썬과 scikit-learn, imbalanced-learn 등의 라이브러리가 널리 사용되는 분야입니다. 하지만 이러한 개념은 SQL 중심 워크플로우나 SQL이 특징 생성을 담당하고 파이썬이 고급 모델링을 담당하는 하이브리드 환경에도 적용할 수 있습니다.
일반적인 패턴은 공개 데이터셋을 사용하여 고객 이탈을 분석하는 것부터 시작하는 것입니다. 예를 들어 Kaggle에서 제공하는 은행 고객 이탈 CSV 파일과 같은 데이터 세트가 있습니다. 이러한 데이터 세트에는 일반적으로 인구 통계 정보(나이, 국가, 성별), 계좌 유지 기간, 상품 수, 신용 점수 및 고객 이탈 여부가 포함됩니다.
일반적인 워크플로는 데이터셋을 불러오고 검사하는 것으로 시작됩니다.행과 열의 개수를 확인하고, 수치적 특징을 요약하고, 목표 분포를 탐색하고, 고객 성이나 불투명한 ID와 같이 예측에 도움이 되지 않는 명백히 관련 없는 속성을 식별합니다.
시각적 탐색은 특히 도움이 됩니다.이직률 여부에 따라 연령이나 근속기간과 같은 연속 변수의 분포와 박스플롯을 그리면 어떤 특징이 설명력을 갖는지 빠르게 파악할 수 있습니다. 성별이나 국가와 같은 범주형 변수의 히스토그램은 특정 범주가 높은 이직률과 상관관계가 있는지 보여줍니다.
이 탐색 단계에서는 데이터 품질 문제도 살펴봅니다.결측값, 극단적인 이상치, 지배적인 범주 및 의심스러운 패턴. 이러한 모든 요소는 후속 모델 성능에 영향을 미칠 수 있으며, 데이터 정제, 범위 제한 또는 재인코딩이 필요할 수 있습니다.
범주형 변수 또한 중요한 요소입니다.머신러닝 알고리즘은 일반적으로 숫자 입력을 기대하므로 텍스트 범주는 인코딩되어야 합니다. 간단한 순서형 인코더는 범주를 정수로 매핑하는데, 이는 작동할 수 있지만 인위적인 순서(예: 색상 코드에서 6이 의미 있는 방식으로 2보다 크지 않은 경우)를 도입할 수 있습니다. 원핫 인코딩이나 타겟 인코딩과 같은 더 정교한 인코딩은 일반적으로 더 나은 모델을 생성하지만, 더 많은 특징을 필요로 합니다.
최초의 고객 이탈 예측 모델부터 견고한 평가까지
기본적인 데이터 정제 및 인코딩 과정을 거치면 첫 번째 고객 이탈 예측 모델을 학습시킬 수 있습니다.예를 들어, 랜덤 포레스트 분류기는 견고하고 비선형 관계를 잘 처리하며 특징 스케일링을 비교적 적게 필요로 합니다.
그다음 데이터를 훈련 세트와 테스트 세트로 나눕니다. (예: 70% 훈련, 30% 테스트)를 사용하여 미래의 미지의 고객을 시뮬레이션합니다. 모델은 훈련 세트에서 학습되고 정확도, 정밀도, 재현율 및 F1 점수와 같은 지표를 사용하여 테스트 세트에서 평가됩니다.
이 단계에서는 높은 정확도의 수치에 현혹되기 쉽습니다.불균형적인 고객 이탈 문제에서, 모델은 실제 이탈 고객을 거의 예측하지 못하면서도 항상 다수 클래스(비이탈)를 예측함으로써 높은 정확도를 달성할 수 있습니다. 따라서 이탈 클래스에 특화된 정밀도, 재현율, F1 점수가 훨씬 더 중요합니다.
ROC 곡선과 곡선 아래 면적(AUC) 보다 미묘한 관점을 제시하여 모든 임계값에 걸쳐 참양성률과 거짓양성률 간의 상충 관계를 보여줍니다. 대각선 기준선을 명확하게 벗어나는 곡선은 유용한 모델을 나타내지만, 이 또한 비즈니스 비용/편익 상충 관계와 연관시켜 고려해야 합니다.
적절한 평가 지표를 선택하는 것은 비즈니스 결정입니다.고객 유지를 위한 연락 비용이 많이 든다면, 높은 정확도(이탈 가능성이 높은 고객만 대상으로 함)를 선호할 수 있습니다. 반대로 고객 이탈이 막대한 손실로 이어진다면, 오탐(false positive)이 더 많더라도 고객 이탈 가능성 감소(recall)에 집중하여 최대한 많은 이탈 고객을 확보하는 데 주력할 수 있습니다. 이는 더 많은 고객에게 연락해야 한다는 것을 의미할 수도 있습니다.
하이퍼파라미터 튜닝 및 불균형한 이탈 레이블 처리
기본 고객 이탈 예측 모델이 구축되면, 그다음으로 큰 성과는 대개 하이퍼파라미터 튜닝에서 나옵니다.하이퍼파라미터는 학습 과정 외부에 있는 설정 값(트리 개수, 트리 깊이, 학습률 등)으로, 모델 품질에 큰 영향을 미칠 수 있습니다.
실용적인 접근 방식은 하이퍼파라미터 탐색 공간을 정의하는 것입니다. (각 매개변수에 대해 그리드 또는 임의 범위를 설정한 다음) 무작위 검색 또는 베이지안 최적화를 사용하여 조합의 하위 집합을 탐색합니다. 각 후보 구성에 대해 훈련 데이터에 대한 교차 검증을 실행하고 F1 점수와 같은 지표를 사용하여 비교합니다.
고객 이탈률 분석에서는 순수 정확도보다 F1 점수가 더 나은 목표가 될 수 있습니다. 정확도와 재현율의 균형을 잘 맞추기 때문입니다. 위험 고객을 우선시할 때 일반적으로 중요하게 생각하는 부분이 바로 정확도와 재현율입니다.
고객 이탈 모델링의 또 다른 주요 과제는 레이블 불균형입니다.일반적으로 과거 데이터에는 이탈하지 않은 고객이 이탈한 고객보다 훨씬 많습니다. 이러한 차이를 고려하지 않으면 대부분의 알고리즘은 "안전하게" 행동하여 대부분의 경우 다수 집단을 예측하는 방향으로 학습하게 됩니다.
불균형한 고객 이탈 데이터를 처리하는 데에는 여러 가지 전략이 있습니다.:
- 소수 집단의 과표본 추출 SMOTE, ADASYN 또는 SVMSMOTE와 같은 기술을 사용하여 기존 예제 사이를 보간하여 새로운 소수 예제를 합성합니다.
- 다수 계층의 표본 추출 부족 데이터셋의 크기를 줄이면서 클래스 간의 균형을 맞추는 방법(때로는 과표본 추출과 함께 사용됨).
- 클래스 가중치 또는 균형 잡힌 부분집합을 내부적으로 처리하는 알고리즘이나 래퍼를 사용합니다.예를 들어, 클래스 균형을 맞춘 부트스트랩 샘플을 사용하여 각 트리를 학습시키는 균형 랜덤 포레스트와 같은 모델이 있습니다.
경험적으로, 테스트 세트는 변경되지 않고 불균형 상태를 유지하는 것이 매우 중요합니다.실제 생산 분포를 반영합니다. 훈련 세트만 과표집하거나 조작할 수 있습니다. 그렇지 않으면 평가 지표가 지나치게 낙관적이 되어 실제 성능을 제대로 반영하지 못할 수 있습니다.
많은 실험에서, 원시 훈련 데이터를 변경하지 않고 알고리즘 수준의 균형 조정(예: 균형 랜덤 포레스트)을 사용하는 것이 효과적이었습니다. 정확도와 F1 점수에서 상당한 향상을 가져왔으며, 때로는 10%포인트 이상 향상되기도 합니다. 이탈 예측 모델의 경우, 이는 위험 고객을 훨씬 더 효과적으로 타겟팅하고 고객 유지 캠페인의 투자 수익률(ROI)을 높이는 데 도움이 될 수 있습니다.
효과적인 직원 유지율의 1% 향상이라도 엄청난 영향을 미칠 수 있다는 점을 기억하십시오. 반복 수익과 고객 생애 가치에 중점을 둡니다. 이탈 고객을 더 많이 정확하게 감지하는 것이 최종 목표는 아니지만, 이를 통해 가장 중요한 부분에 맞춤형 제안, 서비스 개선 및 개인화된 대응을 제공할 수 있는 기반을 마련할 수 있습니다.
요약하자면, SQL 기반 머신러닝 기능(예: Amazon Redshift ML 및 SQL 기반 로지스틱 회귀)과 탄탄한 머신러닝 실무(특징 엔지니어링, 적절한 지표 설정, 하이퍼파라미터 튜닝 및 불균형 처리)를 결합하면 데이터가 존재하는 곳에서 직접 이탈 위험을 평가할 수 있는 강력한 도구를 얻을 수 있습니다. 금융, 통신, 전자상거래 또는 SaaS 등 어떤 분야에서 사업을 운영하든 이러한 기술을 통해 원시적인 고객 상호작용 기록을 명확한 이탈 위험 점수로 변환하여 마케팅 및 운영 팀이 확신을 가지고 조치를 취할 수 있도록 함으로써 분석과 비즈니스 의사 결정 간의 피드백 루프를 강화할 수 있습니다.
