CPA Anomaly Detection (媒体別CPA異常検知)
媒体・キャンペーン・広告グループ単位でCPAの異常値を統計的に検出し、原因ドリルダウンと対応アクションを提示する異常検知スキル
1. Overview
- Purpose: 統計的手法(z-score)を用いてCPAの急騰・急落を自動検知し、影響範囲の特定と根本原因の推定を行う
- Audience: 広告運用チーム、パフォーマンスマーケティングマネージャー
- Frequency: Daily(日次チェック)/ Ad-hoc(異常検知時の深掘り分析)
- Time to complete: 3-8 minutes(データ量・ドリルダウン深度による)
When to use
日次レポートでCPAの異常変動が検出された場合、またはアラート閾値を超えた際にトリガーする。定常的な日次スキャンとしても利用可能。クリエイティブ疲弊の早期検知、配信アルゴリズム変更の影響把握、LP障害の検出などに活用する。
2. Input Data
Required
| Data Source | Format | Description |
|---|---|---|
| 過去CPAデータ | CSV / TSV | 過去30日間以上の日次CPA実績(媒体・キャンペーン・広告グループ単位) |
| 当日データ | CSV / TSV | 当日のCPA実績(同粒度) |
Optional
| Data Source | Format | Description |
|---|---|---|
| クリエイティブ実績 | CSV | 広告グループ配下のクリエイティブ別成績(疲弊検知用) |
| 入札変更ログ | CSV / JSON | 入札単価・予算の変更履歴(変更起因の判定用) |
| LP変更履歴 | JSON | ランディングページの更新・障害ログ |
| CPA目標値 | JSON / config | 目標CPAの絶対値(相対評価に加えた絶対判定用) |
Data Quality Checks
- 過去データが30日間以上の連続日次データであること
- 欠損日がないこと(欠損がある場合は補間方法を明示)
- conversions = 0 の日はCPA算出不可として除外処理を適用
- 同一キャンペーンIDの重複レコードがないこと
3. Analysis Steps
Step 1: ベースライン算出
過去30日間のCPAデータから、媒体・キャンペーン・広告グループ各レベルで統計量を算出する。
- 平均CPA(μ)
- 標準偏差(σ)
- 中央値、四分位範囲(IQR)
- トレンド成分(線形回帰の傾き)
Step 2: z-scoreによる異常検出
当日のCPAに対してz-scoreを算出し、閾値判定を行う。
z-score = (CPA_today - μ) / σ
- |z| > 2 → Warning(統計的に異常)
- |z| > 3 → Critical(極端な外れ値)
- トレンド補正: 直近7日の傾きを加味した補正z-scoreも算出
Step 3: 根本原因ドリルダウン
異常が検出された場合、以下の階層で原因を特定する。
- 媒体レベル: どの媒体で異常が発生しているか
- キャンペーンレベル: 媒体内のどのキャンペーンが寄与しているか
- 広告グループレベル: キャンペーン内のどの広告グループが原因か
- クリエイティブレベル: CTR/CVRの変化からクリエイティブ疲弊を判定
Step 4: トレンドブレイク検知
移動平均の急変を検知する。
- 3日移動平均 vs 14日移動平均のクロスオーバー
- 前週同曜日との比較(曜日変動の除外)
- 連続上昇/下降日数のカウント
Step 5: アラート生成とアクション提案
検知結果をセヴェリティ別にソートし、具体的な対応策を提示する。
4. Output Format
Summary (top-level)
【CPA異常検知サマリー】
検知日: 2026/04/14
異常検知数: Critical X件 / Warning X件
最大影響: {媒体名} / {キャンペーン名} — CPA ¥XX,XXX(z-score: X.XX)
Detail sections
- アラート一覧テーブル: セヴェリティ / 媒体 / キャンペーン / 広告グループ / CPA / z-score / 推定原因
- ドリルダウン結果: 異常キャンペーンの階層別分析
- クリエイティブ疲弊検知: CTR/CVR推移と疲弊判定
- 推奨アクション: 優先度付きの対応リスト
Visualizations
- アラート一覧テーブル(セヴェリティ色分け)
- CPA推移チャート(過去30日 + 当日、±2σバンド付き)
- ドリルダウンツリー(媒体→キャンペーン→広告グループ)
5. Judgment Criteria
| Metric | Good | Warning | Critical |
|---|---|---|---|
| z-score(CPA) | |z| < 2 | |z| >= 2 | |z| >= 3 |
| CTR変化率(7日平均比) | ±10%以内 | -20%超 | -30%超 |
| CVR変化率(7日平均比) | ±10%以内 | -20%超 | -30%超 |
| 連続CPA上昇日数 | 3日以内 | 4-5日連続 | 6日以上連続 |
| クリエイティブ疲弊 | CTR安定 | CTR 7日連続低下 | CTR 30%以上低下 |
Decision Rules
- z-score > 2 のキャンペーンが検出された場合、Warning としてドリルダウン分析を実施
- z-score > 3 のキャンペーンが検出された場合、Critical として即時対応を促す
- 複数媒体で同時にz-score > 2 の場合、LP障害やタグ不具合の可能性を優先検証
- CTRが7日連続で低下している場合、クリエイティブ疲弊と判定し差し替えを推奨
- CVRのみ急落(CTR正常)の場合、LP側の問題を疑う
- CPA急落(改善方向)の場合も検知し、成功要因の特定を推奨
6. Examples
Sample Input
date,media,campaign,ad_group,impressions,clicks,cost,conversions,cpa
2026-04-14,Google,ブランド_検索,exact_match,12500,890,124000,32,3875
2026-04-14,Google,一般_検索,キーワードA,45000,1200,286000,8,35750
2026-04-14,Yahoo,ディスプレイ,リタゲ_30日,120000,980,156000,3,52000
2026-04-14,Meta,リード獲得,LAL_1%,85000,2100,198000,22,9000
# 過去30日平均(参考)
# Google 一般_検索: μ=18,500, σ=4,200
# Yahoo ディスプレイ リタゲ: μ=22,000, σ=6,500
Sample Output
===== CPA異常検知レポート 2026/04/14 =====
【サマリー】
検知日: 2026/04/14
異常検知数: Critical 1件 / Warning 1件
【アラート一覧】
🔴 Critical | Yahoo > ディスプレイ > リタゲ_30日
CPA: ¥52,000(平均: ¥22,000 / z-score: 4.62)
推定原因: CVR急落(0.31% → 当日0.25%)
推奨: LP表示速度・フォーム動作の確認
🟡 Warning | Google > 一般_検索 > キーワードA
CPA: ¥35,750(平均: ¥18,500 / z-score: 4.11)
推定原因: CTR低下(2.8% → 2.67%)+ CVR低下
推奨: クリエイティブ成績の確認、入札調整の検討
【ドリルダウン: Yahoo ディスプレイ】
キャンペーン全体 CPA: ¥52,000(+136% vs 平均)
└ リタゲ_30日: CPA ¥52,000 — z-score 4.62
├ CTR: 0.82%(平均 0.85% → ほぼ正常)
├ CVR: 0.31%(平均 0.48% → -35.4% ← 主因)
└ 判定: CVRのみ急落 → LP側の問題を優先確認
【対応アクション(優先順)】
1. Yahoo リタゲ: LP表示速度・フォーム動作を即時確認
2. Google 一般検索: クリエイティブ別CTRを確認し低パフォーマンス素材を停止
3. 全媒体: CVタグの発火状況をGTMで確認
7. Do's and Don'ts
Do
- 必ず30日以上のヒストリカルデータでベースラインを算出する
- z-score算出時は conversions = 0 の日を適切に除外する
- 複数媒体同時異常の場合はLP/タグなどの共通要因を優先的に疑う
- CPA改善方向(急落)も検知対象とし、成功要因を記録する
- ドリルダウンは必ず媒体→キャンペーン→広告グループの順で実施する
- 曜日変動を考慮する(前週同曜日との比較を含める)
Don't
- conversions が極小(< 5件/日)のキャンペーンでz-scoreを鵜呑みにしない(サンプルサイズ不足)
- 1日だけの変動で即座に大きな運用変更を推奨しない(2-3日の傾向を確認)
- 全キャンペーンを均等に扱わない(消化額が大きいキャンペーンを優先)
- σ = 0 の場合(過去データが一定値)にz-score算出を行わない(ゼロ除算回避)
- クリエイティブ疲弊とLP障害を混同しない(CTR vs CVR で切り分ける)
8. Agent Guide
When executing this analysis skill:
You are performing CPA Anomaly Detection (媒体別CPA異常検知) analysis.
Key rules:
- Calculate baseline statistics (mean, stddev) from 30+ days of historical CPA data
- Compute z-score for each media/campaign/ad_group: z = (CPA_today - mean) / stddev
- Flag z-score >= 2 as Warning, >= 3 as Critical
- For each anomaly, drill down: media → campaign → ad_group → creative
- Differentiate CTR issues (creative fatigue) from CVR issues (LP/tag problems)
- If multiple media show simultaneous anomalies, prioritize shared root causes (LP, tag, tracking)
- Skip z-score calculation when conversions < 5/day (insufficient sample) or stddev = 0
- Output: summary → alert table (severity-sorted) → drill-down → action recommendations (prioritized)
Refer to the full SKILL.md for thresholds, output format, and detailed steps.