近日,在学习k-d tree的过程中,遇到了“超平面”这个词。k-d树算法中用“超平面”划分空间。
根据百度百科对“超平面”的定义:
超平面是n维欧氏空间中余维度等于一的线性子空间,也就是必须是(n-1)维度。这是平面中的直线、空间中的平面之推广(n大于3才被称为“超”平面),是纯粹的数学概念,不是现实的物理概念。因为是子空间,所以超平面一定经过原点。
但是k-d tree中划分空间的“超平面”并不过原点,在经典例子中,超平面只是垂直于x,y轴的直线。
但是,仔细研究“线性空间”、“子空间”的定义,发现其要求对空间元素的加法和数乘封闭,也就意味着,必过零点。
网上对这个问题的讨论并不能找到很好的解释,我谈谈我的一些想法。
百度百科在“超平面”词条下绍了一种超平面叫“仿射超平面”:
我们定义了几种特定类型的超平面。
仿射超平面
仿射超平面是仿射空间中的代数1的仿射子空间。 在笛卡尔坐标中,可以用以下形式的单一线性方程来描述这样的超平面(至少有一个ai不是0):
仿射超平面用于定义许多机器学习算法中的决策边界,例如线性组合(倾斜)决策树和感知器。
我想这个介绍或许有商讨的空间。如果这样定义,那么b不等于0时,就不过原点,与上文定义自相矛盾。所以,我认为,仿射超平面不是一种特定类型的超平面,而是超平面的推广。而k-d tree还有机器学习算法的决策边界等提到的“超平面”,应该指的是“仿射超平面”。
PS:当然,“超平面”就是“超平面”,“仿射超平面”就是“仿射超平面”,两个概念,不能混为一谈,严谨的科学定义犯了这样的错误,让人产生误解,我觉得也挺惊讶的。所以,也可能是“超平面”有广义和狭义两个定义,而百度百科只介绍了狭义的概念,从而自相矛盾了。