核密度估计 KDE 和累积分布函数 CDF
核密度估计
概率密度(probability density): 概率密度是观测值与其概率之间的关系。一个随机变量的某个结果可能会以很低的概率出现,而其他的结果可能概率会比较高。
概率密度的总体形状被称为概率分布 (probability distribution),常见的概率分布有均匀分布、正态分布、指数分布等名称。
对随机变量特定结果的概率计算是通过概率密度函数来完成的,简称为PDF (Probability Density Function)。
可以通过概率密度函数来判断一个样本的可信度高低,进而判断这个样本是否是异常值。此外,如果输入数据服从某个分布也需要用到概率密度函数。
但是通常我们是不知道一个随机变量的PDF的,因此我们需要不断去逼近这个PDF,而逼近的这个过程就是概率密度估计。
在某些情况下,一个数据样本可能不像一个常见的概率分布,或者不容易用某种分布来进行拟合,尤其是当数据有两个峰(双峰分布)或多个峰(多峰分布)时。这种情况下需要使用 非参数密度估计。
其实非参数密度估计还是有参数的,只不过这个参数和参数密度估计中的参数有所不同。后者的参数是可以直接控制分布情况的,而且参数数量通常是预设好的,例如正态分布的参数就两个:均值和方差。而非参数密度估计其实是使用所有样本来进行密度估计,换句话说每个样本的观测值都被视为参数。常用的估计连续随机变量概率密度函数的非参数方法有核平滑 (kernel smoothing),或核密度估计,简称KDE (Kernel Density Estimation)。
KDE其实就是一个数学函数,它返回随机变量给定值的概率。Kernel(核函数)能够有效地平滑或插值随机变量结果范围内的概率,使得概率和等于1。Kernel根据数据样本的观测值与请求概率的给定查询样本之间的关系或距离,对数据样本中观测值的贡献进行加权。
核密度估计 (Kernel Density Estimation, KDE) 是采用平滑的峰值函数 (“核”) 来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟,含义类似于数据直方图。
核密度估计 (Kernel density estimation),是一种用于估计概率密度函数的非参数方法,为独立同分布的个样本点,设其概率密度函数为,核密度估计如下:
其中为核函数(满足性质:非负、积分为 1,符合概率密度性质,并且均值为 0);为一个平滑参数,称作带宽 (bandwidth) 或者窗口;
有很多种核函数,uniform,triangular, biweight, triweight, Epanechnikov,normal 等,函数形式如下:
核密度估计其实就是通过核函数(如高斯)将每个数据点的数据+带宽当作核函数的参数,得到N个核函数,再线性叠加就形成了核密度的估计函数,归一化后就是核密度概率密度函数了。
累积分布函数
从数学上来说,累积分布函数 (Cumulative Distribution Function, 简称 CDF) 是概率分布函数的积分,而在绘制累积分布函数的时候,由于真实的概率分布函数未知,因此往往定义为直方图分布的积分:
与直方图、核密度估计相比,累积分布函数存在以下几个特点:
- 累积分布函数是 X 轴单调递增函数。
- 累积分布函数更加平滑,图像中噪音更小。
- 累积分布函数没有引入带宽等外部概念,因此不会丢失任何数据信息。对于给定的数据集,累积分布函数是唯一的。
- 累积分布函数一般都经过归一化处理,单调递增且趋近于 1。
实例
以-4 到 4 之间分布的 10000 个数据点为例,绘制成直方图,核密度估计和累积分布函数如下所示:
直方图
核密度估计
累积分布函数