AI 广告投放系统搭建
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read314 words

AI 广告投放系统搭建

从手动调整到 AI 全自动——构建一套端到端的智能广告投放系统,让机器学习做出比人更快更准的出价和创意决策。

AI 投放系统架构

graph TB A[数据采集层] --> B[特征工程] B --> C[模型训练] C --> D{决策引擎} D --> E[自动出价] D --> F[受众选择] D --> G[创意推荐] E --> H[投放执行] F --> H G --> H H --> I[效果监控] I --> A style D fill:#fff9c4,stroke:#f9a825,stroke-width:2px style I fill:#c8e6c9,stroke:#43a047,stroke-width:2px

预测模型框架

from dataclasses import dataclass, field
from enum import Enum
class ModelType(Enum):
CTR_PREDICTION = "ctr"
CVR_PREDICTION = "cvr"
LTV_PREDICTION = "ltv"
BUDGET_ALLOCATION = "budget"
@dataclass
class Feature:
name: str
value: float
category: str   # user / ad / context
@dataclass
class PredictionResult:
model_type: ModelType
score: float
confidence: float
features_used: int
class AdPredictionPipeline:
"""广告预测管道"""
# 特征重要性排序(基于通用经验)
FEATURE_IMPORTANCE = {
"ctr": [
("历史 CTR", "user", 0.25),
("广告位置", "context", 0.20),
("创意类型", "ad", 0.15),
("时间段", "context", 0.15),
("设备类型", "user", 0.10),
("出价金额", "ad", 0.10),
("落地页速度", "ad", 0.05),
],
"cvr": [
("商品评分", "ad", 0.25),
("价格竞争力", "ad", 0.20),
("用户购买历史", "user", 0.20),
("落地页体验", "ad", 0.15),
("促销力度", "context", 0.10),
("库存状态", "ad", 0.10),
],
}
def get_features(self, model_type: str) -> list[tuple]:
return self.FEATURE_IMPORTANCE.get(model_type, [])
def simulate_prediction(
self, model_type: ModelType, features: list[Feature]
) -> PredictionResult:
"""模拟预测(实际使用真实模型)"""
# 简化:基于特征数量和均值给出分数
if not features:
return PredictionResult(model_type, 0.0, 0.0, 0)
avg_value = sum(f.value for f in features) / len(features)
score = min(1.0, max(0.0, avg_value))
confidence = min(1.0, len(features) / 10)
return PredictionResult(
model_type=model_type,
score=round(score, 4),
confidence=round(confidence, 2),
features_used=len(features),
)
@dataclass
class AutoBidDecision:
"""自动出价决策"""
base_bid: float
predicted_ctr: float
predicted_cvr: float
adjusted_bid: float
reason: str
@property
def expected_cpa(self) -> float:
ecpm = self.adjusted_bid
if self.predicted_ctr > 0 and self.predicted_cvr > 0:
return ecpm / (self.predicted_ctr * self.predicted_cvr * 1000)
return 0
class SmartBidder:
"""基于预测的智能出价"""
def __init__(self, target_cpa: float = 50.0):
self.target_cpa = target_cpa
def decide(
self,
base_bid: float,
predicted_ctr: float,
predicted_cvr: float,
) -> AutoBidDecision:
# 理想 CPM = CPA × CTR × CVR × 1000
ideal_bid = self.target_cpa * predicted_ctr * predicted_cvr * 1000
# 限制在 base_bid ±50% 范围
adjusted = max(base_bid * 0.5, min(base_bid * 1.5, ideal_bid))
if adjusted > base_bid:
reason = "高转化概率,上调出价"
elif adjusted < base_bid:
reason = "低转化概率,下调出价"
else:
reason = "维持基准出价"
return AutoBidDecision(
base_bid=base_bid,
predicted_ctr=predicted_ctr,
predicted_cvr=predicted_cvr,
adjusted_bid=round(adjusted, 2),
reason=reason,
)
# 使用示例
bidder = SmartBidder(target_cpa=40.0)
decision = bidder.decide(
base_bid=8.0,
predicted_ctr=0.025,
predicted_cvr=0.04,
)
print(f"基准出价: ¥{decision.base_bid}")
print(f"调整出价: ¥{decision.adjusted_bid}")
print(f"预估CPA: ¥{decision.expected_cpa:.2f}")
print(f"决策: {decision.reason}")

AI 广告能力矩阵

能力 算法 数据需求 提升幅度 成熟度
CTR 预测 GBDT/DeepFM 10 万+ 展示 CTR +15-30% 成熟
CVR 预测 Wide&Deep 1 万+ 转化 CVR +10-25% 成熟
自动出价 RL/Bandit 持续投放数据 CPA -20-40% 中等
创意生成 GPT/Diffusion 历史创意素材 效率 +5-10x 早期
受众拓展 Lookalike 种子用户 1000+ 触及 +50-100% 成熟

本章小结

下一章:GDPR 与无 Cookie 方案