问题

什么是核密度估计?如何感性认识?

回答
好的,咱们来聊聊核密度估计(Kernel Density Estimation),试着用大白话讲讲,尽量让它听起来就像是邻居老王在跟你拉家常一样。

核密度估计是个啥玩意儿?

你想啊,咱们平时生活中,肯定会遇到一些数据,比如你家小区邻居们的身高,或者你炒菜用的油盐酱醋的量。这些数据有时候挺分散的,你很难直接说出个“大概范围”。你想知道的是,在哪一堆数据里,哪些值出现的可能性比较大,哪些值出现的可能性比较小。

核密度估计,就是一种“平滑地画出数据分布曲线” 的方法。它不像咱们以前学过的直方图那样,一块一块地把数据往“箱子”里扔,然后告诉你每个箱子里有多少数据。直方图有个问题,就是箱子的大小和位置会很大程度上影响你看到的分布形状,换个箱子,可能感觉就不一样了。

核密度估计呢,它更像是个“温柔的观察者”。它不强行把数据塞进箱子,而是用一种“平滑的、渐进的” 方式来估计数据可能出现的概率密度。

怎么个“平滑地画出曲线”法?感性认识来啦!

咱们用个生活化的例子来理解它。

想象一下,你家小区里住了好多好多人,你想知道大家身高大概是个什么分布。你不可能挨个儿给每个人量身高,然后数有多少人是160cm到165cm,有多少人是165cm到170cm……那样太麻烦了,而且你也知道,人的身高不是那么精确的,总有小数点。

现在,咱们用核密度估计的方法试试看:

1. 找个“点”来观察: 咱们先选一个身高,比如170cm。你想知道在这个身高附近,有多少人的身高可能也挺接近170cm的。

2. 用个“喇叭”或者“小帽子”来测量: 咱们给这个170cm的身高戴上一顶“小帽子”,这顶帽子有个宽度(咱们后面会说这个宽度很重要,叫做带宽)。这顶帽子就好比一个“核函数”,它代表了在170cm这个点上,你“关注”的范围有多大。帽子越宽,你关注的范围就越大,也越平滑;帽子越窄,你关注的点就越集中,看起来可能就越“尖锐”。

3. 扫描全小区: 现在,咱们去小区里挨家挨户地“测量”。对于小区里的每一个人,咱们都看他的身高。
如果一个人的身高跟咱们关注的170cm很接近,那么他就像是站在咱们这顶“帽子”的“中心”附近,他为170cm这个点的密度贡献的“权重”就比较大。
如果一个人的身高离170cm有点远,但还在咱们帽子的范围内,那他贡献的“权重”就小一点。
如果一个人的身高完全在咱们帽子的范围之外,那他就对170cm这个点的密度贡献“0”。

4. 加总起来,得到一个高度: 把所有人在咱们这顶“帽子”作用下,为170cm这个点贡献的“权重”加起来,就得到了170cm这个身高点上的“概率密度值”。这个值越高,就说明这个身高(或者说这个身高附近)出现的人越多。

5. 一步一步往前挪,画出曲线: 咱们不是只关注170cm,而是把这个“关注点”(就是戴帽子的那个位置)一步一步地往前挪,比如挪到171cm、172cm、173cm……每挪到一个新的点,就重复上面的过程:给这个人戴上帽子,扫描全小区,加总权重。这样,你就得到了一个又一个点上的密度值。把这些点连接起来,就形成了一条平滑的曲线,这条曲线就 “描绘” 了大家身高的分布情况。

感性一点说:

核函数(帽子)是什么? 它就像一个“影响器”。帽子越往中心,影响越大;越往边缘,影响越小;帽子外面就没影响了。最常见的帽子形状是钟形的,就像一个漂亮的“小山丘”。
带宽(帽子的大小)是什么? 这就像是你用“放大镜”还是“望远镜”看东西。
带宽大(望远镜): 整个图看起来就非常平滑,可能有点模糊,很多细节被“平均”掉了。就像你戴一副度数很高的老花镜,看什么都模糊,但能看到一个大概的轮廓。
带宽小(放大镜): 图看起来可能就比较“毛糙”,每个数据点附近都会有一个小“尖尖”。就像你戴一副新眼镜,看东西很清楚,但一点点的小瑕疵也看得一清二楚。
选择合适的带宽很重要! 太大看不清细节,太小又容易被噪音干扰。这就像咱们调焦一样,要找到一个舒服的视距。

核密度估计有什么好处?

平滑性: 最大的好处就是比直方图更平滑,更能反映数据背后真实的分布形状,不容易被数据点的个别波动影响。
更精细: 它不是把数据分块,而是把每个数据点的影响都“揉”进去,所以能给出更精细的密度估计。
无需预设分箱: 不需要你提前决定有多少个箱子,箱子放在哪里。

咱们再举个例子,可能更接地气一点:

想象你在一个小镇上,想知道镇上居民的年龄分布。

直方图法: 你可以把年龄分成010岁,1020岁,2030岁……这样一格一格地数。你可能会发现2030岁这个年龄段的人最多。但是,你有没有想过,也许真实情况是25岁附近的人特别多,而2025岁和2530岁的人数差不多,只是因为你划的箱子刚好把25岁这个“高峰”分开了?
核密度估计法: 你就想象,每个居民都是一个“小喇叭”。喇叭的响度(代表他影响的范围和大小)是由他自己的年龄决定的,也跟一个“整体的调音量”(就是带宽)有关。
比如,你关注某个年龄点,比如35岁。你就把镇上所有人的“喇叭”都放到35岁这个位置。
离35岁越近的人,他们的喇叭会更“响亮”地在35岁这个点发出声音,贡献的“音量”就大。
离35岁远一点的人,他们的喇叭也会发出声音,但声音会小一些。
那些年龄离35岁非常远的人,他们的喇叭对35岁这个点的贡献几乎可以忽略不计。
你把所有人的贡献加起来,就得到了35岁这个年龄点的“音量强度”,也就是年龄密度。
然后你不断地移动这个“关注点”(35岁),比如移到36岁、37岁……这样就能画出一条“居民年龄密度曲线”。这条曲线能告诉你,哪个年龄段的人最多,哪个年龄段最少,而且是平滑过渡的。

