谈谈超平面(hyperplane)

本文深入解析超平面的概念,从直线和平面出发,逐步拓展至更高维度的空间,详细阐述了超平面的定义、表示形式及在空间中的应用,包括如何通过超平面将空间点分为两部分以及计算空间内一点到超平面的距离。

本文转自http://bubblexc.com/y2011/310/

有些东西,还是说清楚的好,比如超平面(hyperplane)这个东西。

  • 直线、平面

在说超平面之前,先说说 Rn 空间中的直线和平面。给定 Rn 空间中的一点 p 和一非负向量 v ,满足

i=tv+p

的点 i 的集合称为 Rn 空间中的一条直线。上式中 t 是一个标量,向量 v 决定了该直线的方向。如图1所示:

line figure

图1:line figure illustration

相对的,给定 Rn 空间中的一点 p 和两个线性无关的向量 v,w ,满足

i=tv+sw+p

的点 i 的集合称为 Rn 空间中的一个平面。上式中 t,s 均是标量。如图2所示:

plane figure

图2:plane figure illustration

更一般的,给定 Rn 空间中的一点 p 和线性无关的向量 v1,v2,...,vk ,满足

i=t1v1+t2v2+...+tkvk+p

的点 i 的集合称为 Rn 空间的一个k维仿射子空间(k-dimensional affine subspace)。因此,一条直线就是一个1维仿射子空间,一个平面就是一个2维仿射子空间。

  • 直线的另一种表示

假设 R2 空间中的点集 i=(x,y) 满足等式

ax+by+d=0(1)

其中 a,b,d 均为标量,并且 a,b 至少有一个不为0。假设 b 不为0,则

y=abxdb

x=t,<t< ,则点集i可以表示为

i=(x,y)=(t,abtdb)=t(1,ab)+(0,db)

这其实是一条经过点 (0,db) 方向为 (1,ab) 的直线L。

进一步地,我们设 n=(a,b) ,则(1)式可以表示为

ni+d=0(2)

设取 p=(p1,p2) 为L上一点,代入上式可以得到 d=np ,则(2)式可以表示为

n(ip)=0(3)

可以看出, n 实际是直线L的法向量,并且点集 i=(x,y) 是那些与 p 的差向量与 n 正交的点。

  • 超平面

说了这么多,现在来给出超平面的定义:给定 Rn 空间中的一点 p 和一个非零向量 n 。满足

n(ip)=0(4)

的点集 i 称为经过点 p 的超平面。向量 n 为该超平面的法向量。 按照这个定义,一条直线是 R2 空间的超平面,一个平面是 R3 空间的超平面, Rn 空间的超平面是 Rn 空间 的一个n-1维仿射子空间。 n=(a1,a2,...,an),i=(i1,i2,...,in) ,则(4)式可以表示为

a1i1+a2i2+...+anin+d=0(5)

其中, d=np

很重要的一点是,利用一个超平面,我们可以将空间的点分为两部分(式(4)的值大于等于0或者小于0)。同时,利用式(4)我们可以方面的计算空间内一点到超平面的距离:设空间中一点 q q 到超平面的距离即是 qp 在向量 n 上的投影,如图(3)所示。根据

|(qp)u|=|qnpn||n|||=|qn+d|||n||

我们即可以求得 q 到超平面的距离。

q到超平面H的距离

图3:q到超平面H的距离

### 超平面分离的概念及其与感知机的关系 #### 超平面的定义 超平面是 \(R^n\) 空间内的一个 \(n-1\) 维仿射子空间。具体而言,超平面可以由线性方程 \(\omega \cdot x + b = 0\) 表示,其中 \(\omega\)超平面的法向量,\(b\) 是截距[^3]。超平面将特征空间分为两个部分,位于两部分的点(特征向量)被划分为正负两类。因此,超平面 \(S\) 被称为分离超平面(separating hyperplane)。 #### 超平面分离定理 超平面分离定理(Separating Hyperplane Theorem)表明,在特定条件下,两个不相交的凸集总可以用一个超平面进行分离[^2]。该定理的核心思想是通过找到一个合适的超平面,使得所有属于一个集合的点都在超平面的一侧,而另一个集合的点在另一侧。 #### 感知机中的超平面分离 感知机是一种二分类的线性分类模型,其目标是找到一个能够将输入空间中的实例划分为两类的分离超平面。为实现这一目标,感知机导入了基于误分类的损失函数,并利用梯度下降法对损失函数进行最优化求解[^4]。 在感知机中,超平面由公式 \(\omega \cdot x + b = 0\) 定义,其中 \(\omega\) 和 \(b\) 是需要学习的参数。训练过程中,算法不断调整这些参数,直到找到一个能够正确划分数据的超平面。对于线性可分的数据集,感知机算法能够保证收敛到一个解[^4]。 #### 超平面分离的原理 超平面分离的原理基于几何距离的概念。给定一个数据点 \(x_i\) 和其类别标签 \(y_i \in \{+1, -1\}\),如果点 \(x_i\) 被正确分类,则满足条件 \(y_i (\omega \cdot x_i + b) > 0\)。否则,该点被视为误分类点。感知机通过最小化误分类点到超平面的距离来优化参数 \(\omega\) 和 \(b\)。每次迭代中,算法选取一个误分类点并更新参数,以减少误分类的可能性[^4]。 #### 示例代码 以下是一个简单的感知机实现,展示了如何通过超平面进行分离: ```python import numpy as np class Perceptron: def __init__(self, learning_rate=0.1, max_epochs=1000): self.learning_rate = learning_rate self.max_epochs = max_epochs self.w = None self.b = None def fit(self, X, y): n_samples, n_features = X.shape self.w = np.zeros(n_features) self.b = 0 for _ in range(self.max_epochs): misclassified = False for i in range(n_samples): if y[i] * (np.dot(self.w, X[i]) + self.b) <= 0: # 如果误分类 self.w += self.learning_rate * y[i] * X[i] self.b += self.learning_rate * y[i] misclassified = True if not misclassified: break def predict(self, X): return np.sign(np.dot(X, self.w) + self.b) # 示例用法 if __name__ == "__main__": X = np.array([[3, 3], [4, 3], [1, 1]]) y = np.array([1, 1, -1]) perceptron = Perceptron(learning_rate=0.1, max_epochs=1000) perceptron.fit(X, y) print("权重 w:", perceptron.w) print("偏置 b:", perceptron.b) print("预测结果:", perceptron.predict(X)) ``` 上述代码实现了感知机的基本训练和预测功能,展示了如何通过超平面进行分离。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值