2017-01-21 4 views
0

私は、実験の優先度に基づいて実験にユーザーを割り当てるシステムを持っています。各実験には、ユーザーに表示する頻度を決定する重みがあります。たとえば、優先度80の実験2よりも優先度100の実験1にユーザーを割り当てることができます。その重みに基づいて実験を選択すると、実験のトラフィック割り当て番号を確認してそのユーザーをその実験に割り当てます。スケールに対する重量平均

したがって、実験1には優先度100が設定されていますが、トラフィック割り当て数が80%の場合、その実験用に設定されたユーザーには80%の時間しか割り当てられません。残りの20%はコントロールグループに割り当てられます。ただし、ユーザーを実験または実験の制御に割り当てる決定は、実験の優先順位に基づいています。優先度の低い他の実験は、ユーザーにはあまり頻繁に示されていません。

優先度の低い実験も頻繁に割り当てられ、飢えていないように、ユーザーを優先度に基づいて実験に割り当てる方法を教えてください。

優先度に関係なくすべての実験が割り当てられるようにするにはどのようなアルゴリズムを使用できますか。優先度の高い実験がより頻繁にユーザーに割り当てられます。

+0

「スターベーション」と呼ばれるスケジューリングの問題について説明します。それについてGoogleと読んで、可能な解決策を読んでください。 – alfasin

+0

問題はほとんど定義されていません。例えば、実験の選択と対照群への割り当てとの間に明確な分離はない。 –

+0

あなたの質問は私にはあまり明確ではありません...ウェイトはある種の確率に対応していますか?言い換えれば、実験Aの体重が100で実験Bの体重が80の場合、180人の全体ユーザーに100をAに割り当て、80をBに割り当てる必要がありますか? – xzoert

答えて

0

あなたの問題はあまり詳しく述べられていません。それを並べ替えてみましょう。有用な並べ替えであるかどうかは、あなたが言うことです。

まず、実験への重みの割り当てに優先度番号を使用します。実験eの優先度をP_eとします。 R_eを、ユーザが実験に割り当てられた確率(0対1)であるとします。enの実験が任意の順序で配置されているとします。e_0e_1 ... e_(n-1)R_eのための合理的な式は

R_e = P_e/sum(P_(e_i) for all i) 

は、ユーザが割り当てられている実験決定発生擬似乱数Z[0..1)およびkZ < sum(R_j, j = 0..k)そのような最小の整数であるe_kように選択することです。実験の数が多い場合は、バイナリ検索で行います。

ユーザーがどの実験に参加しているか分かりましたので、彼女がコントロールかテストかを判断するために、を[0..1)に「コイン投げ」として使用してください。 T_eがトラフィック割り当ての場合は、Y < T_eの場合はテストを選択し、それ以外の場合は制御します。

これは公平な分配方式です。飢えはありません。

まず、あなたが上記の何を理解できないならば、あなたは効果的なプログラマであるいくつかの数学を勉強する必要があります。これはかなりシンプルなものです。

と仮定実験は重みを持っている

e_0 = 20, e_1 = 100, e_2 = 80 

彼らの合計は200であるので、選択の確率は次のようになります。

R_0 = 20/200 = 0.1, R_1 = 0.5, R_2 = 0.4 

これらの確率の現在和は次のようになります。

sum(0..0) = 0.1, sum(0..1)= 0.6, sum(0..2) = 1.0 

これらは、(二分探索によって)検索する必要がある合計私のk

疑似乱数Zが0.1未満の場合は、実験e_kを選択します。ここでk = 0です。 0.1と0.6との間で、k = 1を選択する。 0.6以上はk = 2を選択する。

今すぐコイントスを行います。トラフィックの割り当てが0.75の場合、0.75未満のトースはユーザーをテストすることを意味します。さもなければ、ユーザはコントロールです。

+0

あなたは私にあなたの例を与えることができます – Jasmine

+0

私に実際の番号を与えることによって平均 – Jasmine

+0

@ジャスミンは、例を加えました – Gene