我正在阅读 Kevin Murphy 的书:机器学习-概率视角。在第一章中,作者解释了维度的诅咒,有一部分我不明白。作为一个例子,作者说:
考虑输入沿 D 维单位立方体均匀分布。假设我们通过围绕 x 增长一个超立方体来估计类标签的密度,直到它包含所需的分数的数据点。这个立方体的预期边长是.
这是我无法理解的最后一个公式。似乎如果你想覆盖 10% 的点,那么每个维度的边长应该是 0.1?我知道我的推理是错误的,但我不明白为什么。
我正在阅读 Kevin Murphy 的书:机器学习-概率视角。在第一章中,作者解释了维度的诅咒,有一部分我不明白。作为一个例子,作者说:
考虑输入沿 D 维单位立方体均匀分布。假设我们通过围绕 x 增长一个超立方体来估计类标签的密度,直到它包含所需的分数的数据点。这个立方体的预期边长是.
这是我无法理解的最后一个公式。似乎如果你想覆盖 10% 的点,那么每个维度的边长应该是 0.1?我知道我的推理是错误的,但我不明白为什么。
这正是高维距离的意外行为。对于 1 维,您有区间 [0, 1]。10% 的点位于长度为 0.1 的段中。但是随着特征空间维数的增加会发生什么?
该表达式告诉您,如果您想要 5 个维度的 10% 的点,您需要有 0.63 的立方体长度,10 个维度的 0.79 和 0.98 的 100 个维度。
如您所见,为了增加维度,您需要看得更远才能获得相同数量的点。更重要的是,随着维数的增加,大多数点都在立方体的边界上。这是出乎意料的。
我认为主要需要注意的是表达式
一开始真的很陡。这意味着您需要包含一定体积的一部分的边缘大小将急剧增加,特别是在开始时。即你需要的边缘会变得非常大增加。
为了更清楚地说明这一点,请回忆墨菲展示的情节:
如果您注意到,对于,斜率非常大,因此,函数在开始时增长非常陡峭。如果您采用以下导数,则可以更好地理解:
由于我们只考虑增加维度(即整数值),我们只关心整数值. 这意味着. 考虑边缘的表达式如下:
我们正在提出的通知到小于 0 的幂(即负数)。当我们将数字提高到负幂时,我们在某些时候会做互惠(即)。对已经很小的数字做倒数(回想一下因为我们只考虑体积的一部分,因为我们在做 KNN,即总数中最近的数据点) 表示该数字将“增长很多”。因此,我们得到了期望的行为,即增加功率变得更加负,因此,所需的边缘增长很多取决于有多大增加指数。
(请注意与除法相比呈指数增长这很快变得微不足道)。
是的,所以如果你有一个单位立方体,或者在你的情况下是一条单位线,并且数据是均匀分布的,那么你必须走 0.1 的长度才能捕获 10% 的数据。现在,随着您增加维度,D 增加,这会降低功率并且 f 小于 1,将增加,这样如果 D 变为无穷大,您必须捕获所有立方体,e = 1。
我认为对于 kNN 距离起着更大的作用。正如Bernhard Schölkopf 所说, “高维空间是一个孤独的地方”。(超)立方体发生的事情类似于点之间的距离发生的事情。随着维度数量的增加,最近距离与平均距离之间的比率会增加——这意味着最近的点几乎和平均点一样远,那么它的预测能力只比平均点稍微高一点。这篇文章很好地解释了它
Joel Grus 在从头开始的数据科学中很好地描述了这个问题。在那本书中,他计算了维数增加时维空间中两点之间的平均距离和最小距离。他计算了 10,000 个点之间的距离,维度的数量从 0 到 100 不等。然后他继续绘制两点之间的平均距离和最小距离,以及最近距离与平均距离的比率(Distance_Closest / Distance_Average) .
在这些图中,Joel 表明最近距离与平均距离的比率从 0 维时的 0 增加到 100 维时的 ~0.8。这显示了使用 k 近邻算法时维数的基本挑战;随着维度数量的增加以及最近距离与平均距离的比率接近 1,算法的预测能力会降低。如果最近的点几乎和平均点一样远,那么它的预测能力只比平均点稍微高一点。