मैं डेटा के यादृच्छिक नमूने से अद्वितीय घटना का अनुमान कैसे लगा सकता हूं?


16

मान लीजिए कि मेरे पास मानों का एक बड़ा समूह है जो कभी-कभी दोहराता है। मैं बड़े सेट में अद्वितीय मूल्यों की कुल संख्या का अनुमान लगाना चाहता हूं ।S

यदि मैं मानों का यादृच्छिक नमूना लेता हूं , और यह निर्धारित करता कि इसमें अद्वितीय मान हैं, तो क्या मैं इसका उपयोग बड़े सेट में अद्वितीय मानों की संख्या का अनुमान लगाने के लिए कर सकता हूं?टी यूTTu


1
क्या आप नमूने में प्रत्येक अद्वितीय मूल्य की प्रतियों की संख्या भी रख सकते हैं? मुझ पर प्रहार करता है जो मदद कर सकता है।
OneStop

@onestop, हाँ मैं ऐसा कर सकता था
पवित्रता

जवाबों:


12

यहां विभिन्न दृष्टिकोणों के सारांश के साथ समस्या के बारे में एक पूरा पेपर है। इसे साहित्य में डिस्टिक्ट वैल्यू एस्टीमेशन कहा जाता है।

अगर मुझे खुद ऐसा करना पड़े, बिना फैंसी पेपर पढ़े, तो मैं यह करूंगा। भाषा के मॉडल के निर्माण में, किसी को अक्सर एक अज्ञात शब्द को देखने की संभावना का अनुमान लगाना होता है, जिसे पाठ का एक गुच्छा दिया जाता है। विशेष रूप से भाषा के मॉडल के लिए इस समस्या को हल करने में एक बहुत अच्छा दृष्टिकोण उन शब्दों की संख्या का उपयोग करना है जो कुल एक बार टोकन की कुल संख्या से विभाजित होते हैं। इसे गुड ट्यूरिंग एस्टीमेट कहा जाता है ।

मानों की संख्या के नमूने में एक बार होने वाले मानों की संख्या u1 हो।

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

यू आकार के अपने नमूने में अद्वितीय वस्तुओं की संख्या हो।

यदि आप गलती से मान लेते हैं कि 'नया आइटम अगला' दर कम नहीं हुआ है क्योंकि आपको अधिक डेटा मिला है, तो गुड ट्यूरिंग का उपयोग करके, आपके पास होगा

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

यह कुछ बुरा व्यवहार है क्योंकि u1 वास्तव में छोटा हो जाता है, लेकिन व्यवहार में यह आपके लिए समस्या नहीं हो सकता है।


sइस मामले में क्या है ? 'शब्दों' की कुल संख्या?
नाथन

वास्तव में, इसमें sदो बार होता है, दोनों बाएं और दाएं हाथ के आकार पर?
पास्कलवूटन

1

सिमुलेशन रणनीति

सेट एस से आकार n के मी यादृच्छिक नमूने ले लीजिए । एम नमूनों में से प्रत्येक के लिए , अद्वितीय मानों की संख्या u की गणना करें और n को सामान्य करने के लिए विभाजित करें । सामान्यीकृत यू के सिम्युलेटेड वितरण से , ब्याज के सारांश आंकड़ों की गणना करें (जैसे, माध्य, विचरण, इंटरक्वेर्टाइल रेंज)। अनूठे मूल्यों की संख्या का अनुमान लगाने के लिए एस की कार्डिनैलिटी द्वारा सामान्यीकृत यू के सिम्युलेटेड मतलब को गुणा करें ।

अधिक से अधिक मी और एन हैं , आपके नकली अर्थ के अधिक निकटता अद्वितीय मूल्यों की सही संख्या से मेल खाएगी।


1
यह लंगड़ा का समाधान नहीं है? यह संतृप्ति प्रभाव को बिल्कुल भी ध्यान में नहीं रखता है।
रैनॉड न्यूड

@ रेनाउड आपके समाधान की तुलना में, मैं सहमत हूं कि मेरा अवर दिखता है।
ब्राश इक्विलिब्रियम

@rrenaud मैं अभी भी एक अनुकार रणनीति की वकालत करता हूं जिसके तहत आप अनूठे आइटम की संभावना के लिए नमूना त्रुटि के कुछ अर्थ प्राप्त करने के लिए जीटीएफई का उपयोग करके कई-जैसे-संभव-से-बड़े व्यवहार्य नमूनों की अद्वितीय वस्तुओं की संभावना की गणना करते हैं। या क्या सभी क्षणों की गणना करने का एक स्पष्ट सूत्र है? मुझे नहीं लगता कि यह द्विपदीय वितरण के बाद से नकारात्मक द्विपद है, विकिपीडिया संदर्भ के अनुसार, अद्वितीय वस्तुओं की संख्या के वितरण की विशेषता नहीं है। लेकिन कमाल! मैं इसे बाद के लिए दर्ज करूंगा।
ब्राश इक्विलिब्रियम

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/towardsestimatimatur.pdf

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.