日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

T-digest

發布時間:2024/5/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的T-digest的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。