Robust Univariate Mean Estimation算法简介

news2025/1/10 23:50:50

Robust Univariate Mean Estimation 是一种统计算法,主要用于在单变量场景中估计样本的均值,同时对异常值(outliers)具有鲁棒性。传统的均值估计使用样本的算术平均值,但它对异常值高度敏感。为了缓解这个问题,Robust Univariate Mean Estimation 算法设计了一种能够在数据中存在噪声或异常值的情况下仍然提供准确估计的方法。

以下是对该算法的详细介绍:


背景与意义

  • 目标:估计一个随机变量 X X X 的总体均值 μ = E [ X ] \mu = \mathbb{E}[X] μ=E[X]
  • 挑战:实际数据可能包含异常值或受噪声影响,使得传统的均值(如样本平均值)失效。异常值可以显著偏离数据分布,导致均值估计偏离真实值。
  • 鲁棒性:鲁棒算法的目的是即使在某些数据点偏离分布时,仍然能够接近真实的总体均值。

算法原理

Robust Univariate Mean Estimation 通常依赖于以下思想:

1. 抗噪声机制
  • 通过设计拒绝异常值的方法,限制它们对估计的影响。
  • 利用 截断技术(Truncation)加权平均(Weighted Mean) 来减弱远离中心的数据点的权重。
2. 基于排序的方法
  • 利用样本中值(median)替代均值:中值对异常值更为鲁棒,特别是在数据分布对称时。
  • Winsorization 技术:将极端值替换为靠近数据中心的值,以减少其对整体估计的影响。
3. 迭代优化
  • 通过多次迭代逐步收敛到一个更鲁棒的估计值。
  • 使用动态权重调整:例如,基于样本点到中心的距离更新权重,靠近中心的数据点获得更大的权重。
4. 使用分布假设
  • 在有一定分布假设的情况下,例如高斯分布,可以使用 Trimmed Mean(截断均值) 或 Huber Loss 来改进估计。
  • Huber Loss 是一种将平方损失与绝对损失结合的目标函数,在异常值较大时会自动切换到绝对损失,从而减弱异常值的影响。

典型实现方法

(1) Trimmed Mean(截断均值)
  • 按数据的大小排序,去掉上下两端的一部分数据,然后计算剩余数据的平均值。
  • 假设有 n n n 个样本,去掉 α n \alpha n αn 个最大的和最小的样本,剩下的 ( 1 − 2 α ) n (1 - 2\alpha)n (12α)n 样本用于计算均值。
  • α \alpha α 是一个超参数,通常根据数据集的异常值比例来设置。
(2) Median-of-Means (MoM)
  • 将数据分成 k k k 个子集,每个子集计算均值。
  • 最后选择这些子集均值的中值作为总体均值的估计。
  • 优点:即使某些子集中包含异常值,其对最终估计的影响也被限制。
