页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

密度估计在无监督学习,特征工程和数据建模之间进行了界定。一些最受欢迎和有用的密度估计技术是混合模型,例如高斯混合(sklearn.mixture.GaussianMixture)和基于邻居的方法,如核密度估计(sklearn.neighbors.KernelDensity)。在聚类的上下文中更全面地讨论了高斯混合 ,因为该技术也可用作无监督的聚类方案。

密度估计是一个非常简单的概念,大多数人已经熟悉一种常见的密度估计技术:直方图。

密度估计:直方图

直方图是一个简单的可视化数据,其中定义了仓,并且每个仓内的数据点数量都被计数。直方图的一个例子可以在下图的左上角看到:

然而,直方图的一个主要问题是,binning的选择可能对生成的可视化产生不成比例的影响。考虑上图的右上方面板。它显示了相同数据上的直方图,其中分区向右移动。两个可视化的结果看起来完全不同,并且可能导致对数据的不同解释。

直观地,也可以将直方图视为一堆块,每点一个块。通过将块堆叠在适当的网格空间中,我们恢复直方图。但是,如果不是将正常网格上的块堆叠在一起,我们会将每个块对中所代表的点集中在每个位置的总高度?这个想法导致左下角的可视化。它可能不如直方图那么干净,但是数据驱动块位置的事实意味着它是底层数据的更好的表示。

这种可视化是核心密度估计的一个例子,在这种情况下是一个顶帽子内核(即每个点的方块)。我们可以通过使用更平滑的内核来恢复更平滑的分布。右下图显示了高斯核密度估计,其中每个点对总数贡献高斯曲线。结果是从数据导出的平滑密度估计,并且作为点的分布的强大的非参数模型。

 

内核密度估计

sklearn.neighbors.KernelDensity估计器中实现了scikit-learn中的内核密度估计,该 估计器使用Ball Tree或KD Tree进行有效的查询(有关这些讨论,请参阅最近的邻居)。尽管上述示例为了简单起见使用1D数据集,但是可以以任何数量的维度执行核密度估计,尽管在实践中维度的诅咒导致其性能在高维度上降级。

在下图中,从双峰分布绘制了100个点,并显示了三个内核选择的核密度估计:

很明显,核心形状如何影响结果分布的平滑度。可以使用scikit学习核密度估计器如下:

>>> from sklearn.neighbors.kde 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])

 

这里我们已经使用了kernel='gaussian',如上所述。在数学上,内核是 由带宽参数控制的正函数H。给定这个核心形式,ÿ在一组点内的点处的密度估计由下式给出:

这里的带宽用作平滑参数,控制结果中的偏差和方差之间的折衷。大的带宽导致非常平滑(即高偏差)密度分布。小的带宽导致不平滑(即高方差)密度分布。

sklearn.neighbors.KernelDensity 实现了几种常见的内核形式,如下图所示:

这些内核的形式如下:

  • 高斯内核()kernel = 'gaussian'

  • Tophat内核()kernel = 'tophat'

     如果 

  • Epanechnikov内核()kernel = 'epanechnikov'

  • 指数内核()kernel = 'exponential'

  • 线性内核()kernel = 'linear'

     如果 

  • 余弦内核()kernel = 'cosine'

     如果 

核密度估计器可以与任何有效的距离度量一起使用(参见sklearn.neighbors.DistanceMetric可用度量列表),尽管结果仅适用于欧几里德度量标准。一个特别有用的度量是 测量球体上的点之间的角距离的 横坐标距离。以下是使用内核密度估计来对地理空间数据进行可视化的示例,在这种情况下,南美洲两个不同物种的观测分布:

核密度估计的另一个有用的应用是学习数据集的非参数生成模型,以便有效地从该生成模型中绘制新的样本。以下是使用此过程创建一组新的手写数字的示例,使用在PCA投影数据中学习的高斯内核:

“新”数据由输入数据的线性组合组成,具有给定KDE模型概率绘制的权重。

例子:

  • 简单的1D内核密度估计:在一维中简单核密度估计的计算。
  • 内核密度估计:使用内核密度估计来学习手写数字数据的生成模型并从该模型绘制新样本的示例。
  • 物种分布的核密度估计:使用Haversine距离度量来显示地理空间数据的内核密度估计示例

 

  • 无标签