Làm cách nào tôi có thể ước tính số lần xuất hiện duy nhất từ ​​một mẫu dữ liệu ngẫu nhiên?


15

Giả sử tôi có một tập hợp lớn các giá trị đôi khi lặp lại. Tôi muốn ước tính tổng số giá trị duy nhất trong tập lớn.S

Nếu tôi lấy một mẫu ngẫu nhiên các giá trị và xác định rằng nó chứa các giá trị duy nhất T u , tôi có thể sử dụng giá trị này để ước tính số lượng giá trị duy nhất trong tập lớn không?TTbạn


1
Bạn cũng có thể giữ số lượng bản sao của từng giá trị duy nhất trong mẫu không? Tấn công tôi có thể giúp đỡ.
onestop

@onestop, vâng tôi có thể làm điều đó
sanity

Câu trả lời:


11

Dưới đây là toàn bộ bài viết về vấn đề này, với một bản tóm tắt các cách tiếp cận khác nhau. Nó được gọi là Ước tính giá trị riêng biệt trong văn học.

Nếu tôi phải tự làm điều này, mà không cần phải đọc những bài báo ưa thích, tôi sẽ làm điều này. Trong các mô hình ngôn ngữ xây dựng, người ta thường phải ước tính xác suất quan sát một từ chưa biết trước đó, được đưa ra một loạt các văn bản. Một cách tiếp cận khá tốt để giải quyết vấn đề này cho các mô hình ngôn ngữ nói riêng là sử dụng số lượng từ xảy ra chính xác một lần, chia cho tổng số mã thông báo. Nó được gọi là Ước tính Turing Tốt .

Đặt u1 là số lượng giá trị xảy ra chính xác một lần trong một mẫu của các mục m.

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

Đặt u là số lượng vật phẩm duy nhất trong mẫu kích thước m của bạn.

Nếu bạn nhầm tưởng rằng tỷ lệ 'mặt hàng mới tiếp theo' không giảm khi bạn có thêm dữ liệu, thì sử dụng Turing tốt, bạn sẽ có

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

Điều này có một số hành vi khó chịu khi u1 trở nên thực sự nhỏ, nhưng đó có thể không phải là vấn đề đối với bạn trong thực tế.


những gì là strong trường hợp này? tổng số 'từ'?
Nathan

Thật vậy, sxảy ra hai lần trong này, cả về kích thước bàn tay trái và phải?
PascalVKooten

1

Chiến lược mô phỏng

Thu thập m mẫu ngẫu nhiên kích thước n từ tập S . Đối với mỗi mẫu m , tính số u của các giá trị duy nhất và chia cho n để chuẩn hóa. Từ phân phối mô phỏng của u bình thường hóa , tính toán thống kê tóm tắt về sở thích (ví dụ: trung bình, phương sai, phạm vi liên dải). Nhân giá trị trung bình mô phỏng của u chuẩn hóa với giá trị chính của S để ước tính số lượng giá trị duy nhất.

Cn càng lớn , giá trị mô phỏng của bạn càng sát với số lượng giá trị duy nhất thực sự.


1
Đây không phải là giải pháp khập khiễng sao? Nó hoàn toàn không tính đến hiệu ứng bão hòa.
rrenaud

@rrenaud So với giải pháp của bạn, tôi đồng ý rằng tôi xuất hiện kém hơn.
Cân bằng Brash

@rrenaud Tôi vẫn ủng hộ chiến lược mô phỏng, theo đó bạn tính xác suất của các mặt hàng duy nhất bằng cách sử dụng GTFE trên các mẫu càng lớn càng khả thi để có được cảm giác về lỗi lấy mẫu đối với xác suất của các mặt hàng duy nhất. Hoặc có một công thức rõ ràng để tính toán tất cả các khoảnh khắc? Tôi không nghĩ đó là nhị thức âm vì phân phối nhị thức, theo tài liệu tham khảo Wikipedia, không đặc trưng cho phân phối số lượng vật phẩm độc đáo. Nhưng tuyệt vời! Tôi sẽ gửi nó đi sau.
Cân bằng Brash

0

Đây là một triển khai cho gấu trúc:

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

Dựa vào Phần 2 và 4 của bài viết này: http://ftp.cse.buffalo.edu/users/azhang/disc/disc01/cd1/out/ con / pods / totestestatatimosur.pdf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.