무작위 데이터 샘플링에서 고유 한 발생 횟수를 어떻게 추정 할 수 있습니까?


15

때때로 반복되는 큰 값 세트가 있다고 가정 해 봅시다 . 큰 집합 의 총 고유 값 수를 추정하고 싶습니다 .S

임의의 값 샘플을 가져 고유 값 이 포함되어 판단 하면이 값을 사용하여 큰 집합의 고유 값 수를 추정 할 수 있습니까?T UTTu


1
샘플에서 각 고유 값의 사본 수를 계산할 수 있습니까? 도움 이 될 수도 있습니다 .
onestop

@onestop, 네, 그렇게 할 수 있습니다
sanity

답변:


11

다음은 다양한 접근 방식을 요약 한 문제에 대한 전체 논문입니다. 이를 문헌에서 구별 가치 추정 이라고 합니다.

공상 서류를 읽지 않고이 일을 직접해야한다면 이렇게해야합니다. 언어 모델을 만들 때 종종 많은 텍스트가 주어지면 이전에 알려지지 않은 단어를 관찰 할 확률을 추정해야합니다. 특히 언어 모델에서이 문제를 해결하는 데 아주 좋은 방법은 정확히 한 번 발생한 단어 수를 총 토큰 수로 나눈 값을 사용하는 것입니다. 이를 Good Turing Estimate 라고합니다 .

u1은 m 개 항목의 샘플에서 정확히 한 번 발생한 값의 수입니다.

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

크기 m의 표본에서 고유 항목의 수를 u로하자.

더 많은 데이터를 얻었을 때 '다음 새 항목'비율이 줄어들지 않았다고 잘못 가정 한 경우 Good Turing을 사용하면

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

u1이 실제로 작아지면 약간의 불쾌한 행동이 있지만 실제로는 문제가되지 않을 수 있습니다.


무엇 s이 경우에? 총 단어 수는?
Nathan

실제로, s왼손과 오른손에 모두 두 번 발생합니까?
PascalVKooten

1

시뮬레이션 전략

세트 S 에서 크기가 n 인 랜덤 샘플 m 개를 수집 합니다. m 개의 샘플 각각에 대해 , 고유 값 의 수 u 를 계산하고 n 으로 나눠 정규화합니다. 정규화 된 u 의 시뮬레이트 된 분포에서 관심있는 요약 통계를 계산합니다 (예 : 평균, 분산, 사 분위 범위). 정규화 된 u 의 시뮬레이션 평균에 S 의 카디널리티를 곱하여 고유 값의 수를 추정하십시오.

mn 이 클수록 모의 평균이 실제 고유 값 수와 더 밀접하게 일치합니다.


1
이 솔루션은 절름발이 아닙니까? 채도 효과를 전혀 고려하지 않습니다.
rrenaud

@rrenaud 귀하의 솔루션과 비교할 때 내 것이 열등하다는 데 동의합니다.
Brash Equilibrium

@rrenaud 나는 여전히 시뮬레이션 전략을 옹호합니다. 여러분은 가능한 한 많은 가능한 큰 샘플에서 GTFE를 사용하여 고유 항목의 확률을 계산하여 고유 항목의 확률에 대한 샘플링 오류를 얻습니다. 아니면 모든 순간을 계산하는 명확한 공식이 있습니까? 위키 백과 참조에 따르면 이항 분포는 고유 항목 수의 분포를 특징으로하지 않기 때문에 음 이항 이항이라고 생각하지 않습니다. 그러나 굉장합니다! 나중에이 문제를 정리해 보겠습니다.
Brash Equilibrium

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.