주요 KPI와 설명
| 지표 | 설명 | 계산식 |
| ROI | 투자 대비 수익 (Return on Investment) | (Revenue - Cost) / Cost |
| ROAS | 광고비 대비 매출 (Return on Ad Spend) | Revenue / Cost |
| CTR | 클릭률 (Click-Through Rate) | (Clicks / Impressions) * 100 |
| CVR | 전환율 (Conversion Rate) | (Conversions / Clicks) * 100 |
| CPA | 전환당 비용 (Cost Per Acquisition) | Cost / Conversions |
| CPC | 클릭당 비용 (Cost Per Click) | Cost / Clicks |
| CPI | 노출당 비용 (Cost Per Impression) | Cost / Impressions |
| Engagement Rate | 참여율 | (Engagements / Impressions) * 100 |
| Revenue Per Click (RPC) | 클릭당 발생 매출 | Revenue / Clicks |
import pandas as pd
import numpy as np
# 데이터 로드
data = pd.read_csv('marketing_data_2016_2024.csv')
# 결측치 처리 (필요시)
data.fillna(0, inplace=True)
# 주요 KPI 계산
data['ROI'] = (data['Revenue'] - data['Cost']) / data['Cost']
data['ROAS'] = data['Revenue'] / data['Cost']
data['CTR'] = (data['Clicks'] / data['Impressions']) * 100
# CTR은 Clicks가 0인 경우 정상적으로 계산되어 0%가 됩니다.
# 클릭이 0일 경우 CVR 및 RPC 계산 방지
data['CVR'] = np.where(data['Clicks'] > 0, (data['Conversions'] / data['Clicks']) * 100, 0)
data['RPC'] = np.where(data['Clicks'] > 0, data['Revenue'] / data['Clicks'], 0)
# 클릭이 0일 경우 CPC 계산 방지
data['CPC'] = np.where(data['Clicks'] > 0, data['Cost'] / data['Clicks'], 0)
# 노출이 0일 경우 CPI 계산 방지
data['CPI'] = np.where(data['Impressions'] > 0, data['Cost'] / data['Impressions'], 0)
# 전환이 0일 경우 CPA 계산 방지
data['CPA'] = np.where(data['Conversions'] > 0, data['Cost'] / data['Conversions'], 0)
# 참여율 (Engagement Rate)
data['Engagement Rate'] = (data['Engagements'] / data['Impressions']) * 100
# KPI 데이터 출력
kpi_columns = ['Campaign Name', 'ROI', 'ROAS', 'CTR', 'CVR', 'CPA', 'CPC', 'CPI', 'Engagement Rate', 'RPC']
kpi_data = data[kpi_columns]
# 결과 저장
kpi_data.to_csv('campaign_kpi_analysis.csv', index=False)
# 출력 확인
print(kpi_data.head())
- Impressions는 광고가 화면에 나타난 횟수를 세는 반면, Visibility는 광고가 얼마나 효과적으로 사용자에게 노출되었는지를 측정합니다.
- Impressions는 Visibility를 포함할 수 있지만, Visibility는 광고가 사용자의 화면에서 실제로 얼마나 잘 보였는지에 중점을 둡니다.
| 지표 | 목적 | 이점 |
| ROI (Return on Investment) | 광고 투자 대비 수익을 측정하여 캠페인의 효율성을 평가. | 캠페인별로 투자 대비 수익이 높은 활동을 파악해 광고비 최적화를 지원. |
| ROAS (Return on Ad Spend) | 광고비 대비 매출 성과를 측정하여 광고 전략의 성과를 확인. | 광고비를 어떤 채널, 국가, 캠페인에 배분해야 하는지 데이터 기반 결정을 가능하게 함. |
| CTR (Click-Through Rate) | 노출 대비 클릭 비율을 측정하여 광고 콘텐츠의 매력도를 평가. | 콘텐츠 또는 타겟팅의 효과성을 파악하고 개선 사항 도출 가능. |
| CVR (Conversion Rate) | 클릭 대비 전환 비율을 측정하여 고객 행동 변환 정도를 평가. | 광고의 실질적인 효과(전환 유도 능력)를 파악해 전환율이 낮은 영역을 집중적으로 개선 가능. |
| CPA (Cost Per Acquisition) | 고객 한 명을 전환시키는 데 드는 평균 비용을 측정. | 특정 캠페인의 비용 효율성을 파악하여 자원 낭비를 줄이고 효율적인 광고비 분배 가능. |
| CPC (Cost Per Click) | 클릭당 발생한 비용을 측정하여 클릭 유도 비용을 평가. | 비용이 과도한 캠페인을 조정하거나 클릭 유도 방식을 개선할 기회를 제공. |
| Impressions | 광고가 고객에게 노출된 횟수를 측정하여 도달 범위를 평가. | 타겟팅된 고객군이 광고를 얼마나 많이 접했는지 확인하여 광고의 노출 전략 조정 가능. |
| Visibility | 광고가 도달할 수 있는 총 잠재적인 노출 범위를 측정. | 광고의 타겟 도달 가능성을 확인하고, 광고 효과의 기반 데이터로 활용 가능. |
| Clicks | 광고 클릭 횟수를 측정하여 고객의 관심도를 평가. | 타겟팅 전략 및 콘텐츠의 흥미 유발 능력을 직접적으로 평가 가능. |
| Revenue | 캠페인으로 인해 발생한 총 매출을 측정. | 캠페인이 실제로 매출 증가에 얼마나 기여했는지 파악 가능. |
| Engagement Rate | 광고와 고객 간의 상호작용 정도를 평가 (클릭, 좋아요 등 포함). | 캠페인의 콘텐츠 효과와 고객의 관심 수준을 평가하여 더 나은 콘텐츠 전략 개발 가능. |
Visibility 설명
- 목적: 광고가 노출될 수 있는 전체 잠재 고객 수를 나타내며, 캠페인의 초기 범위 설정과 관련.
- 이점: 노출 가능성을 기반으로 Impressions 및 Clicks와 비교하면, **실제 도달률(노출 대비 실현율)**을 분석할 수 있습니다.
- 활용: Visibility가 높지만 CTR이나 Impressions가 낮은 경우, 콘텐츠 품질 또는 타겟팅 전략 재조정이 필요합니다.
이렇게 Visibility를 추가하면 캠페인의 최초 도달 가능성에서 실제 성과로 이어지는 흐름을 더 구체적으로 이해할 수 있습니다.
Visibility가 높지만 CTR(Click-Through Rate)이나 Impressions가 낮은 경우는 캠페인의 광고 전략과 실행 과정에서 다음과 같은 문제가 있을 수 있습니다.
1. 타겟팅 문제 (Audience Mismatch)
• 상황: 광고가 잘못된 고객 그룹에 노출되고 있음.
예를 들어, 제품에 관심이 없거나 구매 가능성이 낮은 연령대, 지역, 또는 관심사를 가진 그룹을 타겟으로 설정한 경우.
• 결과: Visibility는 높지만, 고객이 광고에 반응하지 않아 Impressions와 CTR이 낮게 나옴.
• 해결책:
• 타겟 연령대, 지역, 관심사를 세분화하고 기존 고객 데이터를 기반으로 더 정밀한 타겟팅 적용.
• A/B 테스트를 통해 어떤 타겟 그룹에서 CTR이 높은지 분석.
2. 광고 소재 문제 (Ad Creatives Issue)
• 상황: 광고 디자인, 문구, 또는 메시지가 매력적이지 않음.
예를 들어, 타겟 고객이 클릭하도록 유도할 만한 강렬한 헤드라인이나 시각적 요소가 부족한 경우.
• 결과: 광고가 노출되더라도 관심을 끌지 못해 Impressions는 낮고, 클릭률(CTR) 역시 저조.
• 해결책:
• 광고 카피와 디자인을 개선하여 메시지 전달력을 높임.
• 강력한 Call-to-Action(CTA)을 추가.
• 기존에 CTR이 높은 광고의 특징을 분석하고 유사한 요소를 반영.
3. 광고 배치 문제 (Ad Placement Issue)
• 상황: 광고가 잘못된 플랫폼이나 위치에 노출되고 있음.
예를 들어, 광고가 사용자가 별로 방문하지 않는 웹사이트나 잘 보이지 않는 배너 위치에 게재된 경우.
• 결과: Visibility는 높지만, 실제로 고객이 광고를 접하지 않아 Impressions와 CTR이 낮음.
• 해결책:
• 플랫폼 및 광고 위치 데이터를 분석하여 가장 높은 Impressions와 CTR을 기록한 채널에 예산을 집중 배치.
• Google Ads나 Facebook Ads 등에서 광고 배치 옵션을 재설정하여 최적화.
4. 광고 피로도 (Ad Fatigue)
• 상황: 동일한 광고가 지나치게 많이 노출되어 타겟 고객이 광고를 무시하거나 싫증을 느낌.
• 결과: Visibility는 높지만 고객의 관심이 감소해 Impressions와 CTR이 떨어짐.
• 해결책:
• 광고 크리에이티브를 자주 업데이트하여 신선함 유지.
• 노출 빈도를 제한하는 Frequency Cap 설정.
| Campaign Name | Target Audience Reach | Impressions | Visibility (%) |
| Campaign A | 100,000 | 80,000 | 80.0 |
| Campaign B | 200,000 | 150,000 | 75.0 |
| Campaign C | 150,000 | 140,000 | 93.33 |
1 Target Audience Reach: 캠페인이 목표로 설정한 잠재적 노출 수(목표 고객 도달 수).
2 Impressions: 캠페인 실행 중 실제로 광고가 노출된 횟수.
• Impressions를 Target Audience Reach로 나누어 잠재 노출 대비 실제 노출 비율을 계산.
• 결과를 퍼센트로 나타내기 위해 100을 곱함.
8 결과 해석:
• Visibility가 100%에 가까울수록 캠페인이 설정한 목표에 근접하게 도달했음을 의미.
• Visibility가 낮다면 광고 전달이 목표 대비 부족했음을 나타냄.
Visibility가 낮은 경우의 원인
• 캠페인 설정이 현실적이지 않아 목표 고객 도달이 과대평가됨.
• 광고가 부적절한 플랫폼 또는 시간대에 실행됨.
• 경쟁사 광고와의 노출 경쟁에서 밀림.
추가 개선
이 코드를 기반으로 Visibility가 낮은 캠페인을 필터링하거나 추가 분석을 통해 개선 가능성을 탐색할 수 있습니다.