当前位置: 首页 > news >正文

基数统计-原理和应用场景

基数统计-原理和应用场景

基数统计概述

基数(Cardinality)是指一个集合中不同元素的数量,或者说统计一个集合中不重复元素的个数。

简单来说:基数(Cardinality)就是去除重复后的数的个数

例如,对于一个包含重复元素的集合{1, 2, 2, 3, 4, 4, 4},其基数为4,即不同元素的个数。

在Redis中,HashSet / HyperLogLog数据结构都能提供高效的基数统计,而HyperLogLog算法可以在不保存原始数据的情况下快速计算出一个集合的基数。

基数统计的2大类型

类型 1:精确计算

对于较小规模的数据集,可使用数据结构如哈希集合(HashSet)来实现基数统计。

哈希集合的工作原理:

哈希集合利用哈希函数将元素映射到存储位置,其内部会自动处理元素的插入和冲突问题。

当插入一个元素时,哈希集合会根据元素的哈希值确定存储位置,若该位置没有元素,则直接插入;若已存在元素(哈希冲突),则通过一定的冲突解决策略(如链表法或开放寻址法)来处理。

通过计算哈希集合中的元素数量,即可得到集合的基数。

类型 2:近似计算原理(以 HyperLogLog 为例)

HyperLogLog 是一种基于概率的数据结构,用于估算大数据集的基数。

基本原理:

  • 将元素哈希为二进制串
  • 通过统计哈希值的前导零的最大长度来估算基数
  • 每个不同的元素经过哈希后,其哈希值的前导零长度呈现一定的概率分布
  • HyperLogLog 通过维护多个寄存器来记录这些最大长度,然后根据这些寄存器的值和一定的数学公式来估算集合中的不同元素数量

特点:

  • 以牺牲一定的准确性为代价,换取了对内存的高效利用
  • 能够在有限的内存空间内处理大规模数据集
  • HyperLogLog不存储数据,只记录不重复数的个数
  • HyperLogLog有误差,在0.8125%

基数统计的应用场景和案例

基数统计场景1:网站流量分析

互联网公司中,用于统计网站的独立访客数量,为市场部门评估网站的用户覆盖范围和广告效果提供重要数据。

例如,像百度这样的大型搜索引擎网站,每天有海量的访问请求。通过基数统计,可以了解有多少不同的用户访问了网站,而不需要记录每个用户的详细访问信息。

使用 HyperLogLog 算法,在内存占用较小的情况下,就能快速估算出 UV/PV/ 注册IP数/ 每日访问IP数/统计在线人数:

  1. 统计网站注册IP数:使用HyperLogLog可以高效地统计网站注册用户的独立IP数量,为网站运营者提供有价值的数据支持。

  2. 统计每日访问IP数:通过对用户访问日志进行处理,使用HyperLogLog可以快速统计出每日的独立访问IP数,有助于分析网站流量和用户行为。

  3. 统计页面实时UV PV数:在实时监控系统中,使用HyperLogLog可以估算出页面的实时访问用户数(UV)和页面访问量(PV),为网站运营者提供实时反馈。

  4. 统计在线人数:在实时在线人数统计系统中,HyperLogLog可以用于估算当前在线用户的数量,为系统性能优化和用户体验改进提供数据支持。

  5. APP活跃用户数:统计一个APP的日活(日活跃用户数量)、月活数(月活跃用户数量),即每天或每月有多少不同的用户活跃

常见名词解释:
  • UV(Unique Visitor):独立访客,一般为客户端IP,要去重
  • PV(Page View):页面浏览量,不用去重
  • DAU(Daily Active User):日活跃用户量,当天登录或者使用某个产品的用户数,要去掉重复登录的用户,多次登录只记录一次
  • MAU(Monthly Active User):月活跃用户

基数统计场景2:数据库去重

在数据库管理中,用于统计一个表中某列的不同值的数量。

例如,在电商数据库中,统计产品表中不同品牌的数量,有助于了解产品的品牌多样性和市场分布。

  • 若数据量小,通过使用哈希集合可以精确计算基数
  • 若数据量庞大,HyperLogLog 则是一种更合适的近似计算方法

