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.
スティッキーバケッティング
スティッキーバケットは、ユーザーがすでに実験のバリアントを体験しているかどうかを確認します。その場合、実験はユーザープロパティの現在の値(ユーザーが最後に表示したバリアント)をユーザーに割り当てます。スティッキーバケッティングにより、実験のパラメータを変更しない限り、ユーザーは元のバリアントに留まります。
スティッキーバケットは、ユーザーが単一のフラグまたは実験に対して2つ以上のバリアントを経験することで発生するバリアント間の切り替えを防止するのに役立ちます。ジャンプを防ぐことがよくあります。スティッキ バケット設定を有効にしても、ユーザーがバリアント ジャンプを経験しないことを保証するものではありません。 ユーザーが持つログイン済みとログアウト済みのAmplitude IDが異なる可能性があるため、実験にログアウト済みとログイン済みの両方のエクスペリエンスが含まれている場合、バリアントジャンプが発生する可能性があります。
スティッキーバケットは、Feature 実験とフラグでのみ使用できます。Web 実験では使用できません。
Amplitude 実験は、一貫したバケット化と決定論的なハッシュアルゴリズムを使用しており、何も変更しない限り、ユーザーは元のバリアントに留まります。
スティッキーバケッティングの仕組み
スティッキーバケッティングを有効または無効にするには、実験を開き、鉛筆アイコンをクリックして、詳細(オプション) > バケッティングオプションに移動します。
スティッキーバケット設定を有効にすると、実験はユーザーがその実験に関連付けられたユーザープロパティの値をすでに持っているかどうかを確認します。その場合、実験はユーザープロパティの現在の値(ユーザーが最後に確認したバリアント)をユーザーに割り当てます。それ以外の場合、実験がユーザーを再評価します。
2 つ以上の実験割り当てが互いに数秒以内に発生した場合、Amplitude実験にはスティッキー バケットを適用する時間がありません。
Amplitudeは、ユーザーをOffバリアントに固定的に割り当てません。評価とエクスポージャーの詳細については、評価フローチャートとローカル評価ターゲティング機能を参照してください。
スティッキ バケット処理を使用すべき場合と使用すべきでない場合
このセクションでは、スティッキバケッティングを有効にする場合と有効にしない場合の例を示します。このリストは網羅的なものではありません。 場合によっては、スティッキ バケット設定がオンであるかオフであるかにかかわらず、結果は同じままになります。 たとえば、ホームページを閲覧するすべての人を対象とした実験の場合、実験の実行中は実験コントロールを変更することはありません。
動的なコホートをターゲットに設定した場合、ユーザーはコホート内外に移動できます。 スティッキーバケットを有効にしない場合、ユーザーは「トリートメント」を体験した後に「オフ」になることがあります。
スティッキ バケット設定を有効にするタイミング
- ターゲットとするユーザープロパティが変更された場合でも、ユーザーに一貫したエクスペリエンスを提供したいと考えています。 たとえば、米国でのみ実験を実施する場合、スティッキバケッティングを使用すると、ユーザーが国外に移動した場合でも同じバリアントを保持できます。
- トリートメント群のパフォーマンスが良好でない実験のロールアウト率を減らしたいが、ユーザーをトリートメント群または対照群から、どちらのバリアントも経験していないグループ(「オフ」バリアント)に移すことは望ましくない。スティッキーバケット設定を使用すると、ロールアウト率を変更した後も、ユーザーは割り当てられたグループに維持されます。ロールアウト率を増減させても、ユーザーがテスト群とコントロール群の間を移動することはありません。
- 指定された期間(たとえば2週間)ユーザーをターゲットに設定した後、新しいユーザーのターゲット設定を停止したい場合、Amplitudeにすでにバケット化されているユーザーの元の割り当てを維持します。 これは、特定のトリートメントがユーザーの行動に及ぼす長期的な影響を調査するためや、1つ以上の実験のトリートメントの質に確信が持てない場合に行われることがあります。実験の開始時に、50/50の分割でスティッキーバケッティングを有効にします。期間が経過したら、ロールアウトの割合をゼロに変更します。
- 失敗した実験を終了したいが、すでにエクスペリエンスにバケットされたユーザーが引き続きそのエクスペリエンスを得られるようにしたい場合。スティッキ バケット設定を有効にし、ロールアウトの割合をゼロに設定します。
スティッキ バケット設定を有効にしない場合
- ターゲットとなるユーザープロパティが変更されるにつれて、ユーザーの体験も変化させたいと考えています。前の例を続けると、米国で実験を実施する場合、ユーザーが海外旅行したときに同じ体験をすることは望まないかもしれません。
- この実験では、無料ユーザーを有料ユーザーに変え、報酬を得ることに依存しています。 これらのユーザーがコンバージョンすると、報酬を提供する必要はなくなります。 ここでスティッキーバケッティングを有効にすると、これらのユーザーは有料プランにアップグレードした後も無料のエクスペリエンスを維持できます。
- 割引を実施する間に「クールダウン」期間を設けたい場合。 ユーザーごとに割引を7日ごとに1回に制限するには、ターゲット設定基準に7日間のフィルタを追加します。 ユーザーがその期間内に割引を受け取った場合、フラグは
offと評価されます。 このフィルタは、意図したタイミングより前にユーザーが別の割引を受け取れないようにします。 - バリアントをロールアウトまたはロールバックしようとしています。スティッキバケット設定を有効にし、トラフィック割り当てを変更すると、すでにバケットに設定されているユーザーは自分のバケットにとどまるため、古い割り当てと新しい割り当ての間の加重平均が得られます。実験では、希望する割り当てに到達するには時間がかかります。
特定のユーザーに対してスティッキバケット設定が有効化されているかどうかを確認する
スティッキ バケットがユーザーに適用されたかどうかを判断するには、次の手順を実行します。
- ユーザーのイベントストリームで実験割り当てイベントを確認してください。このチェックは、データ内の実験課題イベントをブロックしていない場合にのみ機能します。
.detailsを持つイベントプロパティのうち、対象となる実験フラグキーに対応するものを検索します。このプロパティは、評価されたフラグのバージョンと、どのターゲット設定ルールがユーザーに適用されるかを示します。 このプロパティーは、割り当て問題のデバッグにも役立ちます。
| イベントプロパティ | 値 |
|---|---|
[Experiment] Endpoint | /sdk/vardata |
[Experiment] Environment ID | 506 |
[Experiment] Environment Name | ios |
lp-app-downloads.details | v21 rule:non-iOS users |
lp-app-downloads.variant | off |
たとえば、上記のプロパティは、デバイスファミリーが iOS ではないため、Amplitude がユーザーを lp-app-downloads フラグに対して off に割り当てたことを示しています。プロパティには、これがフラグの21番目のバージョンであることも示されており、適用されているルールは non-iOS users です。ユーザーが最初のルールベースのターゲティングフィルターに該当しなかったため、Amplitudeは代わりに2番目のフィルターを適用します。
| イベントプロパティ | 値 |
|---|---|
signup-ux-updates.details | v14 rule:sticky-bucketing |
signup-ux-updates.variant | phone-number-removed |
この例では、スティッキーバケットが有効になっており、Amplitudeはユーザーをsignup-ux-updatesフラグの14番目のバージョンに振り分け、そのバージョンで実験がphone-number-removedバリアントを提供しました。フラグバージョンは、フラグが変更された場合のデバッグに役立ちます。実験では、そのプロジェクト内のすべてのアクティブなフラグに対する割り当てイベントが表示されますが、露出イベントはフラグごとに表示されます。必要なフラグに対応するイベントプロパティが見つからない場合は、[Experiment] Environment Nameフィールドをチェックして、フラグが属するデプロイメントと一致することを確認してください。
これは役に立ちましたか?