(3) Huber Mean Estimation
  • 利用 Huber 损失函数定义的权重:
    ρ ( x ) = { x 2 if  ∣ x ∣ ≤ δ 2 δ ∣ x ∣ − δ 2 if  ∣ x ∣ > δ \rho(x) = \begin{cases} x^2 & \text{if } |x| \leq \delta \\ 2\delta|x| - \delta^2 & \text{if } |x| > \delta \end{cases} ρ(x)={x22δxδ2if xδif x>δ
  • 参数 δ \delta δ 控制平方损失和线性损失之间的切换点。

算法性能与性质

  1. 鲁棒性

    • 能有效抵抗少量异常值(通常占总数据的 ≤ 20 % \leq 20\% 20%)。
    • 不依赖数据点的极端值,因此估计结果更接近真实均值。
  2. 效率

    • 对比样本均值的 O ( n ) O(n) O(n) 复杂度,某些鲁棒算法可能需要更高复杂度(如排序带来的 O ( n log ⁡ n ) O(n \log n) O(nlogn))。
  3. 适用性

    • 尤其适用于分布未知或包含异常值的单变量场景。

实例应用

  • 金融:估计资产回报的平均值时,剔除异常涨跌值。
  • 医疗:分析生理指标(如血糖、心率)的均值时,过滤掉采集异常数据点。
  • 工程:测量实验数据的中心值,去除仪器故障产生的极端值。

在这里插入图片描述

这个算法提供了一种鲁棒的单变量均值估计方法,利用了分组和区间截断的思想来抵抗异常值的干扰。我们逐步分解其逻辑和含义:


问题背景

  • 输入数据: { z i } i = 1 2 n \{z_i\}_{i=1}^{2n} {zi}i=12n,包含 2 n 2n 2n 个点。
  • 存在异常值:其中可能有 ϵ \epsilon ϵ 比例的点是被污染(corrupted)的。
  • 目标:从中估计总体均值,确保异常值对结果的影响最小,同时提供某种信心水平 δ \delta δ

算法步骤解读

1. 划分数据
  • 将数据分成两部分:
    • Z 1 = { z i } i = 1 n \mathcal{Z}_1 = \{z_i\}_{i=1}^n Z1={zi}i=1n(前 n n n 个样本)。
    • Z 2 = { z i } i = n + 1 2 n \mathcal{Z}_2 = \{z_i\}_{i=n+1}^{2n} Z2={zi}i=n+12n(后 n n n 个样本)。
  • 这种分组的目的:
    • Z 1 \mathcal{Z}_1 Z1:用于确定一个鲁棒区间 I ^ = [ a , b ] \hat{I} = [a, b] I^=[a,b]
    • Z 2 \mathcal{Z}_2 Z2:验证数据点是否位于 I ^ \hat{I} I^ 中,并基于这些点估计均值。

2. 确定参数 α \alpha α
  • 计算 α = max ⁡ ( ϵ , log ⁡ ( 1 / δ ) n ) \alpha = \max\left(\epsilon, \frac{\log(1/\delta)}{n}\right) α=max(ϵ,nlog(1/δ))
    • ϵ \epsilon ϵ:数据中被污染的点的比例。
    • log ⁡ ( 1 / δ ) n \frac{\log(1/\delta)}{n} nlog(1/δ):信心水平 δ \delta δ 带来的影响,反映对随机波动的容忍度。
  • α \alpha α 决定了后续用于估计的样本比例,即剔除多少点作为异常点。

3. 确定鲁棒区间 I ^ \hat{I} I^
  • Z 1 \mathcal{Z}_1 Z1 构造区间 [ a , b ] [a, b] [a,b],具体方法:
    1. 排序数据:将 Z 1 \mathcal{Z}_1 Z1 按值从小到大排序。
    2. 计算区间长度
      • 包含的点数为:
        n ( 1 − 2 α − 2 α log ⁡ ( 4 / δ ) n − log ⁡ ( 4 / δ ) n ) n\left(1 - 2\alpha - \sqrt{2\alpha \frac{\log(4/\delta)}{n}} - \frac{\log(4/\delta)}{n}\right) n(12α2αnlog(4/δ) nlog(4/δ))
      • 这是在 Z 1 \mathcal{Z}_1 Z1 中选取的中间点的数量。
      • 排除过大的 α \alpha α 部分和噪声导致的波动,从而获得一个尽量排除异常值的区间。
    3. 最短区间
      • 找到能容纳上述点数的最短区间,定义为 [ a , b ] [a, b] [a,b]
    • 直观理解 [ a , b ] [a, b] [a,b] 是在数据分布中筛选出的一个相对集中且鲁棒的核心区间,剔除了两端的潜在异常值。

4. 基于区间 [ a , b ] [a, b] [a,b] 筛选数据
  • Z 2 \mathcal{Z}_2 Z2 中,保留所有落在区间 [ a , b ] [a, b] [a,b] 中的点:
    z i ∈ Z 2  且  z i ∈ [ a , b ] z_i \in \mathcal{Z}_2 \text{ 且 } z_i \in [a, b] ziZ2  zi[a,b]
  • 使用这些点估计均值。

5. 估计均值
  • 使用落在 [ a , b ] [a, b] [a,b] 内的点计算加权均值:
    μ ^ = 1 ∑ i = n + 1 2 n I { z i ∈ I ^ } ∑ i = n + 1 2 n z i I { z i ∈ I ^ } \hat{\mu} = \frac{1}{\sum_{i=n+1}^{2n} \mathbb{I}\{z_i \in \hat{I}\}} \sum_{i=n+1}^{2n} z_i \mathbb{I}\{z_i \in \hat{I}\} μ^=i=n+12nI{ziI^}1i=n+12nziI{ziI^}
    • I { z i ∈ I ^ } \mathbb{I}\{z_i \in \hat{I}\} I{ziI^} 是指示函数,表示第 i i i 个样本是否在区间 [ a , b ] [a, b] [a,b] 中。
    • 分母是区间内的点数,分子是这些点的值之和。

核心思想

  1. 分组处理数据

    • 分为 Z 1 \mathcal{Z}_1 Z1 Z 2 \mathcal{Z}_2 Z2,分别用于确定区间和验证区间。通过分组降低异常值影响。
  2. 通过区间筛选

    • Z 1 \mathcal{Z}_1 Z1 的分布确定一个高置信区间 [ a , b ] [a, b] [a,b],排除可能的异常值。
  3. 利用有效数据估计均值

    • 通过 Z 2 \mathcal{Z}_2 Z2 中落在区间内的点估计均值,确保鲁棒性。

优点与适用性

  • 鲁棒性

    • 剔除了异常值对均值估计的影响,尤其适用于数据中包含离群点或污染样本的场景。
  • 计算效率

    • 通过简单排序和区间截断实现,复杂度较低。
  • 适用范围

    • ϵ \epsilon ϵ 较小的场景(异常值比例不太高)。
    • δ \delta δ 决定了算法的置信区间大小。

直观理解

这个算法的核心是“划分”和“筛选”:

  1. Z 1 \mathcal{Z}_1 Z1 找到一个“可信”的区间,集中于主要数据分布中心,剔除异常值。
  2. Z 2 \mathcal{Z}_2 Z2 中只用落在区间内的数据估计均值,确保均值估计不会被异常值拉偏。

如果还有不清楚的部分,可以继续具体探讨!

在这个算法中, Z 1 \mathcal{Z}_1 Z1 Z 2 \mathcal{Z}_2 Z2 的划分并不是随机的,而是直接按照输入数据 { z i } i = 1 2 n \{z_i\}_{i=1}^{2n} {zi}i=12n 的顺序进行分割:

  • Z 1 = { z 1 , z 2 , … , z n } \mathcal{Z}_1 = \{z_1, z_2, \dots, z_n\} Z1={z1,z2,,zn} —— 前 n n n 个样本。
  • Z 2 = { z n + 1 , z n + 2 , … , z 2 n } \mathcal{Z}_2 = \{z_{n+1}, z_{n+2}, \dots, z_{2n}\} Z2={zn+1,zn+2,,z2n} —— 后 n n n 个样本。
划分方式特点
  • 顺序划分:算法假定输入数据 { z i } i = 1 2 n \{z_i\}_{i=1}^{2n} {zi}i=12n 是随机打乱(或无偏采样)的,因此直接按顺序分割可以近似视为随机划分。
  • 独立性 Z 1 \mathcal{Z}_1 Z1 Z 2 \mathcal{Z}_2 Z2 被用作不同目的的数据子集,因此分开处理的好处在于:
    • Z 1 \mathcal{Z}_1 Z1:用于构造区间 [ a , b ] [a, b] [a,b],提供关于数据分布的鲁棒信息。
    • Z 2 \mathcal{Z}_2 Z2:用于估计均值,仅使用落在区间内的数据,从而避免对区间本身产生偏倚。
为什么不随机划分?

虽然随机划分可以在理论上保证独立性,但固定顺序的划分有以下实际好处:

  1. 实现简单:直接按照数据顺序分割,无需额外的随机操作。
  2. 高效性:在实现中避免了额外的开销(如随机种子设置或洗牌操作)。
  3. 适用场景:对于无偏数据输入(例如已随机打乱的数据),顺序分割效果等价于随机分割。
注意事项

如果输入数据存在顺序依赖(如时间序列数据)或未打乱,直接顺序划分可能会导致 Z 1 \mathcal{Z}_1 Z1 Z 2 \mathcal{Z}_2 Z2 无法充分代表整体分布。在这种情况下:

  • 解决方法:在划分前对 { z i } \{z_i\} {zi} 进行洗牌操作,确保其无序性,然后再按上述方式顺序划分。

总之,在默认假设数据是无序(打乱)的情况下, Z 1 \mathcal{Z}_1 Z1 Z 2 \mathcal{Z}_2 Z2 是按顺序划分的,而不需要随机划分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2257088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++流星雨

系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C/C…

MySQL——buffer poll

为什么要有buffer poll? 如果没有buffer poll,每次读取数据的时候都是从磁盘上读的,这样效率是很差的的。 所以有了提高效率的方式,就加上了一个缓存——buffer poll 所以,当我们读取数据的时候就有以下的方式 当读…

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省) 任务书

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省 任务书 模块一网络平台搭建与设备安全防护任务1:网络平台搭建 (50分)任务2:网络安全设备配置与防护(250分) 模块二网络安全事件响应、数字取证…

ERROR: KeeperErrorCode = NoNode for /hbase/master

原因分析 通过上面的情景模拟,我们可以看到报错的原因在于zookeeper中出现问题,可能是zookeeper中的/hbase/master被删除,或者是在hbase集群启动之后重新安装了zookeeper,导致zookeeper中的/hbase/master节点数据异常。 1. 停止…

ElasticSearch7.8学习笔记

1. ElasticSearch概述 1.1 ElasticSearch是什么 Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到…

CSS制作字体炫彩效果

目录 序言一、思路二、代码实现 序言 本节内容主要来讲解一下炫彩字体的实现,主要通过使用 background-clip以及background-position来实现,那么话不多说开始本节内容的学习吧! 一、思路 添加盒子以及内容使用 background-clip属性&#x…

如何防止短信盗刷和短信轰炸?

短信盗刷和短信轰炸是项目开发中必须要解决的问题之一,它的优先级不亚于 SQL 注入的问题,同时它也是面试中比较常见的一个经典面试题,今天我们就来看下,如何防止这个问题。 1.概念介绍 短信盗刷和短信轰炸的概念如下&#xff1a…

ios逆向某新闻 md5+aes

本期的案例比较简单,也许是ios逆向算法本来就比较简单的原因,所以前面我就多扯一些爬虫和逆向的东西。之前写的文章都是js逆向和android逆向的案例,这也是首篇ios的案例,所以会从入门开始讲起。 3大逆向对比 首先爬虫工程师大部…

SpringBoot【一】零基础入门 springboot 及 idea 搭建

一、前言 springboot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解&#xff0…

2024年超大跨径钢结构桥梁创新技术论坛暨钢桥联盟年度工作会议顺利召开

12月5日,由中交公路规划设计院有限公司、装配化钢结构桥梁产业技术创新战略联盟主办,保利长大工程有限公司、中交第二航务工程局有限公司、中交第二公路工程局有限公司、中交路桥建设有限公司、中交西安筑路机械有限公司、南京现代综合交通实验室、巨力锁…

win10上部署win11记事本

win10上部署win11记事本 原因 win10的老用户们, 不肯升级win11, 绝对是有留恋的东西吧,就想win7用户那样, 但是win11在日益更新, 特别是记事本, 增加了很多好用的功能, 比如多标签页, 但是不想升级win11, 还想用, 怎么办? 我在网上找到了解决方案, 接下来, 我们来操作一下吧…

记录:ubuntu24.04源码安装nginx

一. 下载Nginx源码 两个地址二选一即可 Nginx官网Nginx官网 Github eg:nginx-1.27.3.tar.gz 下载到 ubuntu24.04 的 Downloads ,解压 cd Downloads tar -zxvf nginx-1.27.3.tar.gz二. 编译安装 Note: 编译最好用 root 权限, 使用下面命令…

【前端】深入理解 JavaScript 中的数组与对象

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯数组与对象的基本概念数组(Array)数组示例 对象(Object)对象示例 💯数组与对象的对比核心区别如何选择&#…

31.下一个排列 python

下一个排列 题目题目描述示例 1:示例 2:示例 3:提示:题目链接 题解解题思路python实现代码解释:提交结果 题目 题目描述 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3…

Codeforces Round 992 (Div. 2)

这场cf只在b卡了一下,因为b真是犯蠢了,我以为会向下取整,结果是完全就不取整,或者说是向上取整,卡了我半个小时,要不是紧急看了题一下,昨天那场就毁了 话不多说,直接开讲 A. Game …

vue入门实战(二)父子组件显示,参数传递

经过上次的写法&#xff0c;我们已经写出每个list项&#xff0c;现在要在每个父组件下面加入自己的子项 一、新建子组件&#xff1a; smallItem.vue&#xff1a; <script> export default{props:[text,id,status] //父组件传来的参数 } </script> <template>…

批量验证指定漏洞思路和流程

免责申明 本文仅是用于学习研究POC的地址收集与漏洞验证原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法时习之丨网络安全在身边一图了解网络安…

Android 事件分发机制详解/ 及Activity启动流程浅谈

目前网上的事件分发机制文章很多&#xff0c;可能大家看了很多&#xff0c;还是很懵逼&#xff0c;这篇文章是我自己总结的事件分发机制&#xff0c;提取了在事件分发机制中&#xff0c;最精华的部分&#xff0c;如果对事件分发还是不太清楚&#xff0c;可以看看这篇文章 更多…

蓝桥杯刷题日记02-小球反弹

问题描述 有一长方形&#xff0c;长为 343720343720 单位长度&#xff0c;宽为 233333233333 单位长度。在其内部左上角顶点有一小球 (无视其体积)&#xff0c;其初速度如图所示且保持运动速率不变&#xff0c;分解到长宽两个方向上的速率之比为 dx:dy15:17dx:dy15:17。小球碰…

SkyWalking 和 ELK 链路追踪实战

一、背景 最近在给项目搭建日志平台的时候&#xff0c;采用的方案是 SkyWalking ELK 日志平台&#xff0c;但发现 ELK 日志平台中的日志没有 Trace ID&#xff0c;导致无法追踪代码报错的整体链路。 空哥提示&#xff1a;Trace ID 是分布式追踪中用来唯一标识一个服务请求或事…