トラフィックとコンバージョンの予測:判断前の検証

要点

数量の予測と個人の行動傾向スコアは異なる問いに答えます。どちらも、それだけではキャンペーンの因果効果を示しません。

架空の場面:透明な板で隔てた白紙カード入りの二つのトレー、机上のノートとタイマー
この記事の内容

数量の予測と個人の行動傾向スコアは異なる問いに答えます。どちらも、それだけではキャンペーンの因果効果を示しません。

目標、期間、利用可能な情報

予測する量、単位、対象期間、判断の時間軸を定義します。予測を出したはずの時点で利用できる特徴量だけを使います。未来の情報を含めるとデータ漏洩が生じ、評価が不当に良く見える場合があります。

時系列順に検証する

過去で学習し、その後の期間で評価し、時間を進めて繰り返します。実際の結果が判明するまでの遅れも考慮します。変換は学習データだけで適合させ、最終テスト用データはモデル選択から切り離します。

基準と比較し、施策を検証する

前期や季節性を考慮した単純な基準と、同じデータと予測期間で比較します。誤差と不確実性を記録します。過去の好成績は将来を保証しません。施策の効果を測るには、適切に設計した実験など、因果関係を評価する設計が必要です。

出典と確認

予測をリアルタイムデータと比較して検証してください。

評価に過去と未来の期間が混在すると、交通モデルが正確に見えることがあります。時間を考慮した検証では、トレーニングとテストを時系列順に分離し、未知の期間における予測を単純なベースラインと比較できるようにします。

  • 機能を設計する前に、予測期間、単位、および許容誤差を定義してください。
  • モデルを季節ベースラインと比較し、予測時点で入手できない情報を除外してください。
  • リリース後に期間別およびセグメント別の誤差を監視し、文書化された理由に基づいて再トレーニングを行ってください。

一次資料:scikit-learn — TimeSeriesSplit. 関連する方法:実践ガイドを読む.

炭素測定の境界

比較には共通の境界と機能単位が必要です。

  • 構成要素、地域、期間、機能単位を示します。例えば完了した処理一件です。同じサービスを提供する条件で比較します。
  • エネルギー、排出係数、ハードウェアの配分を記録します。測定と推計を区別し、除外を排出ゼロとみなしません。
  • 架空例:(12 + 3) gCO2e / 5件 = 1件あたり3 gCO2e。不確かな仮定を変え、総排出量も比較します。

再現できる受け入れ事例

架空の例です。顧客や実際の観測結果を示すデータではありません。

事例の入力を見る
{
    "functional_unit": "accepted_task",
    "energy_kWh": 2,
    "intensity_gCO2e_per_kWh": 100,
    "embodied_gCO2e": 50,
    "accepted_tasks": 100,
    "SCI_gCO2e_per_task": 2.5
}

期待される判断

(2 × 100 + 50)/100 = 1タスクあたり2.5 gCO2eです。宣言した範囲に限ります。

検証手順

  1. 境界、機能単位、係数を定めます。
  2. 電力、機器由来排出、成果を分けます。
  3. 根拠と暗黙の相殺なしの計算を残します。

Green Software Foundation — Software Carbon Intensity

再生可能エネルギー比率だけでソフトウェアを比較できますか?

いいえ。境界、エネルギー、係数、ハードウェア、機能単位を示します。

一次資料:Green Software Foundation — Software Carbon Intensity. 関連する方法:実践ガイドを読む.

欠損値、ゼロ、推定

観測がないことは測定されたゼロと同じではありません。

  • 未受信の項目、対象外の観測、取得失敗を分けます。有効な測定値としてのゼロは残します。すべての欠測をゼロにすると異なる状態を混同します。
  • 架空例[10、欠測、0]では、観測2件の平均は5です。欠測をゼロに置換して3で割ると、別の問いに答えます。両方の件数を示します。
  • 推定値には補完の印と規則を残します。推定を含む結果と除いた結果を比較します。有効な観測がなければ、平均ゼロでなく結果なしと示します。

再現できる受け入れ事例

架空の例です。顧客や実際の観測結果を示すデータではありません。

事例の入力を見る
{
    "values": [
        10,
        null,
        0
    ],
    "observed_count": 2,
    "mean_observed": 5,
    "mean_if_missing_replaced_with_zero": 3.3333333333,
    "extended_sample": {
        "values": [
            10,
            null,
            0,
            20,
            null,
            30
        ],
        "known_count": 4,
        "expected_count": 6,
        "known_sum": 60,
        "mean_observed": 15,
        "mean_after_zero_fill": 10
    },
    "missing_only_sample": {
        "values": [
            null,
            null
        ],
        "known_count": 0,
        "mean_observed": null
    }
}

期待される判断

観測値の平均は5です。欠測をゼロにすると母集団と結果が変わります。

同じデータでも平均は変わる:規則を示す

架空のデータ:[10、欠測、0、20、欠測、30]。予定6件のうち既知の値は4件、既知の合計は60です。含まれるゼロは実際の観測値です。

処理平均の計算解釈
既知の値だけ60 ÷ 4 = 15平均は既知の4値を表します。欠測2件も同じ分布になるとは証明できません。
欠測をゼロに置換60 ÷ 6 = 102つのゼロは規則で追加したもので、観測値ではありません。別の問いへの答えなので、比較前に規則の根拠を示します。
別の標本:[欠測、欠測]計算できない既知の値がないため利用不可と表示します。平均ゼロでは、存在しない観測を行ったかのように見えます。

検証手順

  1. 欠測、ゼロ、推定を分けます。
  2. 除外前後の平均を計算します。
  3. 件数と変数ごとの規則を残します。 すべての値が欠落するグループも試し、明示的な規則なしに測定されたゼロとして表示されないことを確認します。

pandas — Working with missing data

一次資料:pandas — Working with missing data. 関連する方法:実践ガイドを読む.