前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >核密度估计KDE

核密度估计KDE

作者头像
生信修炼手册
发布2021-04-29 17:03:48
2.2K0
发布2021-04-29 17:03:48
举报
文章被收录于专栏:生信修炼手册生信修炼手册

对样本的分布情况进行研究是最基本的数据分析技能,研究方法可以分为以下两大类

1. 参数估计,根据经验假设数据符合某种特定的分布,然后通过抽样的样本来估计总体对应的参数,比如假设高斯分布,通过样本来估计对应的均值和方差

2. 非参数估计,不同于参数估计,该策略对于总体分布没有任何事先的假设,完全从抽样的样本出来来研究数据分布的特征。核密度估计就是属于该策略,全称为Kernel Density Estimation,缩写为KDE

对于数据分布,最简单的做法就是绘制直方图了,示例如下

通过直方图上的形态来判断样本分布,但是直方图有着诸多的限制。首先就是直方图非常的离散,不够光滑,仅能反映几个特定区间内的样本分布。其次,该方法对区间大小非常敏感,不同取值会呈现不同的效果,示例如下

最后直方图的可视化方式也仅仅适用于一维或者二维的数据,对于高维数据,无法适用。

相比直方图,核密度估计通过离散样本点来的线性加和来构建一个连续的概率密度函数,从而得到一个平滑的样本分布,以一维数据为例,核密度估计的公式如下

f表示总体的概率密度函数,h是一个超参数,称之为带宽,或者窗口,N表示样本总数,K表示核函数。和SVM中的核函数一样,核函数可以有多种具体形式,以最常用的高斯核函数为例,公式如下

h参数通过影响核函数中自变量的取值来控制每个样本的相对权重,公式如下

以一个6个样本的一维数据为例,具体取值分别为1,2,3,4,7,9,使用高斯核函数,带宽h设置为1,则KDE对应的概率密度函数如下

通过图表可以更进一步看到,抽样的6个离散值与总体分布的关系

对于KDE方法而言,h参数的选择对结果的影响较大,以高斯核函数为例,不同的h对应的形状如下

带入到概率密度函数中,不同样本对应的系数值就会不一样,所以说h控制了样本的权重。在sickit-learn中, 提供了多种核函数来进行核密度估计,图示如下

对于不同的核函数而言,虽然会有一定的影响,但是效果没有h参数的影响大,示例如下

以高斯核函数为例,具体用法如下

代码语言:javascript
复制
>>> from sklearn.neighbors import KernelDensity
>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(X)
>>> kde.score_samples(X)
array([-0.41075698, -0.41075698, -0.41076071, -0.41075698, -0.41075698,
       -0.41076071])
>>> np.exp(kde.score_samples(X))
array([0.66314807, 0.66314807, 0.6631456 , 0.66314807, 0.66314807,
       0.6631456 ])

作为研究样本分布的一种非参数方法,KDE可以得到更加平滑的连续型概率密度分布,而且可以处理高维数据,非常的好用。‍

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档