密度估计17 Mar 2025 | 6 分钟阅读 密度估计位于数据建模、特征工程和无监督学习的交界处。一些最受欢迎且实用的密度估计方法是基于邻近点的方法,如核密度估计 (KernelDensity),以及混合模型,如高斯混合模型 (GaussianMixture)。由于高斯混合模型可以作为无监督聚类系统使用,因此在聚类部分将更详细地讨论该主题。 大多数人已经熟悉一种流行的密度估计方法——直方图,而密度估计本身也是一个相对基本概念。 密度估计:直方图直方图是一种简单的数据可视化方法,它计算每个 bin(区间)内的数据点数量,并建立这些 bin。下图的左上角展示了一个直方图。 一维核密度估计的简便方法 直方图在可视化一维点密度时存在的问题在第一张图中有所体现。一种直观的方法是将一个单位“块”放置在规则网格上每个点上方。然而,正如上面两张图所示,选择不同的网格可能会导致对底层密度分布结构产生截然不同的解释。另一种方法是,通过将每个块的中心对齐到它所代表的点,可以得到左下角显示的估计。这是使用“矩形窗”核的核密度估计。 这个概念可以推广到各种核形状:第一张图中右下角的面板显示了相同分布的高斯核密度估计。Scikit-learn 使用 Ball Tree 或 KD Tree 结构,通过 KernelDensity 估计器,提供了高效的核密度估计。本例中的第二张图说明了可用的核。第三张图比较了一维中一百个样本分布的核密度估计。尽管本例中使用了一维分布,但核密度估计可以轻松有效地扩展到更高维度。 ![]() ![]() 但是,直方图的主要问题之一是可视化结果可能因 binning(分箱)的选择而异。请看上面图形的右上角面板。对于相同的数据,显示了一个 bin 向右移动的直方图。这两个可视化结果的外观完全不同,这可能导致对数据的理解方式不同。 直方图还可以直观地与一堆砖块进行比较,每个点一个砖块。我们通过将砖块堆叠在正确的网格空间中来恢复直方图。但是,如果我们不将砖块堆叠在标准网格上,而是将每个砖块的中心对齐到它所代表的点,并在每个位置累加总高度呢?左下角的可视化就是这种概念的结果。虽然它可能不如直方图整洁,但它能更好地表示底层数据,因为数据决定了砖块的位置。 核密度估计Scikit-learn 中的 KernelDensity 估计器使用 Ball Tree 或 KD Tree 进行高效搜索,该估计器实现了核密度估计(参见“最近邻”以了解其解释)。尽管上面的示例是在任意维度上进行的,但由于维度灾难,在高维空间中其性能可能会更好。 下图显示了从双峰分布中选择 100 个点后,三种不同核选择的核密度估计。 ![]() 可以看出,核形状如何影响所得分布的光滑度。以下是一些 scikit-learn 核密度估计器的用途: 估计物种分布的核密度这说明了一个使用 Haversine 距离度量(即点在纬度和经度上的距离)构建 Ball Tree 的示例,以对地理数据执行基于邻近点的查询(具体来说,是核密度估计)。数据集来自 Phillips 等人(2006)。该示例使用底图绘制了南美洲的国界和海岸线(如果可用)。 此示例中没有对数据进行学习;有关基于此数据集的属性进行分类的示例,请参见“物种分布模型”。它仅显示了观测到的数据点在地理坐标中的核密度估计。 输出 computing KDE in spherical coordinates - plot coastlines from coverage - computing KDE in spherical coordinates - plot coastlines from coverage ![]() 这些附加样本反映了数据的底层模型。 输出 best bandwidth: 3.79269019073225 “新”数据由输入数据的线性组合组成,其权重是根据 KDE 模型概率性地抽取的。 ![]() 示例
结论总而言之,在统计学中,直方图和核密度估计 (KDE) 都是有用的密度估计方法。直方图是一种简单易懂的数据集分布图,它将数据集划分为不同的 bin,并清晰地显示数据的频率。然而,解释可能会受到 bin 大小选择的影响,并且它可能会忽略数据中的细微模式。 另一方面,核密度估计 (KDE) 提供了更连续、更平滑的概率密度函数估计。它可以揭示数据中更精细的细节,并且不依赖于预先确定的 bin。虽然对 bin 大小的依赖性较小,但带宽和核选择很重要。 总而言之,核密度估计可以提供更平滑、更连续的估计,在捕捉数据底层模式方面可能更可靠。然而,直方图提供了一种易于理解且直接的数据分布可视化方法。数据的类型和研究的具体目标是选择这两种方法之一的主要因素。 下一主题叠加网络 |
我们请求您订阅我们的新闻通讯以获取最新更新。