このページでは

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

実験評価

評価によって、ユーザーが特定のフラグ設定を受け取るバリアント(存在する場合)が判別されます。評価では、ユーザーとフラグ設定を入力として受け取り、バリアントを出力します。

ユーザーとフラグからバリアントまでの実験評価手順の図

事前ターゲティング

事前ターゲティング手順では、ターゲティングセグメントを実行する前に評価されたバリアントを決定できます。

アクティベーション

フラグはアクティブまたは非アクティブのいずれかです。 非アクティブなフラグは、評価からバリアントを返すことはありません。

ベストプラクティス

オン/オフフラグについては、Amplitudeは、アクティブ化/非アクティブ化フラグボタンを使用してトラフィックを制御するのではなく、すべてのユーザーセグメント割り当てを100%または0%に設定することを推奨しています。機能が完全に起動した後、またはフラグの計測を削除した後にフラグを削除するには、[Activate/Deactivate] ボタンを使用します。

フラグの依存関係

フラグは、他のフラグの評価に対する依存性を定義できます。 依存関係が満たされていない場合、バリアントは返されません。それ以外の場合は評価が継続されます。 フラグ依存関係は、相互排他グループとホールドアウトグループを実装します。

例えば、Flag-2では、Flag-1がバリアントonに評価されることへの依存関係を定義できます。

  • Flag-1 (50% on)。
  • Flag-2(50%control、50%treatment)。
    • 依存関係 Flag-1=on.

この依存関係により、Amplitudeは常にFlag-1を評価してからFlag-2を評価します。Flag-1がonと評価される場合、AmplitudeはFlag-2を完全に評価します。Flag-1がバリアントと評価されない場合、またはon以外のバリアントと評価される場合、Flag-2は依存関係チェックに失敗し、Amplitudeはバリアントを割り当てません。これにより、依存関係チェックがスキップされたり、未定義の結果が返されたりするエッジケースを防ぎます。 この依存関係により、エクスポージャーイベントと監査記録の一貫性も維持されます。

この例では、Amplitudeは評価対象ユーザーの50%にFlag-2バリアントを割り当てています。

個別の対象

インクルージョンにより、特定のユーザー(ユーザーIDまたはデバイスIDで識別される)を強制的にバリアントに割り当てます(フォースバケット)。インクルージョンは主に開発を支援します。

たとえば、新しい多変量機能を開発していて、アプリケーション内の各バリアントをテストしたい場合は、実験の「インクルージョン」セクションにユーザーまたはデバイスIDを追加して、アプリケーションを更新してください。

スティッキーバケッティング

スティッキーバケット化の使用には注意が必要です。スティッキ バケット設定が無効になっていても、ユーザーとターゲット設定ルールが変更されていない場合、一貫性のあるバケット設定によりユーザーは同じバリアントに配置されます。スティッキーバケット化設定が有効になっているアクティブなフラグのターゲット設定ルールを変更すると、サンプル比率の不一致(SRM)が発生することがあり、これにより実験結果が歪む可能性があります。

スティッキ バケット設定を有効にすると、Amplitudeは現在のターゲティングに関係なく、常にユーザーを以前にバケット設定された同じバリアントに評価します。 Amplitudeがユーザーをバリアントにまだバケット化していない場合、スティッキーバケッティングは適用されません。

詳細については、スティッキ バケット設定をご覧ください。

ターゲット設定セグメント

ルール(where句)を定義せずにターゲットセグメントを追加すると、推定ユーザー数が0人であっても、すべてのユーザーがキャプチャされます。

フラグまたは実験は0-nターゲットセグメントを持つことができます。Amplitudeはターゲットセグメントを上から下へと評価します。 ユーザーがセグメントのターゲット設定ルールに一致する場合、設定された割り当て率とバリアントの分配ウェイトに基づき、一貫したバケット化によって、ユーザーが受け取るバリアント(存在する場合)が決定されます。

すべてのユーザーセグメント

すべてのユーザーセグメントは、ターゲティングセグメントに一致しないすべてのユーザーをキャプチャします(存在する場合)。コンシステントバケット設定では、設定された割り当て割合とバリアント分布の重みに基づいてユーザーをバリアントに割り当てます(またはバリアントなし)。

一貫したバケット設定

Amplitude 実験のバケット設定は、ユーザー、バケット設定キー、バケット設定ソルト、割り当て割合、およびバリアントの重みに基づいて一貫しています。入力が同じ場合、出力は一定のままです。

バケット化ロジックは2つのステップに分かれています。 割り当てバケット設定は、割り当て割合に基づいてユーザーがバリアントを受け取るかどうかを決定します。バリアントのバケット化は、割り当てのバケット化によってユーザーが割り当てられた場合にのみ実行されます。どちらのステップも、同じ一貫性のあるハッシュ関数をわずかに異なる方法で使用します。

バケッティングソルトは、実験割り当てを統計的に独立させます。ソルトがなければ、Amplitudeがトリートメントに割り当てたユーザーは、すべての実験でトリートメントを受け取ることになります。

バケッティングソルトを更新するのは、次の2つの場合です。

  1. 実験のバグやその他の問題のためにユーザーを再ランダム化するため。 salt を新しいランダムな文字列に更新します。
  2. 2つの実験の評価を一致させるため。両方のプロジェクトで salt を同じ値に更新します。

ハッシュ

Amplitude 実験の一貫したバケット作成は、指定されたセグメントのバケットキーの値に対して、murmur3一貫性ハッシュアルゴリズムを使用します。バケットソルトまたはバケット値が変化すると、ハッシュ出力も変化し、ユーザーはバリアントジャンプすることがあります。

text
murmur3_x86_32("bucketing_salt/bucketing_value")

割り当てバケット設定

ユーザーは、モジュロ 100 のハッシュ値がセグメントで設定された割り当てよりも小さい場合に割り当てられます。

text
murmur3_x86_32("bucketing_salt/bucketing_value") % 100

バリアントバケット設定

割り当て後、バリアントバケット設定により、ユーザーが受信するバリアントが決定されます。Amplitudeは、変数をその重みに基づいて0~42949672の間の値に関連付けます。

text
floor(murmur3_x86_32("bucketing_salt/bucketing_value") / 100)

たとえば、バリアントAの重みが1で、バリアントBの重みが1の場合、AmplitudeはバリアントAを[0, 21474835]区間の値に関連付け、バリアントBを[21474836, 42949672]区間の値に関連付けます。

これは役に立ちましたか?