核密度估计(Kernel Density Estimation)

定义
核密度估计是估计随机变量的概率密度函数的非参数方法,即一种针对连续数据的密度估计方法,并且其根据数据本身的相互关系得到,无需对数据分布做假设。
假设样本彼此独立并遵循相同的分布。给定带宽H,每个样本都由平滑的核函数拟合。某数据的密度值可以视为其他所有样本对该数据的平均影响。
 

这里以高斯kernel为例。KDE对于数据里的每一个点,都画作一个高斯分布的波。然后对波进行叠加,于是数据密集的地方,波的高度就越高,数据越稀疏的地方,波就相对矮,数据分布的就一目了然。

那么,Y轴的值具体上又代表着什么呢?

我们知道在matplotlib.pyplot.hist里,y轴为数据在某一个范围里出现的频次。Seaborn.distplot却不同,有2个参数的默认值为True,分别为kde=True和norm_hist=True. 原来,distplot对数据的进行了归一化处理。我们来看看当kde与norm_hist为False时的情况,并对比下matplotlib.pyplt.hist。

标题

标题

 可以看到,当kde与norm_hist皆为Fasle时,它的plot与matplotlib.pyplot.hist是一模一样的。表现出的是频次。

Seaborn文档介绍如下:当参数为True时,直方图的高度以密度而不是频次来表示,它是kde的必要条件。

norm_hist : bool, optional

If True, the histogram height shows a density rather than a count. This is implied if a KDE or fitted density is plotted.

然而,我们现在知道了Y轴表达密度,还是无法确切的知道具体的值能用来计算什么。其实,就像其他的概率分布图,它也是用来计算概率的。

在KDE图里,我们的y轴并不直接表达概率,我们需要计算的是曲线下方的面积。这个面积在直方图里就是宽度乘以高度。比如在上图,最左边的方块宽度约为0.1,范围从1.5-1.6,高度为0.8。那么数据分布在这里的概率就是0.1*0.8 = 0.08。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