1. 直方图

Python中直方图Y轴有多种。其中,(标准)直方图的Y轴是频数。X轴上的每一段,是一个分组。有

每个分组的数据量 = 组距*频数

例如,在对比图中,直方图的高分别为1/12,2/12,1/12,0,1/12,1/12.宽度为2.图源来自WIKI。
在python3中,norm_hist为True,则直方图的高度默认为density(密度),而非count(次数)。在含有KDE的图像中,默认为True。用于概率密度的直方图的总面积始终归一化为1。


2.KDE 核密度估计

KDE就是对每个样本点进行处理,得到若干个核函数,再线性叠加且保证最后曲线下的面积为1。比如,有样本点(-2.1 -1.3 -0.4 1.9 5.1 6.2)。

那么,分别将-2.1,-1.3,-0.4,1.9,5.1,6.2的值,与标准差(带宽)为2.25代入,得到6个均值不同,标准差相同的高斯函数,再进行线性叠加。并处理,使面积为1,如对比图。进行公式推导

python 核密度图的纵坐标表示什么 核密度图的峰值大小_直方图

h是带宽。除以N是为了计算密度。括号前的1是大写的1,判断符合条件不。当然,你也可以用[F(x+h)-F(x)]/h来推断,接下来把分母上的2去掉就可以。这个更简单,不过懒得打,意思到了就行。而且反正这个是来模拟密度的,一些曲线下面积为1的核函数符合要求(曲线没有在x轴下方的;核函数还对称,可以控制峰值),就用现成的搞。

python 核密度图的纵坐标表示什么 核密度图的峰值大小_统计学_02


注意下,是标准正态分布的密度函数。h在这里是带宽,也是标准差。常见的核(密度)函数有:

python 核密度图的纵坐标表示什么 核密度图的峰值大小_直方图_03

请注意:

  • 高斯核的带宽(h)通常为标准差【按照公式对应来看,h在python 核密度图的纵坐标表示什么 核密度图的峰值大小_核函数_04的位置处】;只有一个自变量直接代进去算(默认),两个要做减(二范数)。
  • 盒内核和Epanechnikov内核在有限范围之外为零,而高斯内核在任何地方都非零,但在有限域外可忽略不计。 事实证明,KDE产生的曲线并不依赖于内核函数的特定选择【因为最后要线性相加和归一】,所以我们可以自由地使用最方便的内核。 因为它很容易使用,高斯内核是最广泛使用的。
  • 构建KDE需要做的事情:首先,我们必须通过适当地移动内核来移动每个点的位置。 例如,函数K(x-xi)将在xi处具有峰值,而不是0.其次,我们必须选择内核带宽来控制内核函数的扩展。 带宽越窄,峰越陡。

3.对比

python 核密度图的纵坐标表示什么 核密度图的峰值大小_python 核密度图的纵坐标表示什么_05


图片是从wiki上下载的。右边的图,蓝色线还没有除以n,所以面积不是1。通过对比图可以知道,核密度估计的平滑度(与直方图的离散度相比)对于连续随机变量,核密度估计更快地收敛到真实的基础密度。


4.延伸

  • 为啥高斯核可以把特征维度上升到无限维?
  • 核函数和映射的关系?
    —— 仅供参考FYI

    x是列向量。这么长一段不看也无所谓,总之就是说,核技巧(kernel trick)使得不用选映射就可以直接在原始样本空间计算映射后的内积。极大地化简了运算。不用担心映射存在与否,因为任何一个核函数都隐式地定义了一个再生核希尔伯特空,必然可以找到对应的映射。