核密度估计——从直方图到核密度(核函数)估计_带宽选择

参考

核密度估计(KDE)原理及实现-CSDN博客

机器学习算法(二十一):核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区

引言

在统计学中,概率密度估计是一种重要的方法,用于估计连续型随机变量的概率密度函数。与基于假设的参数方法不同,概率密度估计是一种非参数方法,能够对数据进行平滑估计。其核心目的是通过对观察数据的平滑处理来揭示其潜在的分布特性,尤其在数据分布未知或没有假设具体分布模型时,概率密度估计成为理解数据基本特征的重要手段。

概率密度估计方法 可以分为直方图密度估计 和核密度估计 两种。其中,直方图密度估计将数据划分为若干区间,通过计算每个区间内的频数来近似表示概率密度,是一种简单而直观的方法。而核密度估计则通过将每个观测值与一个核函数进行加权叠加,得到一个连续平滑的概率密度函数,用于更精细地描述数据的分布特性。

一元密度估计在描述数据集中趋势、分布状况及多峰情况方面非常有效。这种方法在探索数据特征 时提供了一种可靠且灵活的工具,能够帮助研究者理解数据的内在结构,尤其是在数据包含多样性和异常值时,密度估计的方法更显优势。因此,密度估计在统计分析、数据挖掘和机器学习等领域得到了广泛的应用。

一.直方图密度估计

在直方图密度估计中,如何选择合适的区间数量(也称为组数)是一个关键问题。

Sturges准则 是一种常用的方法,用于确定直方图的最佳区间数量。Sturges准则的核心思想是,当数据样本量较小时,通过对数缩放的方法使得区间数量适中,以避免过度平滑或过度分割数据。这种方法适用于数据呈近似正态分布的情况,能够有效地平衡直方图的平滑性和分辨能力。然而,当样本量较大或者数据分布偏离正态分布时,Sturges准则可能会显得不足,产生较少的区间,从而导致直方图无法很好地捕捉数据的细节特征。

为了解决这一问题,研究者们还提出了其他区间选择准则,例如Freedman-Diaconis准则 和Scott准则 ,这些方法在处理具有不同分布特征的数据时能够提供更为灵活和精确的区间划分。

1.1 Sturges准则

Sturges准则的核心思想是,当数据样本量较小时,通过对数缩放的方法使得区间数量适中,以避免过度平滑或过度分割数据。 这种方法适用于数据呈近似正态分布 的情况,能够有效地平衡直方图的平滑性和分辨能力。Sturges准则的思想是通过样本总数的对数来限制分组数,以保持合理的分布假设。在一些特殊情况下,如样本来自二项分布(Binomial)或其他复杂分布时,可以使用这个准则进行分组。Sturges准则的分组区间的最佳宽度可以通过如下公式计算:

其中 R 表示样本的极差,n 表示样本大小 。通过这个公式,区间的宽度主要依赖于样本的大小,而非数据的实际分布。这种选择方式适用于从对称或单峰的总体中抽取的数据,但在某些情况下(如偏态分布或多峰分布),该准则可能并不适用。
1,3为默认分组的直方图;2,4是用Sturges准则

如何通过直方图来估计数据的密度?

当样本量为 n=1000,并基于对样本的直方图分组来估计相应的密度值。首先,为了从直方图中重新得到密度估计,需找到包含所关心点的区间,并计算相应的组频率。

在默认的直方图中,x0=0.1 位于第 7 组,其中密度 f1(0.1)=0.38。而在 Sturges 分组的直方图中,x0 在第 6 组,f2(0.1)=0.3889306。换句话说,密度估计是通过分组加权得到的相对频率。结果显示用默认直方图密度估计0.1的概率密度为f1(0.1)=0.38,如果用Sturges 分组的直方图估计0.1的概率密度f2(0.1)=0.3889306。这两个估计值与理论标准正态密度的值 ϕ(0.1)=0.3969525 非常接近,但是用Sturges 分组的直方图估计的结果更接近理论值,说明密度估计的效果相对较好。


使用默认分组和Sturges准则进行直方图密度估计(部分代码与结果图)

1. 2 Scott 正态参考准则

Scott 正态参考准则 用于选择最优(或较好)的光滑参数,以使得估计的均方误差最小 。均方误差(MSE)用于度量估计函数 f(x)与真实密度函数 f^(x)之间的偏差。MSE 的定义如下:

