T-digest
目錄
- 算法
- 算法原理
- 空間消耗及錯誤界限
- 示例
- T-digest的建立
- T-digest的查詢
- 相關鏈接
上一篇博客中講述了使用 R a n d o m Random Random算法進行 q u a n t i l e quantile quantile估算,詳情可見Random,本博客將講訴另外一個 q u a n t i l e quantile quantile估算算法: T ? d i g e s t T-digest T?digest,該算法理論基礎可以參考Computing Extremely Accurate Quantiles Using t-Digest
算法
算法原理
該算法的思想是將輸入數據表示縮減成簇的集合 { C i } 1 m \{C_{i}\}^m_1 {Ci?}1m?,每個簇表示為: ( C i , C c o u n t ) (C_i,C_{count}) (Ci?,Ccount?), C i C_i Ci?表示該簇的中心,一般是等于簇中元素的平均值, C c o u n t C_{count} Ccount?則是該簇中對應的元素的數量。簇的大小極大影響了算法的準確率,假設簇的較大,則會導致結果誤差偏大;假設簇的大小較小,則會導致結果準確,但另一方面計算的復雜度對增加。對于一般的問題而言,我們更加關注位于兩端的 q u a n t i l e quantile quantile(即靠近 0 0 0或者 1 1 1),即: q u a n t i l e quantile quantile位于中間部分的簇容量較大;相應地, q u a n t i l e quantile quantile位于兩端的簇的容量較小。給出如下公式:
k ( q , σ ) = σ 2 π a r c s i n ( 2 q ? 1 ) (1) k(q,\sigma)=\frac{\sigma}{2\pi}arcsin(2q-1)\tag{1} k(q,σ)=2πσ?arcsin(2q?1)(1)
其中: q q q為簇對應的分位數, σ \sigma σ為壓縮系數。
則對應的某段 q u a n t i l e quantile quantile所能代表的量化長度為:
K ( C i ) = k ( q ( c i ) , σ ) ? k ( q ( c i ? 1 ) , σ ) (2) K(C_{i})=k(q(c_{i}),\sigma)-k(q(c_{i-1}),\sigma)\tag{2} K(Ci?)=k(q(ci?),σ)?k(q(ci?1?),σ)(2)
其中: K ( C 1 ) = k ( q ( c 1 ) , σ ) K(C_{1})=k(q(c_1),\sigma) K(C1?)=k(q(c1?),σ)
另外, T ? d i g e s t T-digest T?digest還需滿足以下性質:
{ K ( c i ) = ≤ 1 K ( c i ) + K ( c i + 1 ) > 1 (3) \left\{ \begin{aligned} K(c_i) &= & \leq1 \\ K(c_i)+K(c_{i+1})&>&1 \end{aligned} \right.\tag{3} {K(ci?)K(ci?)+K(ci+1?)?=>?≤11?(3)
對于某個簇 C i C_{i} Ci?而言,其所能接受的最大 q u a n t i l e quantile quantile為:
q l i m i t = 1 2 [ 1 + s i n ( a r c s i n ( 2 × q ( c i ) ? 1 ) + 2 π σ ) ] q_{limit}=\frac{1}{2}[1+sin(arcsin(2\times q(c_i)-1)+\frac{2\pi}{\sigma})] qlimit?=21?[1+sin(arcsin(2×q(ci?)?1)+σ2π?)]
故當某個新元素到來時,若將其加入到當前簇 C i C_i Ci?時,若 q q q將大于 q l i m i t q_{limit} qlimit?,則不將其加入;否則,則將其加入。下圖給出了其算法示意圖:
空間消耗及錯誤界限
壓縮系數 σ \sigma σ, b u f f e r buffer buffer大小 k k k,簇的數量 ? σ 2 ? ≤ m ≤ ? σ ? \lfloor \frac{\sigma}{2} \rfloor\leq m \leq \lceil \sigma \rceil ?2σ??≤m≤?σ?
不像其他 q u a n t i l e quantile quantile估算算法,該算法的準確率 ? \epsilon ?正比于 q × ( 1 ? q ) q\times (1-q) q×(1?q),其中 q q q就是分位數。
示例
T-digest的建立
T-digest的查詢
相關鏈接
TDigest 算法原理
TDigest_PPT
總結
- 上一篇: ArcEngine C# GIS开发入门
- 下一篇: 计算机中级职称能转评讲师,职称评定中,什