HyperLogLog淺析

1.伯努利實驗

如果我們不斷投擲一個硬幣,而且該硬幣是均勻的,每次投擲出現正反面的概率相等都爲0.5,知道我們得到第一個正面,假設這個過程爲一次伯努利過程。那麼,投擲一次硬幣就得到正面的概率爲1/2,投擲兩次硬幣得到正面的概率爲1/4。

現在有如下兩個問題:
1.如果進行上述n次伯努利過程,所有投擲次數均不大於k(每次都小於k)的概率是多少?
2.如果進行上述n次伯努利過程,至少有一次不小於k(至少有一次大於等於k)的概率是多少?

對於第一個問題,要求每次都小於k,如果是第k+1次纔出現正面,則前k次均爲反面的概率爲12k\frac{1}{2^k}Pn(Xk)=(112k)nP_n(X \leq k) = (1 - \frac{1}{2^k})^nPn(Xk)P_n(X \leq k)表示所有投擲次數均不大於k的概率。

顯然第二個問題的答案爲Pn(X>k)=1(112k)nP_n(X > k) = 1 - (1 - \frac{1}{2^k})^n

n<<2kn << 2 ^ k時, Pn(Xk)=1P_n(X \leq k) =1。而當n>>2kn >>2 ^ k時, Pn(X>k)=1P_n(X > k) = 1。如果翻譯一下就是:當伯努利過程的次數n遠小於2k2^k時,所有投擲次數均不大於k的概率是1,或者說至少有一次大於等於k的概率是0。反過來當伯努利過程的次數n遠大於2k2^k時,所有投擲次數均不大於k的概率是0,而至少有一次大於等於k的概率是1。

將上面的情況做一個對應:一過伯努利過程對應一個元素的比特串,正面對應1,反面對應0。投擲次數k爲對應第一個"1"出現的位置。

假設有一個集合的技術爲n, k爲所有元素中首個’1’出現的位置最大的那個元素的’1’的位置。如果n<<2k2^k,則得到k爲當前值的概率幾乎爲0。同理,如果n>>2k2^k,則得到k爲當前值的概率也幾乎爲0。因此2k2^k可以作爲基數n的一個粗糙估計。

上面可以總結爲:進行n次拋硬幣實驗,每次分別記錄下第一次拋到正面的投擲次數k,那麼可以用n次實驗中最大的拋擲次數kmaxk_{max}作爲實驗組數量n的估計:n^=2k\hat n = 2 ^ k

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章