总结一下:

核密度估计,就是一种用“平滑的权重” 来估计数据分布密度的方法。它通过给每个数据点套上一个“核函数”(就像一个带着特定形状和大小的“小帽子”或“喇叭”),然后在每个点上叠加这些核函数的作用,最终得到一个平滑的概率密度曲线。 核函数 的形状决定了数据点的影响方式,而 带宽(或者叫平滑度参数)则决定了这种影响的范围和最终曲线的平滑程度。它就像是给分散的点们盖上了一层“概率的薄纱”,让我们能更清晰地看到数据的整体轮廓和可能的分布规律。

希望这么讲,你能有点感觉了!它就是一种很巧妙的统计工具,帮助我们“看清”数据背后的样子。

网友意见

user avatar

谢邀。说点简单的方便理解的。

核密度估计其实是对直方图的一个自然拓展。

首先考虑一下密度函数的概念,很自然的可以想到,密度函数就是分布函数的一阶导数。那么当我们拿到一些数据的时候,是不是可以通过估计分布函数的一阶导数来估计密度函数呢?一个最简单而有效的估计分布函数的方法是所谓的「经验分布函数(empirical distribution function)」:

即,F(t)的估计为所有小于t的样本的概率。可以证明,这个估计是almost surely收敛的,有很好的统计性质。如果画下来,应该是下图蓝线的样子:

(图片来自

Empirical distribution function


可是这个EDF不是可导的,不够光滑,因而不能通过对EDF的一阶导数算密度函数。那么如何估计密度函数呢?

我们一般看密度的时候,会首先画一个直方图,像下图:

一个很自然的想法是,如果我们想知道X=x处的密度函数值,可以像直方图一样,选一个x附近的小区间,数一下在这个区间里面的点的个数,除以总个数,应该是一个比较好的估计。用数学语言来描述,如果你还记得导数的定义,密度函数可以写为:

我们把分布函数用上面的经验分布函数替代,那么上式分子上就是落在[x-h,x+h]区间的点的个数。我们可以把f(x)的估计写成:

那么一个很自然的问题来了,h该怎么选取呢?

给定样本容量N,h如果选的太大,肯定不符合h趋向于0的要求。h选的太小,那么用于估计f(x)的点实际上非常少。

这也就是非参数估计里面的bias-variance tradeoff:如果h太大,用于计算的点很多,可以减小方差,但是方法本质要求h→0,bias可能会比较大;如果h太小,bais小了,但是用于计算的点太少,方差又很大。



所以理论上存在一个最小化mean square error的一个h。h的选取应该取决于N,当N越大的时候,我们可以用一个比较小的h,因为较大的N保证了即使比较小的h也足以保证区间内有足够多的点用于计算概率密度。因而,我们通常要求当N→∞,h→0。比如,在这里可以推导出,最优的h应该是N的-1/5次方乘以一个常数,也就是。对于正态分布而言,可以计算出c=1.05×标准差。

另外,我们知道之前的经验分布函数每个点的收敛速度都是√N的,而这里,因为有h的存在(观察估计式,分母上是nh而非n,而nh=O(N^{-4/5}))。所以收敛速度比一般的参数收敛速度要慢很多。

上面的这个估计看起来还可以,但是还不够好,得到的密度函数不是光滑的。观察上面的估计式子,如果记,那么估计式可以写为:

密度函数的积分:

因而只要K的积分等于1,就能保证估计出来的密度函数积分等于1。

那么一个自然的想法是,我们是不是可以换其他的函数形式呢?比如其他的分布的密度函数作为K?

比如,我可以用标准正态分布的密度函数作为K,估计就变成了:

这个密度函数的估计就变得可导了,而且积分积起来等于1。直觉上,上式就是一个加权平均,离x越近的x_i其权重越高。而最开始的估计方式则是在区间内权重相等,区间外权重为0。

当然,这里还是有h的选取问题,其原理跟上面是一样的。也因此,一般我们会把h叫做「窗宽(bandwidth)」。关于窗宽的选择方法有很多,可以plug-in,也可以用cross-validation,具体就不做赘述了。

此外还可以扩展到多维,即

其中d为x的维数,K为多维的kernel,一般为d个一维kernel的乘积。

上面的蓝色线条就是kernel density的结果。

有了density的估计,可以更进一步,做非参数的回归。如果我们有:

其中u与x独立,可以得到:

其中分子(这里需要用到核函数K的对称性):

最终就得到了非参数回归,或者核平滑(kernel smoothing):

其中对于核函数K还有很多其他要求,以及高阶Kernel等等,就不一一介绍啦。感兴趣的可以参考Qi Li的书。

user avatar

当样本直方图看上去乱成一锅粥,实在找不到一个已知分布写得出分布函数的时候,何不把样本本身看成是一个分布,然后总体的分布看作先均匀分布选样本,然后在以样本为期望的分布上取值的过程呢?

把这个二元随机变量在最终取值上求边缘分布就是kernel methed的表达式了。

就是这么粗暴和无理,但是比没有好做不出来还是好多了。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有