线性可分支持向量机

本文介绍了线性可分支持向量机(SVM)的基本思想,通过最大化几何间隔寻找最佳超平面,用于线性可分数据的分类。在二维和高维空间中解释了超平面的定义,并讨论了函数间隔和几何间隔的概念,以及它们在选择最佳超平面中的作用。最后,阐述了间隔最大化的目标函数和优化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

支持向量机(Support Vector Machines, SVM)是一种二类分类模型。根据模型的复杂程度可以分为线性可分支持向量机、线性支持向量机及非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。本文假设训练数据线性可分,介绍了线性可分支持向量机如何通过硬间隔最大化(Hard Margin Maximization)来学习一个线性的分类器。

假定训练数据集:

x_i(本文以“_”表示下标)为第i个特征向量,y_i为x_i的类标记,当y_i=+1时,称x_i为正例;当y_i=-1时,称x_i为负例,(x_i,y_i)称为样本点,再假定训练数据集是线性可分的。学习的目标是找到一个超平面,将所有样本点分类,即将正例分为一类,将负例分为另一类。关于超平面的定义,可见维基百科。简单地说,以二维空间为例,在一个平面上,超平面是由满足ax+by=c方程的点构成,即平面上的一条直线,将该平面划分为两类;以此类推,在三维空间中,超平面是由满足ax+by+cz=d方程的点构成,即空间中的一个面,将空间划分为两类。为了能够在任意维度划分空间,超平面的方程常常表示成wx+b=0,其中w和x都是向量。


1.线性可分支持向量机的定义

给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为wx+b=0以及相应的分类决策函数f(x)=sign(wx+b)称为线性可分支持向量机。

### 线性可分支持向量机示例 对于线性可分支持向量机(SVM),目标是在特征空间中找到一个最优的超平面来区分不同别。该超平面不仅能够正确分训练数据,而且具有最大化的几何间隔。 #### 几何间隔与支持向量 考虑二分问题,在二维平面上有两个别的点可以被一条直线完全区分开来。此时,SVM试图找出这样的一条分割线,使得它距离最近的数据点尽可能远[^2]。这些离决策面最近的数据点被称为支持向量。它们决定了最终模型的形式和位置。 #### 构建线性可分SVM模型 下面是一个简单的Python代码片段用于构建并可视化一个线性可分SVM: ```python from sklearn.svm import SVC import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs # 生成模拟数据集 X, y = make_blobs(n_samples=50, centers=2, cluster_std=0.6, random_state=4) # 训练线性SVM器 clf = SVC(kernel="linear", C=float('inf')) clf.fit(X, y) # 绘制结果图形 plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired) # 获取权重w和支持向量索引svs w = clf.coef_[0] a = -w[0] / w[1] xx = np.linspace(-5, 5) yy = a * xx - (clf.intercept_[0]) / w[1] margin = 1 / np.sqrt(np.sum(clf.coef_ ** 2)) yy_down = yy - np.sqrt(1 + a ** 2) * margin yy_up = yy + np.sqrt(1 + a ** 2) * margin # 绘制分离超平面及其边界的平行线 plt.plot(xx, yy, 'k-') plt.plot(xx, yy_down, 'k--') plt.plot(xx, yy_up, 'k--') # 将支持向量绘制出来 plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80, facecolors='none', edgecolors='k') plt.show() ``` 这段代码创建了一个由两个簇组成的合成数据集,并使用`sklearn`库中的`SVC`函数实现了线性内核的支持向量机。最后画出了最佳拟合的超平面以及对应的边界线和支持向量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值