技术实现要点

精确计算的实现方法

  1. 哈希集合实现

    • 使用哈希函数映射元素到存储位置
    • 处理哈希冲突(链表法或开放寻址法)
    • 维护元素数量计数器
  2. 适用场景

    • 数据量较小(百万级以下)
    • 需要精确结果
    • 内存充足

近似计算的实现方法

  1. HyperLogLog算法

    • 使用多个寄存器记录哈希值前导零的最大长度
    • 通过数学公式估算基数
    • 误差率约为0.8125%
  2. 适用场景

    • 数据量巨大(亿级以上)
    • 可以接受一定误差
    • 内存受限环境

性能对比

特性精确计算(HashSet)近似计算(HyperLogLog)
内存占用O(n)O(log log n)
计算精度100%准确约99.2%准确
误差率0%约0.8125%
适用数据量小到中等大到极大
查询速度O(1)O(1)

总结

基数统计是处理去重问题的核心统计方法,根据数据规模和精度要求选择合适的实现方式:

  • 小规模数据:使用精确计算,保证结果准确性
  • 大规模数据:使用近似计算,在有限内存下获得可接受的精度
  • 实时统计:HyperLogLog提供了高效的实时基数统计能力
  • 业务指标:UV、DAU、MAU等关键业务指标都依赖于基数统计技术
http://www.jsqmd.com/news/779274/

相关文章:

  • 宝塔面板如何监控网站存活_配置心跳检测与告警通知
  • AI4S企业品牌定位怎么做:从复杂能力到市场判断,企业到底卡在了哪一步
  • 保姆级教程:用Docker Compose一键部署青龙面板,告别手动敲命令
  • Serial RapidIO技术解析与嵌入式系统应用
  • 圣禾堂在线正式成为AIT创瑞科技授权代理商,全品类元器件现货供应保障升级
  • 综合能源站“柔性容量”建设方案——以台区分布式储能实现变压器动态增容
  • 安川弧焊机器人焊接节气装置选型指南:实现节气40%-60%的节气效果
  • javascript中函数解析过程
  • 全国求职辅导公司怎么找?核心标准与靠谱平台解析 - 得赢
  • Pine Script V6开发效率革命:AI编辑器配置实战指南
  • 航空板块集体冲高,汇添富航空ETF(159257.SZ)单日涨近3%
  • SP3232EEY-L/TR:3V-5.5V宽压收发器 MaxLinear原厂方案,为工业通信与智能设备提供通用串行接口
  • H27Q1T8QAM6R-BCF海力士闪存H27Q1TLYEB9R-BCF
  • 优质百度蜘蛛池租赁服务:选择、运用与核心价值解析
  • 何帆律师团队|保险拒赔维权全指南(2026最新版) - 测评者007
  • 暗黑3技能连点器终极指南:5分钟掌握D3KeyHelper的完整配置技巧
  • 当AI遇上浏览器:一个漫画式的Playwright + CDP完全指南
  • 职场跳槽猎头公司评测:4家机构核心能力对比 - 得赢
  • 我是如何为客服系统自建文件服务器,节省运营成本的
  • ARC 218
  • 通过 Taotoken CLI 工具一键配置开发环境与常用 AI 工具
  • 学术界的“智能导航仪“来了!宏智树AI如何用自研大模型重构论文写作体验
  • Linux 开发环境虚拟化全指南
  • AI自动生成Git提交信息:llmc工具实战指南与Conventional Commits规范
  • 2026年4月目前热门的换电平台企业推荐,大功率换电柜/电动车电池充电柜/换电柜平台,换电平台服务商怎么选择 - 品牌推荐师
  • 如何设计MongoDB的金融交易流水表_防篡改与精确金额存储Decimal128.txt
  • 从Bimbo商标到芯片设计:技术产品如何避免跨文化命名陷阱
  • Kubernetes 作为集群编排系统有什么特点?
  • CPT外汇:多元化产品体系的综合呈现
  • AI驱动的自动化渗透测试:PentestGPT架构解析与实战部署指南