쉽게 이해하는 CTR, CVR (2)

Gaebaldaramg·2025년 5월 11일

지난 글에서 배웠던 CTR과 CVR 예측을 더 구체적으로 활용할 수 있는 코드 예시를 같이 공부해봐요. 이를 통해 실전에서 사용할 수 있는 방법을 이해할 수 있을 거예요. 이 코드는 데이터가 어떻게 전처리되고, 모델이 어떻게 훈련되는지, 그리고 예측 결과를 어떻게 활용하는지에 대해 다룹니다.

1. CTR 예측 모델 활용 코드 (광고 클릭 예측)

먼저, 사용자의 특성과 광고 정보 등을 바탕으로 CTR을 예측하는 모델을 훈련하고, 예측된 CTR을 바탕으로 최적의 광고를 선택하는 방법을 구현할 수 있어요.

1.1 CTR 예측 모델 훈련 및 활용:

CTR 예측을 위한 모델을 훈련시키고, 예측된 결과를 기반으로 광고를 선택하는 예시입니다.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score
import numpy as np

# 예시 데이터 불러오기
# user_features, ad_features, click_label (클릭 여부: 0 or 1)
data = pd.read_csv('click_data.csv')  

# 피처와 레이블 분리
X = data[['user_feature1', 'user_feature2', 'ad_feature1', 'ad_feature2']]  # 피처
y = data['click_label']  # 클릭 여부 (0 또는 1)

# 데이터 나누기
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 훈련 (클릭 예측)
model_ctr = RandomForestClassifier(n_estimators=100, random_state=42)
model_ctr.fit(X_train, y_train)

# 예측
y_pred_ctr = model_ctr.predict(X_test)

# AUC로 성능 평가 (CTR 예측)
auc_score = roc_auc_score(y_test, y_pred_ctr)
print(f'CTR 예측 AUC: {auc_score:.2f}')

# 예측된 CTR을 바탕으로 최적의 광고 선택
# 예측값을 기준으로 클릭 확률이 높은 광고 순으로 정렬
X_test['predicted_ctr'] = y_pred_ctr
sorted_ads = X_test.sort_values(by='predicted_ctr', ascending=False)

# 상위 5개의 광고 선택
top_5_ads = sorted_ads.head(5)
print(top_5_ads[['predicted_ctr', 'ad_feature1', 'ad_feature2']])
  • CTR 예측 모델: 사용자의 특성과 광고 정보를 바탕으로 광고 클릭 여부를 예측합니다.
  • AUC 평가: AUC(Area Under the Curve)는 모델의 성능을 평가하는 지표로, 1에 가까울수록 좋은 성능을 의미합니다.
  • 광고 선택: 예측된 CTR을 기준으로 클릭 확률이 높은 광고를 선택하여 상위 광고 5개를 출력합니다.

2. CVR 예측 모델 활용 코드 (구매 예측)

CTR 모델을 바탕으로 광고를 클릭한 사용자들 중 실제로 구매하는 사람들을 예측하는 CVR 모델을 활용하는 방법을 보여줄 수 있어요.

2.1 CVR 예측 모델 훈련 및 활용:

CTR을 먼저 예측한 후, 클릭한 사람들 중에서 구매 여부를 예측하는 모델을 훈련하는 코드입니다.

# 클릭한 사람들만 필터링 (CTR이 1인 데이터만 사용)
clicked_data = data[data['click_label'] == 1]
X_clicked = clicked_data[['user_feature1', 'user_feature2', 'ad_feature1', 'ad_feature2']]
y_clicked = clicked_data['purchase_label']  # 구매 여부 (0 또는 1)

# 데이터 나누기
X_train_clicked, X_test_clicked, y_train_clicked, y_test_clicked = train_test_split(X_clicked, y_clicked, test_size=0.2, random_state=42)

# 모델 훈련 (구매 예측)
model_cvr = RandomForestClassifier(n_estimators=100, random_state=42)
model_cvr.fit(X_train_clicked, y_train_clicked)

# 예측
y_pred_cvr = model_cvr.predict(X_test_clicked)

# AUC로 성능 평가 (CVR 예측)
auc_score_cvr = roc_auc_score(y_test_clicked, y_pred_cvr)
print(f'CVR 예측 AUC: {auc_score_cvr:.2f}')

# 예측된 CVR을 바탕으로 실제 구매 가능성이 높은 사람들 선택
X_test_clicked['predicted_cvr'] = y_pred_cvr
sorted_conversions = X_test_clicked.sort_values(by='predicted_cvr', ascending=False)

# 상위 5명의 사용자 예측
top_5_conversions = sorted_conversions.head(5)
print(top_5_conversions[['predicted_cvr', 'user_feature1', 'user_feature2']])
  • CVR 예측 모델: CTR을 클릭한 사용자를 대상으로, 그 중에서 실제로 구매를 할 확률을 예측합니다.
  • AUC 평가: CVR 모델의 성능도 AUC로 평가합니다.
  • 구매 예측: 예측된 CVR을 기반으로 상위 구매 확률이 높은 사용자 5명을 선택합니다.

3. CTR + CVR 결합 활용

CTR을 예측하고, 클릭한 사용자에 대해서 CVR을 예측하는 과정을 결합하여 최종적으로 광고 클릭 및 구매 예측을 할 수 있습니다. 이를 통해 광고 캠페인을 최적화하고, 더 많은 수익을 창출할 수 있어요.

3.1 CTR + CVR 결합 코드 예시:

CTR을 예측하여 클릭한 사람들 중에서 CVR을 예측한 후, 최종적으로 구매가 가능성이 높은 광고와 사용자를 추천하는 방식입니다.

# CTR 예측 (클릭 예측)
y_pred_ctr = model_ctr.predict(X_test)

# 클릭한 사람들만 필터링
clicked_data = X_test[y_pred_ctr == 1]
clicked_labels = y_test[y_pred_ctr == 1]

# CVR 예측 (구매 예측)
y_pred_cvr = model_cvr.predict(clicked_data)

# 구매 예측 결과를 추가
clicked_data['predicted_cvr'] = y_pred_cvr

# 예측된 CVR을 기준으로 구매 가능성이 높은 광고 선택
sorted_click_and_conversion = clicked_data.sort_values(by='predicted_cvr', ascending=False)

# 상위 5개의 광고 및 사용자 선택
top_5_ads_and_users = sorted_click_and_conversion.head(5)
print(top_5_ads_and_users[['predicted_ctr', 'predicted_cvr', 'user_feature1', 'ad_feature1']])

이 코드는 CTR 예측을 통해 클릭된 광고들을 추리고, 그 중에서 CVR 예측을 통해 구매 가능성이 높은 광고와 사용자를 선정해요. 이렇게 CTRCVR을 결합하면, 광고 캠페인에서 클릭뿐만 아니라 구매까지 최적화할 수 있죠.


결론:

  • CTR은 광고를 클릭할 확률을 예측하는 데 사용되고, CVR은 클릭한 사용자들 중 구매나 전환을 예측하는 데 사용돼요.
  • 이를 결합하여 CTR + CVR 모델을 활용하면, 광고 클릭 뿐만 아니라 실제 구매로 이어지는 사용자를 예측할 수 있어 광고 효율을 극대화할 수 있습니다.

위 코드를 기반으로 데이터를 활용해 CTRCVR을 예측하고 이를 광고 최적화에 활용하는 방법을 구현할 수 있을거에요! 다들 화이팅!! 🌟

profile
개발다람g

0개의 댓글