非参数检验方法,核密度估计简介

简介: 核密度估计(Kernel Density Estimation,简称KDE)是一种非参数统计方法,用于估计数据样本背后的概率密度函数。

在20世纪,统计学还处于起步阶段计算机还不是那么流行的时候,假设正态分布是生成数据的标准。这主要是因为在那个所有结果都是手工计算的时代,正态分布可以使计算不那么繁琐。

但在这个大数据时代,随着计算能力的提高,数据的可用性使得统计学家采用了更现代的技术——非参数统计。这里我们将讨论一种这样的方法来估计概率分布,核密度估计。

n个随机变量服从分布函数F。对数据的假设越多,我们就越不接近现实,所以让我们对分布F做尽可能小的假设:它是一个绝对连续的分布函数(概率密度/质量函数即pdf/pmf存在)。我们要重建这个未知分布函数F的pdf。

是如果使用参数检验的方法,我们会假设(猜测)F的参数形式,并通过各种统计方法估计参数,如最大似然估计,矩量法等。但这里我们不打算这么做。我们将转而使用这个密度的非参数估计。

在深入研究用于非参数估计密度的核密度估计(KDE)之前,我们先看一个例子,一个看似非参数的问题可以转化为参数推断问题,然后我们将介绍非参数统计和 KDE 起着重要作用的例子。

这里我们要检验

以非参数方式执行此操作,下面的测试可以直观进行,

原假设:分布 F 的中位数为 0

检验这个零假设的常识方法是查看正面和负面观察的数量,并查看每个类别中有多少错误,即

在原假设下,正观察值的数量应遵循 Binomial(n, 1/2)

这样我们就将非参数测试问题简化为参数测试问题。

让我们转向另一个例子

参数估计正在获取 f_theta 最接近 g 的估计,如果 g 在模型的选择中,那么对于某些参数选择,估计的 f 和 g 之间的距离将为 0,即

这里的rho 是两个密度函数之间的距离度量,上述情况发生在建模完美的时候,而现实生活中往往不是这样。因为对于 f 形式的参数函数集中的最佳选择,它们也将接近 g 但不完全等于 f。我们执行以下操作,

找到使假设的参数模型与实际密度之间的距离最小的参数,在最好的情况下,这个参数通常仍会导致距离的正值。两个密度函数之间距离的一种特殊选择可以是 Kullback–Leibler 散度:

在上面的表达式中,最大化第二项就像最小化距离一样,因为第一项与 theta 无关。所以最小化 KL(g,f) 可以变为:

KL散度公式中第二项的最大化导致距离最小化,G 是未知的。上述最小化 KL 散度的表达式的形式为:ln f(x) w.r.t. 的期望, G是分布函数 。

我们的数据总是离散的。所以需要使用样本均值来估计上述期望

上面的表达式需要最大化,它与最大似然估计相同,其中上面的表达式给出了样本的对数似然(忽略小数常数 1/n)。

但是上面所有的工作,我们以某种方式绕过了一个事实,即正在最小化离散数据和连续密度之间的距离。但通常是不可能这样做。例如,如果选择 Squared-Hellinger距离

最后一个表达式来自于密度函数对R的积分是1。第一个问题是,为什么还要加上Squared-Hellinger距离?我们加上它的与原因是它不知道数据中的异常值,而理论上的好处是它的对称表达式。

所以最小化 Hellinger 距离等同于

在 Squared Hellinger 距离中最大化此项会导致 f 和 g 之间的最小距离

KL Divergence 的特殊之处在于使用这个最终的目标函数作为期望。但在这里我们不能那样做,因为不能将其简化为求和形式,所以要计算上述内容,首先需要从数据中可靠地估计 g(x),模型可能是连续的,但它的数据总是离散的。使用这些数据还需要找到 g(x) 的连续密度估计, 这就是密度估计发挥作用的地方。

我们可以参数化地进行这种估计,但这里我们将重点关注 g 的非参数化估计。非参数地估计密度的一些想法可以是将直方图视为密度的估计。

如果观察的数量趋于无穷,则binwidth趋于0。直方图收敛于密度。

上述结果主要都是来自于统计基本定理。

核密度估计

下面让我们看看核密度估计是如何工作的:

  • 取一些关于 0 对称的密度 K(x)。这通常称为核函数或窗函数。
  • 选择bandwidth (平滑参数)
  • 在每个点(在观察中)叠加密度 K(x),并取所有 K(x) 的平均值。

我们可以将 f(x) 写为,

观察中每个点的所有核值的平均值,如果需要可视化,我们可以这样想上面的函数

围绕每个观察值(绿色)的核函数(黄色)在每个点取平均值以得出密度 f(x)(蓝色)的估计值,我们可以通过引入一个尺度参数来改进上述密度估计

随着h的增大,密度估计会扩散得更广,但峰值更低。小的h会让它更尖。

核函数可以选择Normal Kernel。这样可以得到

Normal Kernel的 KDE,这里的bandwidth (h) 在获得完美形状方面起着关键作用。它必须根据样本大小来选择。下面计算 r.v. 的期望值和方差。X 跟随 f(x)

KDE f(x) 的期望是期望的样本均值,所以:

上面的式子将在方差计算中进一步使用

KDE X ~ f(x) 的方差

所以在理想情况下,我们希望 h 是 n 的函数,使得 h 趋于 0,而 n 趋于无穷大,从而产生一致的方差估计量。

KDE 中最常用的内核是 Epanechnikov 内核,

核密度估计的应用

核密度估计有几个有趣的应用。比如可以从视频中减去背景。比如用于定位道路上快速移动的车辆。

基于KDE +阈值的方法给出了下面的结果。通过调整有效的阈值可以帮助识别超速车辆。

总结

核密度估计(Kernel Density Estimation,简称KDE)是一种非参数统计方法,用于估计数据样本背后的概率密度函数。KDE 的应用场景很广泛,以下是一些常见的应用场景:

  1. 数据可视化:KDE 可以用来可视化数据分布,替代直方图或箱线图等传统统计图表,让人们更清晰地理解数据的分布情况。
  2. 异常检测:KDE 可以用来检测数据中的异常值,因为异常值通常在概率密度函数上呈现出与正常数据不同的“尖峰”或“波峰”。
  3. 模式识别:KDE 可以用来识别数据中的模式,比如在地震学领域,可以用 KDE 来分析地震数据,找出是否存在特定的震级模式。
  4. 信号处理:KDE 可以用来分析信号的功率谱密度,帮助工程师诊断信号的频率特征,以便优化信号处理算法。
  5. 机器学习:KDE 可以用来构建密度估计模型,例如用于分类或聚类问题中。

https://avoid.overfit.cn/post/6cea4b95969a404aa419e28b7676c807

作者:Rishi Dey Chowdhury (RishiDarkDevil)

目录
相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33077 80
如何保证分布式文件系统的数据一致性
|
前端开发 容器
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局(上)
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局
17818 24
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36801 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24873 15
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36786 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29925 52

热门文章

最新文章