为了选择最佳带宽 h ,需要使得 MISE 最小化。 根据 Fubini 定理可以得到:

为了使得 MISE 最小,选择最优带宽 :

这一带宽的选择使得 Asymptotic MISE(渐近 MISE)达到最小值:

由于密度估计中的 f′′(x) 是未知的,因此无法直接通过上述公式计算最优带宽。Scott 提供了一个被称为"正态参考准则"的估计方法,用于在正态分布假设下获得合理的带宽。根据正态参考准则:

其中是数据标准差的估计。 当假设数据来自正态分布时(也可以理解为如果当样本量呈现比较明显的对称单峰,也可以考虑使用这个准则),可以通过经验公式 来选择合适的带宽。
使用Scott 正态参考准则分组和R中默认的'Sturges'准则进行直方图密度估计

不难发现直接使用breaks = 'scott'呈现的分组如蓝色的直方图显示,与我们根据经验准则选择的带宽不同(使用此准则时注意不要直接用R包里面的就行)。根据经验公式选择的带宽使得分组更细 ,使得数据的密度估计更平滑、准确。

1. 3 Freedman-Diaconis 准则

如上面的数据集,我们可以很明显的看到数据集存在异常值 ,如果我们想尽量减小异常值的影响,就可以考虑Freedman-Diaconis 准则。

Freedman-Diaconis 准则,它是一种用于选择直方图的最佳组距(带宽)的标准,特别是在数据包含异常值或偏态时, Freedman-Diaconis准则通常被认为更为稳健 。Freedman-Diaconis准则旨在根据数据的四分位距(IQR,Interquartile Range)来选择最佳的组距(带宽)。具体公式如下:

h 表示组距(带宽),是确定每个直方柱的宽度的关键参数。IQR 为样本四分位数间距,即数据在第 75 个百分位数与第 25 个百分位数之间的范围。IQR 对异常值(极端值)更加稳健,因此在数据包含离群值时,Freedman-Diaconis准则是更合理的选择。n表示样本量。Freedman-Diaconis准则中,组距与样本量的三次根成反比,即随着样本量增加,组距变窄,使直方图的分辨率更高。

可以看到使用F-D准则,可以让异常值更远离我们的主要数据 ,与Scott 正态参考准则进行比较,Scott 正态参考准则将数据分为9组,F-D准则将数据分为10组(其中有一组频数为0),在数据包含较多离群值或数据分布不服从正态假设时,F-D准则异常值更加鲁棒。

1. 4 频率多边形密度估计

频率多边形是对直方图的扩展 和进一步的平滑处理方法。每个直方图的顶点被连接起来,形成一条连续的折线,这样能够更直观地展现数据的密度变化趋势。 在频率多边形的基础上,可以进一步引入核密度估计来得到更加精细的分析结果。这种方法对数据分布的理解提供了一种简化和连续的表示形式,特别适用于需要对数据分布进行更平滑的分析场景。

给出了频率多边形密度估计的最佳组宽的计算方法:

其中**,σ 表示数据的标准差,n 表示样本量。** 这个公式用于估计频率多边形的最佳组宽,以确保密度估计更加准确和平滑。如果是一个明显的偏态分布,可以使用 Scott 的方法对组宽进行修正。给出了一个计算组宽的公式:

该公式通过乘以一个因子来得到适当且更小的组宽,从而更好地应对偏态分布。类似地,如果样本的尾部比正态分布更陡峭,那么可以推导出一个"峰态调整"的方法,以减少组宽,从而更精确地反映样本的密度特征。

直方图尽管可以有效地描述数据的频率分布,但由于每个组之间是离散的,所以它在描述数据分布的连续性方面存在一定的局限性。而频率多边形通过将各个组的顶点相连,使得最终得到的密度估计曲线看起来更加连续和平滑,从而更好地反映了数据的整体分布趋势。

我们需要了解密度函数 (PDF)的一个重要性质:在整个定义域上的积分必须等于1。

通过积分来验证密度估计的方法。

我们可以使用插值函数approxfun来对频率多边形的估计进行插值,然后使用integrate函数对其进行积分 ,计算其在整个定义域内的总和是否等于1。

