미디어/엔터테인먼트 산업 분석¶
산업 개요¶
미디어/엔터테인먼트 산업은 콘텐츠 소비 패턴의 디지털 전환으로 데이터 기반 의사결정이 필수가 되었다. 추천 알고리즘, 콘텐츠 최적화, 구독자 유지가 핵심 분석 영역이다.
핵심 지표 (KPI)¶
플랫폼/스트리밍¶
| 지표 | 설명 | 벤치마크 |
|---|---|---|
| MAU/DAU | 월간/일간 활성 사용자 | DAU/MAU > 25% (건강) |
| Stickiness | DAU/MAU 비율 | 20-25% (양호) |
| Watch Time | 평균 시청 시간 | 플랫폼별 상이 |
| Completion Rate | 콘텐츠 완료율 | 영화 >80%, 드라마 >60% |
| Churn Rate | 이탈률 | 월 3-5% (목표) |
| ARPU | 사용자당 수익 | $10-15/월 (OTT) |
콘텐츠¶
| 지표 | 설명 | 활용 |
|---|---|---|
| First 24h Views | 24시간 내 조회수 | 초기 성과 예측 |
| Viral Coefficient | 바이럴 계수 | 공유/입소문 효과 |
| Engagement Rate | 좋아요+댓글+공유/조회 | 3-6% (YouTube 양호) |
| Skip Rate | 스킵 비율 | 콘텐츠 품질 지표 |
| Re-watch Rate | 재시청률 | 콘텐츠 가치 |
광고 (Ad-supported)¶
| 지표 | 설명 |
|---|---|
| CPM | 1000회 노출당 비용 |
| Fill Rate | 광고 슬롯 채움률 |
| View-through Rate | 광고 완시청률 |
| Ad Load | 콘텐츠 대비 광고 비율 |
분석 유형¶
1. 콘텐츠 성과 분석¶
목표: 어떤 콘텐츠가 성공하는가?
# 콘텐츠 성과 예측 피처
content_features = {
'meta': ['genre', 'duration', 'language', 'rating', 'release_day'],
'cast': ['lead_actor_popularity', 'director_track_record'],
'marketing': ['trailer_views', 'social_buzz', 'pre_release_search'],
'historical': ['similar_content_performance', 'franchise_history']
}
# 성과 예측 모델
from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor()
model.fit(X_train, y_views)
# 피처 중요도 분석
importance = pd.DataFrame({
'feature': feature_names,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)
인사이트 예시: - 금요일 저녁 출시 콘텐츠가 주말 시청으로 연결 - 시리즈물은 이전 시즌 성과의 80% 예측력 - 15-25분 콘텐츠의 완료율이 가장 높음
2. 추천 시스템 분석¶
Collaborative Filtering 기반:
# 사용자-아이템 행렬
from scipy.sparse import csr_matrix
from implicit.als import AlternatingLeastSquares
# 시청 기록 → 희소 행렬
user_item = csr_matrix((
df['watch_time'],
(df['user_id'], df['content_id'])
))
# ALS 모델
model = AlternatingLeastSquares(factors=64, iterations=15)
model.fit(user_item)
# 추천
recommendations = model.recommend(user_id, user_item[user_id], N=10)
Content-based 보강:
# 콘텐츠 임베딩
from sentence_transformers import SentenceTransformer
encoder = SentenceTransformer('all-MiniLM-L6-v2')
# 장르, 설명, 태그 결합
content_text = df['genre'] + ' ' + df['description'] + ' ' + df['tags']
content_embeddings = encoder.encode(content_text.tolist())
# 유사 콘텐츠 검색
from sklearn.metrics.pairwise import cosine_similarity
similarities = cosine_similarity(content_embeddings)
하이브리드 추천:
def hybrid_recommend(user_id, alpha=0.7):
# Collaborative 점수
cf_scores = collaborative_model.recommend(user_id)
# Content-based 점수 (사용자 선호 기반)
user_history = get_user_history(user_id)
cb_scores = content_similarity(user_history)
# 가중 결합
final_scores = alpha * cf_scores + (1 - alpha) * cb_scores
return final_scores.argsort()[::-1][:10]
3. 구독자 Churn 분석¶
이탈 예측 피처:
churn_features = {
'engagement': [
'days_since_last_watch',
'watch_time_trend', # 최근 4주 트렌드
'content_diversity', # 장르 다양성
'binge_behavior' # 몰아보기 패턴
],
'account': [
'account_age',
'payment_method',
'plan_type',
'price_change_exposure'
],
'platform': [
'device_count',
'download_usage',
'search_frequency'
]
}
예측 모델:
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, precision_recall_curve
# 모델 학습
model = RandomForestClassifier(n_estimators=100, class_weight='balanced')
model.fit(X_train, y_churn)
# 이탈 확률 예측
churn_proba = model.predict_proba(X_test)[:, 1]
# 고위험 사용자 세그먼트
high_risk = users[churn_proba > 0.7]
개입 전략:
| 이탈 확률 | 액션 |
|---|---|
| 0.7+ | 할인 쿠폰, 개인화 추천 |
| 0.5-0.7 | 이메일 캠페인, 새 콘텐츠 알림 |
| 0.3-0.5 | 앱 푸시, 추천 품질 개선 |
| <0.3 | 정기 관리 |
4. A/B 테스트 (UI/추천)¶
일반적인 테스트 영역:
ab_tests = {
'recommendation': {
'A': '협업 필터링 기반',
'B': '하이브리드 추천',
'metric': 'CTR, watch_time, retention'
},
'thumbnail': {
'A': '원본 썸네일',
'B': '개인화 썸네일',
'metric': 'CTR'
},
'autoplay': {
'A': '5초 후 자동 재생',
'B': '10초 후 자동 재생',
'metric': 'session_length, opt_out_rate'
}
}
분석 코드:
from scipy import stats
def ab_test_analysis(control, treatment, metric='ctr'):
# t-검정
t_stat, p_value = stats.ttest_ind(
treatment[metric],
control[metric]
)
# 효과 크기
lift = (treatment[metric].mean() - control[metric].mean()) / \
control[metric].mean() * 100
# 신뢰구간
ci = stats.sem(treatment[metric] - control[metric]) * 1.96
return {
'p_value': p_value,
'lift_pct': lift,
'ci_95': ci,
'significant': p_value < 0.05
}
고급 분석¶
시청 패턴 클러스터링¶
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# 시청 행동 피처
behavior_features = [
'avg_watch_time_per_session',
'sessions_per_week',
'genre_diversity_index',
'peak_hour_preference',
'binge_sessions_ratio',
'mobile_vs_tv_ratio'
]
# 클러스터링
scaler = StandardScaler()
X_scaled = scaler.fit_transform(users[behavior_features])
kmeans = KMeans(n_clusters=5, random_state=42)
users['segment'] = kmeans.fit_predict(X_scaled)
# 세그먼트 프로파일링
segment_profiles = users.groupby('segment')[behavior_features].mean()
세그먼트 예시:
| 세그먼트 | 특징 | 전략 |
|---|---|---|
| Binge Watcher | 주말 몰아보기, 시리즈 선호 | 시리즈 출시 알림 |
| Casual Viewer | 짧은 세션, 다양한 장르 | 짧은 콘텐츠 추천 |
| Premium User | 높은 engagement, 다기기 사용 | 4K/독점 콘텐츠 |
| At-Risk | 감소 추세, 낮은 활동 | 리텐션 캠페인 |
| New User | 탐색 중, 불확실한 선호 | 온보딩 최적화 |
콘텐츠 가치 분석 (LTV 기여)¶
# 콘텐츠별 구독 유지 기여도
def content_ltv_contribution(content_id):
# 해당 콘텐츠 시청자
viewers = get_content_viewers(content_id)
# 시청 후 retention 비교
watched_retention = calculate_retention(viewers, post_watch=True)
baseline_retention = calculate_retention(non_viewers)
# 기여도
contribution = (watched_retention - baseline_retention) * avg_ltv
return contribution
# 콘텐츠 ROI
content_roi = content_ltv_contribution / content_production_cost
시간대별 소비 패턴¶
import pandas as pd
# 시간대-요일 히트맵
watch_heatmap = df.groupby(['day_of_week', 'hour'])['watch_count'].sum()
watch_heatmap = watch_heatmap.unstack()
# 피크 시간 식별
peak_hours = watch_heatmap.idxmax()
# 콘텐츠 스케줄링 최적화
def optimal_release_time(content_type):
target_audience = get_target_audience(content_type)
audience_peak = analyze_peak_hours(target_audience)
return audience_peak
데이터 소스¶
| 데이터 | 활용 |
|---|---|
| 시청 로그 | 행동 분석, 추천 |
| 검색 로그 | 수요 파악, 콘텐츠 기획 |
| 소셜 데이터 | 감성 분석, 바이럴 예측 |
| 결제 데이터 | 매출 분석, LTV |
| 디바이스 데이터 | UX 최적화 |
| 광고 데이터 | 수익화 분석 |
도구 및 플랫폼¶
| 용도 | 도구 |
|---|---|
| 데이터 파이프라인 | Spark, Kafka, Airflow |
| 분석 | BigQuery, Snowflake, Databricks |
| 추천 시스템 | Recbole, Surprise, TensorFlow Recommenders |
| A/B 테스트 | Optimizely, LaunchDarkly, Statsig |
| 시각화 | Looker, Tableau, Amplitude |
참고 자료¶
- "Deep Learning for Recommender Systems" (Zhang et al.)
- Netflix Tech Blog
- Spotify Research Papers
- "Trustworthy Online Controlled Experiments" (Kohavi)
최종 업데이트: 2026-02-18