1つのセットのサンプルを使用して、複数のセットの共通部分のサイズを推定する


10

私は、少なくとも2つのセットの交差によって生成されるセットのサイズを計算する必要があるアルゴリズムに取り組んでいます。すなわち:

z=|A0An|

交差するセットはSQLクエリによって生成され、高速に保つために、各クエリの数を事前に取得し、最小数()のセットを取得して、それらのIDを残りの大きなクエリなので、交差は事実上次のようになります。A0

z=|(A0A1)(A0An)|

この戦略でさえ、から、かなり大きなクエリを実行する必要があります大きくなることもあります。これに対処するための私の考えは、ランダムなサンプルを取り、それを適切な推定値に外挿する前に残りのセットと交差させることです。私の質問は、サンプリングしてから外挿して値に戻る最良の方法は何ですか?完全に正確ではないにしても、予測可能なエラー範囲がありますか?|A0|A0zz


これが私がこれまでに試したものです(疑似コードのようなものです):

sample_threshold := 10000
factor := 1
if (len(A0) > sample_treshold) {
    factor = sample_threshold / len(A0)
}

// Take a random sample of size 10000 from A0

// Intersect all the other sets with the A0 sample, then with each other
working_set := A0
for i, a := range A {
    a = intersect(A0, a)
    working_set = intersect(working_set, a)
}

z := len(working_set) * (1 / factor)

このコードは機能しますが、一貫して過大評価しているようzで、サンプルサイズが小さいほど、推定値が高くなります。さらに、交差する2つ以上のセットでこれがどのようにスケーリングされるかはわかりません。

この質問が理にかなっているといいのですが、さらに明確にすることができるかどうか知らせてください。また、この質問がトピックから外れている場合、または別の場所にある場合は、お知らせください。移動させていただきます。


パービルのコメント、私はサンプルサイズの対エラーを表示するためにいくつかの簡単な裁判を走りました。各サンプルサイズのバケットは20回実行されました。ご覧のとおり、かなり明確な傾向があります。

プロット


置換なしの単純なランダムサンプリングが機能するはずです。あなたが過大評価していることに私は困惑しています。これは、ランダムなサンプルからのサンプル平均を使用して、母平均を推定することに正確にマップするように見えます。要素が他のの交点に存在する母集団確率を推定しようとしています。私は簡単な例で麺を作りました、そしてそれはうまくいきます。あなたが一貫して過大評価していることをどれほど確信していますか?20回のうち15回、200回のうち150回のように発生しましたか。サンプルは本当にランダムですか?A0A
ビル

1
@ビル私が見ているものを示すサンプルサイズとエラーのプロットを追加しました。20のうちの20倍に似ています。ランダムサンプルについては、と同じくらいランダムですORDER BY RAND()。これは完全ではありませんが、このタスクに適しています。
ジミー・ソークク

@JimmySawczuk「ワーキングセット」を「intersect(A0、a)」ではなく、単に「a」と直接交差させる方がよいのではないでしょうか。最初の実行後、「A0」はおそらくアルゴリズムの現在の「ワーキングセット」よりも大きくなるため...これを正しく理解していますか?

マルチセットではなくセットを実際に意味していることを確認できますか(つまり、セットに重複がないこと)。なぜなら、「交差点」のサイズがあなたの方法で過大評価されやすいからです。(が同じ要素のちょうど100のコピーで、それらの半分をサンプリングした場合を考えてください。)A0
Innuo

また、元のセットのサイズと比較して、交差のサイズが非常に小さいかどうかを尋ねることができますか?もしそうなら、私はそれがあなたの問題を説明するような気がします。私はいくつかのシミュレーション(より小さなセットで)を実行しており、小さくても過大評価ではありますが、かなり一貫性があります。

回答:


3

セットに繰り返し要素がある場合(つまり、実際にはマルチセットである場合)、スケーリング係数は、サンプリングされた一意の「タイプ」の数ではなく、サンプリングされた要素の数を使用するため、手順によって交差のサイズが過大評価されます。ランダムなサンプルの一意の要素の数とフルセット一意の要素の数の比率として係数を計算することにより、推定値を修正できます。A 0A0A0


0

以下のようInnuoが指摘する、私の問題は、私のサンプリングされたセットでの重複であった引き起こし、ひいては最終的な外挿が発生した、低になるために私の擬似コードでそれはの逆を介して生成されたため、高すぎること。重複を削除することでこの問題が解決し、アルゴリズムはデルタ対サンプルサイズのプロットを、予想したもののラインに沿ってより多く生成します(ラインは、母集団全体に対するそのサンプルサイズの95%信頼レベルでのエラーマージンを示します) ):A0factorzfactor

プロット

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.