データのランダムサンプリングから一意の発生カウントを推定するにはどうすればよいですか?


15

私は時々繰り返す値の大きなセットを持っているとしましょう。大規模なセット内の一意の値の総数を推定したいと思います。S

値のランダムサンプルを取得し、一意の値が含まれていると判断した場合、これを使用して大きなセットの一意の値の数を推定できますか?TTu


1
また、サンプル内の一意の各値のコピー数のカウントを保持できますか?私はそれに当たるかもしれないのヘルプを。
ワンストップ

@onestop、はい、私はそれを行うことができました
正気

回答:


11

ここに、さまざまなアプローチの要約とともに、問題に関する論文全体があります。文献では、個別値推定と呼ばれています。

派手な論文を読まずに自分でこれをしなければならなかったなら、私はそうします。言語モデルの構築では、多くのテキストが与えられた場合、以前は未知だった単語を観察する確率を推定する必要があります。特に言語モデルでこの問題を解決するための非常に良いアプローチは、トークンの総数で割った、一度だけ発生した単語の数を使用することです。これはGood Turing Estimateと呼ばれます。

u個を、m個のアイテムのサンプルで1回だけ発生した値の数とします。

P[new item next] ~= u1 / m.

uをサイズmのサンプルの一意のアイテムの数とします。

データを追加しても「新しいアイテムの次」のレートが低下しなかったと誤って仮定した場合、Good Turingを使用すると、

total uniq set of size s ~= u + u1 / m * (s - m) 

これは、u1が非常に小さくなると厄介な動作をしますが、実際には問題にならないかもしれません。


sこの場合は何ですか?「単語」の総数は?
ネイサン

確かに、sこれで左手と右手の両方のサイズで2回発生しますか?
PascalVKooten

1

シミュレーション戦略

集合Sからサイズnのm個のランダムサンプルを収集します。m個のサンプルのそれぞれについて、一意の値の数uを計算し、nで除算して正規化します。正規化されたuのシミュレートされた分布から、目的の要約統計量(平均、分散、四分位範囲など)を計算します。正規化されたuのシミュレートされた平均にSのカーディナリティを乗算して、一意の値の数を推定します。

mnが大きいほど、シミュレートされた平均が一意の値の真の数とより密接に一致します。


1
この解決策はラメではありませんか?飽和効果はまったく考慮されていません。
rrenaud

@rrenaudあなたのソリューションと比較して、私は私が劣っているように見えることに同意します。
ブラッシュ平衡

@rrenaud私はまだシミュレーション戦略を提唱しています。これにより、可能な限り多くの可能な限り大きなサンプルでGTFEを使用してユニークなアイテムの確率を計算し、ユニークなアイテムの確率のサンプリングエラーの感覚を得ることができます。または、すべてのモーメントを計算する明示的な公式はありますか?ウィキペディアの参照によると、二項分布は一意のアイテムの数の分布を特徴づけていないため、負の二項とは思わないでしょう。でもすごい!これについては後で説明します。
ブラッシュ平衡

0

パンダの実装は次のとおりです。

import math
import numpy as np
from collections import Counter

def estimate_uniqueness(df, col, r=10000, n=None):
    """ Draws a sample of size r from column col from dataframe df and 
        returns an estimate for the number of unique values given a
        population size of n """
    n = n or df.shape[0]
    sample = df[col][np.random.randint(0, n, r)]
    counts = sample.value_counts()
    fis = Counter(counts)
    estimate = math.sqrt(n / r) * fis[1] + sum([fis[x] for x in fis if x > 1])
    return estimate

このペーパーのセクション2および4に依存:http ://ftp.cse.buffalo.edu/users/azhang/disc/disc01/cd1/out/papers/pods/towardsestimatimosur.pdf

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