上方的代码展示了这一过程:首先通过approxfun函数创建了插值函数fpoly,然后使用integrate函数对其进行积分。在输出中我们可以看到积分的结果非常接近1,并且误差极小 ,这就验证了这个频率多边形密度估计符合概率密度的基本性质。 如果积分的结果与1相差较大,那么就说明我们的密度估计存在一些问题,可能是由于数据分布的异常或者在估计过程中的计算误差。这样一来,验证积分结果是否等于1就成为了检查密度估计准确性和可靠性的重要步骤。最后,在频率多边形密度估计的应用中,我们不仅要关注曲线形态是否合理,还必须通过数学手段验证它的正确性,确保它符合概率分布的要求。这对于我们在实际数据分析中保证模型的可靠性至关重要。

题外话:

你肯定能感受到带宽选择 h 的重要性,

后面到核密度估计,

ta会更重要!!!!!!!

1. 5 平均移动直方图(Average Shifted Histogram, ASH)

ASH 方法 是一种通过对直方图进行平移并取平均值 来计算概率密度估计的非参数方法。相比于简单的直方图,ASH 能有效减少在组距选择上的误差,并得到一个更为平滑的密度估计。ASH 密度估计涉及将数据划分为多个区间,然后通过计算每个区间的频数并对这些区间进行平移得到的平均值。具体地:

(a)将原始样本分组,并计算每个组的频数。

(b) 通过设定多个平移区间 m,对原始分组位置进行移动,形成多组重叠直方图。

(c) 最后对每个移动后的直方图求均值,形成最终的 ASH 密度估计。

例子

对样本大小 n=100进行估计,用四个不同的直方图宽度(分别为 0、0.25、0.5 和 0.75)计算每个直方图中的区间计数(breaks)和 counts。找到包含 x=0.2x = 0.2x=0.2 的区间,进行求平均值计算,计算公式为:

或者通过构造一个网格宽度为 δ=h/m=0.25 的子区间构成的网来计算。点 x=0.2在区间 (−0.75,0.25),(−0.5,0.5),(−0.25,0.75),(0,1] 中,对应着第 14 个到第 20 个子区间,分组计数为 1:12 13:24 25:35。给出一般情况下 tj之间估计密度的加权平均公式:


example

可以看到,通过加权函数可以简化计算,要求左右两边各有 m−1 个空的分组。

二. 核密度估计

2.1理论推导

通过上面内容可以理解如下:

累积分布函数(CDF) F(x)=P(X≤x),用于描述随机变量小于或等于某个值 x 的概率。对于任意给定的数据集,我们可以通过样本来估计其分布函数,定义为:

其中,n 表示样本总数。

为了得到概率密度函数,可以通过定义差商的极限:

这相当于取样本数据在点 xxx 附近的变化率,以此估计其密度。我们可以通过将区间分割来估计概率密度:

其中,h 为带宽参数,表示区间的宽度。可以使用卷积核函数对密度进行平滑:

这里用到的核函数为单位矩形函数,取值为 1 当 ∣x−xi∣<1时,否则为 0。如果我们定义一个均匀分布的核函数 k(x),如下所示:

那么均匀核密度估计公式可以表示为:

这是利用核函数进行加权平均,以平滑估计数据的分布特性 。

带宽参数 h 控制核函数的宽度,决定了平滑程度。(非常重要!!!!!!!!)

核函数 K(t) 的五个性质:

2.2核密度估计

