簡單認識KMV Sketch估算演算法

2021-09-12 23:55:20 字數 1429 閱讀 1913

kmv sketchtheta sketch演算法的一種,簡單來說,kmv sketch是用來估算大資料中不重複元素的個數,例如某個**的唯一身份訪客數。本文簡單翻譯自datasketches的文件,用以說明該演算法是如何進行估算的。

如果你去參加**會,你排在隊尾,如何估計你的前面還有多少個人?如下圖,整個隊伍的長度是已知的為1000ft,你與前乙個人的距離為2ft,那麼可以簡單的估算,整個隊伍共有1000ft/2ft=500人,此時你用於計算的樣本包含的人數為1人。

再次觀察這個隊伍,你發現人與人之間的距離並不是均勻的,你看到隊尾的11個人一共佔據了30ft的長度,那麼再次估算人數為1000ft/30ft*11=11/(30ft/1000ft)=366人,由於此次你用了11個人作為樣本,估算值應該比之前更精確。

現在我們有乙份大資料樣本,包含的是訪客的唯一id,為了簡單說明原理,假設只有10個不同的id我們還需要乙個特殊的hash函式,它能將id對映成0~1之間的值,並且對映後的值是有序的,如下圖所示:

如果選取最小的那個值作為估算樣本,那麼整體數量的估算值為1/0.008=125,如果選第4個數,即0.386作為樣本,那麼估算值為1/(0.386-0.195)=5。可以看到,在只有乙個樣本的情況下,估算值與真實值10差距較大。

參考估算排隊人數的做法,我們同樣選擇多個樣本來估算,例如選擇最小的0.008/0.145/0.1953個樣本,此時估計值的計算方式為(3-1)/0.195=10.26,可以看到,距離真實值已經很接近了。

kmv估算法的計算原理就是這樣,雖然很簡單,但數學上可以嚴格證明該估計量是整體的無偏估計。

this簡單認識

this 在函式中簡單的說,this的指向存在於函式呼叫的時候決定的,誰呼叫了這函式 函式中的this就指向誰 例如 1 普通的呼叫函式的時候 fn window2 物件呼叫 var obj obj.f fn obj.f this obj3 定時器呼叫 因為fn不是我們自己手寫 呼叫的 底層是win...

TCP IP簡單認識

tcp ip是乙個四層協議系統。每一層都有多個不同協議構成。所謂協議就是定義好的,在不同網路,不同 系統中都相同的規定。這樣保障了不同網路系統的可通訊基礎。四層協議包括 鏈路層,網路層,運輸層 和應用層。每乙個層面分管不同的資料,層層打包。總的來說我們可以接觸到的也就是應用層和運輸層。應用層我們自己...

MVC簡單認識

學習乙個新知識,首先要了解的就是下面幾個問題,它是什麼?它能幹什麼?使用它有什麼好處?這篇文章就圍繞這幾個問題來展開討論。mvc不是一種程式語言,嚴格來說,它都不算是一門技術,它是開發軟體時使用的一種 架構 框架 他就像是一種開發模式,或者是乙個程式設計模板。軟體開發人員老生常談的乙個問題,就是軟體...