distance = np.rm(point - query_point)
if distance<nearest_distance:
nearest_distance = distance
if distance>farthest_distance:
farthest_distance = distance
return nearest_distance, farthest_distance
我们还可以绘制这些距离:
最近点
最远点
距离
10⁰
10⁻¹
10⁻²
10⁻³
10⁰
10¹
10²
尺寸
使用对数刻度,我们观察到随着维数增加,最近和最远邻居之间距离的相对差异趋于减小。
这是一种非常违反直觉的行为:如前所述,由于空间体积的指数级增长,点之间非常稀疏,但同时点之间的相对距离变得更小。
最近邻的概念消失
这意味着随着空间维数的增加,距离的概念变得不那么相关和区分度较低。可以想象,对于依赖距离的机器学习算法如kNN来说,这会带来问题。
数学:n-球
我们现在将讨论一些其他有趣的现象。为此,我们需要n-球。n-球是n维中球的推广。半径为R的n-球是距离空间中心0最多为R的点的集合。
让我们考虑半径为1。1-球是线段 [-1, 1]。2-球是单位圆所限定的圆盘,其方程为x²+y² ≤ 1。3-球(我们通常称之为“球”)的方程是 x²+y²+z² ≤ 1。如你所理解的,我们可以将这个定义扩展到任何维度:
ₙ
Bₙ{x₁,. . .,xₘ;∑ x²ᵢ ≤ 1}
ᵢ₌₁
经过大量积分运算,你可以证明n-球的体积可以表达如下,其中Γ 表示伽玛函数。
πⁿ/²
Vₙ(R)=Rⁿ ────
n
Γ(─+1)
2
例如,对于R=1 和 n=2,体积是 πR²,因为 Γ(2)=1。这确实是2-球的“体积”(在这种情况下也称为圆的“面积”)。
然而,除了作为一个有趣的数学挑战外,n球的体积还有一些非常令人惊讶的特性。
随着维数n的增加,n-球的体积趋向于0。
这对于每个半径都是如此,但让我们用一些R的值来可视化这一现象。
17.5 -
n-球r=0.5
n球r=1
n-球r=1.2
15.0 -
12.5 -
10.0 -
体积
7.5 -
5.0 -
2.5 -
0.0 -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
尺寸
不同半径的n-球体积随维数增加的变化(作者制作的图片)
如你所见,它不仅趋向于0,而且它先增加然后减少到0。对于R=1,体积最大的球是5-球,并且随着R的增加,达到最大值的n值向右移动。
以下是单位n-球的体积的前几个值,直到n=10。
1 2
2
3
4
5
6
7
8
9
10
高维单位球的体积集中在其表面附近。
数学联邦政治世界观提示您:看后求收藏(同人小说网http://tongren.me),接着再看更方便。