T-digest

article/2025/10/11 3:51:12

目录

  • 算法
    • 算法原理
    • 空间消耗及错误界限
  • 示例
    • 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 Tdigest,该算法理论基础可以参考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(2q1)(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(ci1),σ)(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 Tdigest还需满足以下性质:
{ 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×(1q),其中 q q q就是分位数。

示例

T-digest的建立

示例
算法
示例

T-digest的查询

分位数查询
分位数查询
分位数查询

相关链接

TDigest 算法原理
TDigest_PPT


http://chatgpt.dhexx.cn/article/2ddODVJp.shtml

相关文章

[反编译U3D]Decompile Unity Resources 修正

反编译unity project的资源文件,包括ios,android,pc等,仅供学习使用! 1.disunity Examples 1.1disunityGUI 1.1.2DiunityGUI 使用方法 2.unity3d decompiler 3.UnityAssetsExplorer 反编译unity project的资源文件&…

edit distance 理解

一直没有理解到inert i delete j 的意思。看看图就可以明白了。 对于那道面试题:http://www.careercup.com/question?id6287528252407808 k-palindrome. 最精妙的地方在于只考虑 k 长度以内的改变,这样就可以判断出来了。速度是O(k*n) 1. Definition o…

Tiny-DSOD: Lightweight Object Detection for Resource-Restricted Usages

Y uxi Li1 lyxok1sjtu.edu.cn Jiuwei Li2 jiuwei.liintel.com Weiyao Lin1 wylinsjtu.edu.cn Jianguo Li2 jianguo.liintel.com 1Shanghai Jiao Tong University , China 2Intel Lab China Abstract 近年来,随着深度学习的发展,目标检测技术取得了长足…

android density

为什么要引入dip —The reason for dip to exist is simple enough. Take for instance the T-Mobile G1. It has a pixel resolution of 320x480 pixels. Now image another device, with the same physical screen size, but more pixels, for instance 640x480. This devic…

手游游戏资源提取 (破解、AssetStudio、VGMToolbox、disunity、Il2CppDumper、 .NET Reflector)...

参考: 公主连结 游戏资源提取(解包)简明教程 Unity3D研究院之mac上从.ipa中提取unity3D游戏资源 吾爱破解:记一次unity3d data修改 GitHub:Il2CppDumper 想拿点知名IP的手游素材做点demo,然后搜了下如何能拿到app的素材资源 一 下…

DISN:Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction

时间:2019年 作者:Weiyue Wang ,University of Southern California etc. Abstract: 1.DISN 通过预测基本符号距离场来从二维图像中生成高质量的细节丰富的三维网格; 2.DISN 在二维图像上预测每一个三维点的投影位置&#xff…

Dist

这道题只要找到我们距离的规律就行了&#xff0c;我们可以发现&#xff0c;当行数小于列数时,列数(列数-1)/k,否则&#xff0c;行数(行数-1)/k&#xff0c;没记算一次我们的距离就会增加1&#xff0c;应为行数一减你就往下了一个&#xff0c;所以这个要加1. #include<bits/…

unity3D 如何提取游戏资源 (反编译)+代码反编译【P.M.出品】

转自&#xff1a;https://blog.csdn.net/LANGZI7758521/article/details/52291564 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源。教我们初步的破解unity3d资源的基本方法 附上原帖的链接&#xff1a;http://www.xuanyusong.com/archives/2584 下面我会从头…

Unity游戏资源逆向工具

Unity游戏资源逆向工具 https://www.cnblogs.com/kekec/p/12175547.html disunity是一款Java编写&#xff08;需安装jdk1.8&#xff0c;即Java8&#xff09;的解析Unity asset和asset bundle文件&#xff08;流式加载&#xff0c;支持热更新&#xff09;的命令行工具&#xf…

Distillation

蒸馏&#xff0c;把有杂质的东西变成纯度高的 知识从教师网络集成到学生网络&#xff0c;这个过程叫迁移&#xff0c;这么做的原因是终端的算力有限&#xff0c;需要高效率 有关嵌入式开发也有教程&#xff01;&#xff01; 问题的引入&#xff1a;标签有问题&#xff0c;马更…

Unity 提取资源 Disunity、Unity Studio

提取Unity3d资源&#xff0c;用过2个工具 Disunity https://github.com/ata4/disunityUnity Studio https://github.com/RaduMC/UnityStudio 解压XXX.apk.&#xff0c;如果能在XXXX\assets\bin\Data\Managed路径下找到UnityEngine.dll&#xff0c;则表明该游戏由Unity3d打包。…

【逆向工程】 disunity的使用

1. 下载并安装好jdk: 下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装教程&#xff1a;http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 2.下载disunity: https:/…

oracle怎么ping监听,请教TNSPING无监听的问题

请教各位高人&#xff0c;我在自己的虚拟机上装的是solaris10&#xff0c;数据库是oracle10.1.0.3.0&#xff0c;主机名如下&#xff1a; $ hostname fanww $ 在TELNET到虚拟机上之后可以正常启动监听&#xff0c;数据库也能启动&#xff0c;如下&#xff1a; $ lsnrctl start …

oracle数据库怎么ping,Oracle中tnsping命令解析

Oracle Net 工具(命令)tnsping&#xff0c;是一个OSI会话层的工具&#xff0c;它用来&#xff1a; 1)验证名字解析(name resolution&#xff0c;是oracle自己的网络服务名) 2)远程的listener是否启动 1.远程tnsping 2.关闭监听 3.启动监听&#xff0c;重新验证 总结&#xff1a…

Linux下Oracle的tnsping不显示sqlnet.ora文件路径

Tnsping在Linux与Windows下显示不一样 我的环境是&#xff1a;Centos7.6Oracle11.2.0.4 区别是&#xff1a;Linux下没有显示sqlnet.ora的路径名。 Linux下&#xff1a;Used parameter files:是空的 Windows下&#xff1a;Used parameter files显示路径名。 误导 因为我经常…

Oracle中tnsping无响应

1、tnsping 127.0.0.1&#xff08;数据库服务器地址&#xff09;无返回结果&#xff1b; 2、重启数据库服务或者重启数据库服务器问题依然不能解决&#xff1b; 3、最后发现&#xff0c;是 listener.log文件到4G了&#xff0c;删了这个文件 就正常了&#xff1b; 文件路径&…

tnsping命令解析

tnsping命令格式: tnsping <service_name> n n的意义是可以让tnsping ping多次 例: c:\Documents and Settings\Tony>tnsping orcl Oracle Net 工具&#xff08;命令&#xff09;tnsping&#xff0c;是一个OSI会话层的工具&#xff0c;它用来&#xff1a; 1&…

DOM4J及SAXReader解析xml文件数据

1、DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台&#xff0c;采用了 Java 集合框架并完全支持 DOM&#xff0c;SAX 和 JAXP。DOM4J 使用起来非常简单。只要了解基本的 XML-DOM 模型&#xff0c;就能使用。Dom&#xff1a;把整个文档作为一个…

告别996-SAXReader读取xml配置文件

在公司某一模块开发中,可以获取全部字段,但是需要取出某些不需要的字段,于是采取动态方法结合xml,将不需要的字段写在xml里面.或者根据下拉框中的值动态的获取某一个筛选条件集合sql筛选出需要的条件 前提准备 文件名:xxxxxxx.xml <?xml version"1.0" encoding…

Java 应用SAXReader 解析网络地址 XML

xml格式&#xff1a; 依赖于dom4j 框架自带该依赖包springboot框架中 工具类如下&#xff1a; import com.alibaba.fastjson.JSONObject; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;import java.net.URL;/*** SAXReader 解析 xml 工…