K(.)为核函数(非负、积分为1,符合概率密度性质,并且均值为0),h>0为一个平滑参数,称作带宽(bandwidth),也看到有人叫窗口。有很多种核函数,[uniform,triangular, biweight, triweight, Epanechnikov](#uniform,triangular, biweight, triweight, Epanechnikov),normal,等。

各种核函数的图像如图2.1:
2.1

图 2.2 中展示了对标准正态分布的 100 个样本点使用不同的核函数进行核密度估计的结果,带宽固定为 h=0.5 ,**高斯核(Gaussian)**以红色虚线显示。高斯核具有平滑连续的特性,因此估计的曲线也是相对光滑的;Epanechnikov 核以蓝色虚线显示,通常被认为是最优的核函数,因为它在均方误差意义下的效率最高;矩形核(Rectangular)以绿色 虚线表示,估计结果呈现出明显的块状特征,不够平滑;三角核(Triangular)以紫色 虚线显示,估计相对平滑,但比高斯核略差;余弦核(Cosine)以橙色虚线显示,也能较好地反映数据的分布。不同核函数的曲线表现出不同的平滑效果,但大部分曲线最终都在正态分布上表现良好。
2.2

图 2.3 展示了对标准正态分布的 100 个样本点,在高斯核下使用不同带宽进行核密度估计的结果。带宽较小(h=0.05),核密度估计曲线非常不平滑,表现出对每个样本点的敏感性,出现了过拟合。 带宽适中(h=0.5),估计曲线较为平滑,能较好地反映数据的整体分布。带宽进一步增大(h=1),曲线变得更加平滑,细节减少,整体特征保留。带宽较大(h=2),估计的曲线过于平滑,丢失了部分数据的细节。

可以看出选择不同的核函数对于核密度估计的影响没有选择带宽大小的影响大。怎么选择一个合适的带宽也是一个值得考虑的问题。

在实际中,样本分布不一定是正态的,因此有时候需要选择一个更加鲁棒的带宽估计公式。Silverman 提出了一个缩减带宽的公式:

其中 S为样本标准差,IQR为四分位距(Interquartile Range),使用最小值 σ 是为了确保带宽的选择既能反映样本的整体特征,也能够对异常值和极端值具有一定的鲁棒性 。则在积分均方误差(IMSE)最小准则下的带宽为:

(类似于刚刚第一部分直方图的F-D准则)

Silverman 指出,在大多数情况下,这个缩减的带宽是一个很好的起点,即使样本分布不是正态的,它仍然能够提供一个较好的平滑效果。这使得该带宽选择方法在许多应用中都比较实用。带宽 h 的缩减有助于在存在离群值时,使得估计结果不至于受到极端数据点的过度影响。


用两种带宽计算方式,进行来自双峰分布的离散数据的核密度估计

在样本数量较少的情况下(n=6),使用不同核函数进行核密度估计的效果,带宽固定为 h=2.5。样本点为:-6.66,-9.27,0.88, 11.27,5.20, 5.12,结果如图2.4所示。核密度估计的蓝色实线 代表整体的密度估计 ,而红色虚线 表示每个数据点对核函数的贡献 。可以看到,不同的核函数曲线形式不同,但总体趋势相似。

使用高斯核函数的核密度估计。高斯核是一种平滑且对称的核函数,在很多情况下是默认的选择。余玹核函数在边界处逐渐收敛到 0,相比高斯核,余弦核在某些位置的贡献稍微集中一些,呈现出一种周期性的光滑趋势。使用埃潘尼切尼科夫核的核密度估计,在理论上具有最小的均方误差(IMSE),在积分均方误差意义下是最优的。核函数的选择则取决于数据特性和具体需求,高斯核通常是默认选择,但其他核函数在某些情况下可以提供更好的结果,如 Epanechnikov 核在均方误差意义下是最优的。

相关推荐
在所不辞兄34 分钟前
【零基础学智能仿真-63】ABACUS作业工具与MCP接口
人工智能·深度学习·神经网络·机器学习·智能仿真
楚山之石40 分钟前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
blackappleD1 小时前
百度 Unlimited OCR 2 拆解:SR-SWA 如何让百页文档的 KV 缓存不再涨
人工智能·llm
数字新视界1 小时前
国产动环数据库在智能机房环境监控中的应用与优势分析
大数据·人工智能·数据中心·机房管理·模块化机房
holly就是我1 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
雨中飘荡的记忆1 小时前
额度又见底了?这个开源项目,给 AI 编程助手接上 61 家"加油站"
人工智能
天远Date Lab1 小时前
零信任架构实战:基于天远企业年报信息核验构建自动化商业保理财务与社保穿透评估网关
人工智能·架构·自动化
EnCi Zheng1 小时前
后端怎么把AI接口稳定安全低成本接进业务:超时重试、密钥隔离与成本熔断清单
人工智能·后端·安全·架构·api
loulanyue_1 小时前
给概率大模型套上确定性缰绳:GraphRAG、神经符号与知识超图重构可信AI底座——读陈华钧杨博等CNCC2026第十届知识图谱论坛实录
人工智能·rag
古法老登瞎折腾2 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp