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

警惕大数据处理中的“检查者悖论”

本文分享自天翼云开发者社区《警惕大数据处理中的“检查者悖论》.作者:王****淋

什么是检查者悖论:

观察的角度不同,得出的统计结论也不同。有时又称为"候车悖论", "等待时间悖论"

为了形象说明,我们设计了一种模拟场景: 班级人数统计,来用实例说明这个问题

模拟场景: 班级人数统计 

小明与小华要完成一个任务:统计学校中的 平均班级人数。但二人的实施方案不同:

1)小明找到了教务处老师,拿到了一份每班级人数统计名单。 于是他计算到了班级平均人数

, 其中N为班级数量。

2)小华则不同, 他选择去街头询问。小华在校园中随机询问了M人, 得到了M个数字, 每个数字即为该被询问的同学所在的班级人数。于是他计算到了班级平均人数

显然,二者的答案是不同的:

假设此学校一共2个班级: 一个90人,另一个10人。则小明计算结果: C^{mean} = (10 + 90) / 2 = 50人。

假设小华抽了10人,在随机抽样的情况下,大约9人属于班级1,1人属于班级2,小华计算结果 X^{mean} = (10*1 + 90*9) / 10 = 82人

原因初探

很明显, 结果出现了偏差。是什么导致了这种情况?其实,这就是"检查悖论"

每个班级人数不均衡情况下:

 

新问题提出 ================

这时,自然的,我们提出一个问题:如果只有小华的数据,如何得到真实的统计结果,即班级平均人数 ?

EM算法可以胜任这一问题:EM是一类算法, 在包含隐变量的情况下,可以估算模型参数。

 

下面以班级平均人数统计问题为例:

其中,Si是已知量,ki为参数,sigma为隐变量,ni是观测变量。

上代码:

import randomdef print_dict(d:dict, title=""):k = [ki for ki in d.keys()]k.sort()s = []for ki in k:s.append(str(ki) + ": " + str(d[ki]))print(title, "{", "; ".join(s), "}")### 1. 数据集生成:通过随机数================================================
#     1.1. 首先生成每班人数
classes = 20
classes = classes // 2 * 2
class_members = [random.randint(40, 50) for i in  range(classes//2)] + \[random.randint(100, 150) for i in  range(classes//2)]  \

class_dict = {}     # 统计量: 人数为Ni的班级>共有多少个
for ci in class_members:if ci in class_dict.keys(): class_dict[ci] += 1else:class_dict[ci] = 1#    1.2. 在街上抽学生(依据每班人数)
cy = random.choices(population=class_members,weights=[ci/sum(class_members) for ci in class_members],  # 依概率抽样k = 400                 # 街头抽样人数:应尽可能保证所有班级都有抽到
)asked_class_dict = {}    # 统计量: 班级人数为Xi的人>共抽到了几个人
for cyi in cy:  if cyi in asked_class_dict.keys(): asked_class_dict[cyi] += 1else:asked_class_dict[cyi] = 1### 2. EM =====================================================================
# EM \theta _0 init  
theta = {k: 1 for k in asked_class_dict.keys()}# run iter: ------------------
run_i = 20
while run_i > 0:run_i -= 1# 1. E-step: 依照{\theta}^t, 求P( Z | X, {\theta}^t )sigma = 0for k, v in theta.items():sigma += k * vsigma = len(cy) / sigma# 2. M-step: theta=argmax()for k, v in theta.items():theta[k] = round(asked_class_dict[k] / (k * v * sigma) * theta[k]) if theta[k] < 1: theta[k] = 1###  3. result showing ==============================================================
print_dict(theta,     "预测:{班级人数Ni: <人数为Ni的班级>共有多少个} \n\t")
print_dict(class_dict, "真实:{班级人数Ni: <人数为Ni的班级>共有多少个} \n\t")N_class = 0
N_students = 0
for k, v in theta.items():N_students += k * vN_class += vprint("预测平均 = ", N_students / N_class)
print("真实平均 = ", sum(class_members)/classes )
print("街头抽样平均 = ", sum(cy)/len(cy))

 

http://www.jsqmd.com/news/139206/

相关文章:

  • 2025年汽车海外营销推广服务商TOP5推荐(12月更新):Facebook、LinkedIn、TikTok、Google、INS等全平台覆盖 - 品牌2026
  • 函数导数概念的图形解释 | JsxGraph 课件
  • 2025年优质面粉机公司推荐:深挖小型面粉机/大型面粉机/石磨面粉机/中型面粉机/杂粮面粉机厂家+ 低能耗企业全解析! - 海棠依旧大
  • 2025全域GEO优化服务商精选:以精准适配解锁商业增长新入口 - 品牌推荐排行榜
  • 禅道--使用
  • 2025年优质排针推荐厂商排名:排针按需定制与来样定制专业企业全解析 - myqiye
  • 告别“等、靠、要”:业务人员自助数据分析的入门指南
  • 2025北京岩板定制厂家TOP5权威推荐:五方岩板厂专业吗? - myqiye
  • 2025年专业精密机械零件代加工厂家权威推荐榜单:制造加工机械/机械加工/数控机械加工源头厂家精选 - 品牌推荐官
  • Open-AutoGLM实战指南(从原理到部署的完整路径图谱)
  • 三氮唑原料靠谱厂家推荐 - 真知灼见33
  • 2025年电线电缆厂家推荐排行榜:电线电缆老牌厂家与按需定制服务测评 - 工业推荐榜
  • Open-AutoGLM接口调用全解析,彻底解决模型延迟与超时问题
  • 离线部署Open-AutoGLM实战手册(从环境搭建到推理验证)
  • 收藏!普通Python开发程序员转型大模型方向全攻略
  • NeurIPS | 别直接训!给主模型加个错题本,6B轻松超越8B
  • 2025年终宜昌旅游项目推荐:主流项目横向对比与高满意度三强盘点。 - 品牌推荐
  • 大模型部署革命:Cornserve实现Any-to-Any模型3.81倍性能提升(值得收藏)
  • 2025净化工程等级与行业匹配关系、承建及总包公司TOP5权威推荐 - 工业品牌热点
  • 将流对象重新封装成一个List集合
  • 为什么顶尖AI团队都在转向Open-AutoGLM?背后有这6个技术真相
  • 当AI遇上数据库:为何初创公司,都选了那个“老派”的PG
  • 【Open-AutoGLM入门到精通】:掌握自动推理与模型压缩的终极武器
  • 单北斗GNSS桥梁变形监测系统的应用与发展解析
  • 2025年终三峡旅游路线推荐:聚焦短途与深度游的3强口碑榜单解析。 - 品牌推荐
  • Open-AutoGLM:能否取代传统Fine-tuning?一文看懂技术变革本质
  • 英伟达豪掷200亿美金,谷歌TPU之父连夜投奔老黄!
  • 还在手动调参?Open-AutoGLM自动优化让你效率提升10倍,
  • 【离线部署Open-AutoGLM终极指南】:手把手教你零基础实现本地大模型部署
  • 2025年终三峡旅游路线推荐:景观价值与文化体验双维度实测TOP3盘点。 - 品牌推荐