算法——支持向量机(support vector machines,SVM)

简介:个人学习分享,如有错误,欢迎批评指正

支持向量机(Support Vector Machine, SVM)是一种监督学习算法,广泛用于分类任务,也可以用于回归和异常检测等问题。SVM的核心思想是通过在特征空间中找到一个最优的分隔超平面,将不同类别的数据点分开,使得各类别之间的间隔最大化。

一、SVM的基本概念

1. 超平面
在二维空间中,超平面就是一条直线,而在高维空间中,超平面是一个维度比特征空间低一维的几何平面。例如,在三维空间中,超平面就是一个二维平面。

2. 支持向量
支持向量是指离决策边界(超平面)最近的那些数据点。这些点对定义最优超平面起到关键作用,移除这些点可能会改变超平面的位置。SVM算法通过支持向量来构建分类器。

3. 间隔(Margin)
间隔是指分类决策边界与最近的支持向量之间的距离。在SVM中,目标是最大化这个间隔,使得分类器在面对未见过的数据时具有更好的泛化能力。最大化间隔也意味着分类器对噪声和异常值更具鲁棒性。

4. 线性可分和线性不可分

  • 线性可分:如果可以用一个超平面完全分开两类数据,即数据点位于超平面的两侧并且没有任何错误分类,这样的数据集被称为线性可分的。
  • 线性不可分:如果数据无法用一个超平面完全分开,部分数据点会位于错误的分类区域。这时,SVM引入松弛变量允许少量错误分类,以求找到一个尽可能好的超平面。

5. 核函数(Kernel Function)
当数据在原始特征空间中不可线性分离时,SVM可以使用核函数将数据映射到更高维的特征空间,在高维空间中找到一个线性可分的超平面。常见的核函数有线性核、多项式核、高斯核(RBF核)等。

SVM的工作原理
SVM的目标是通过求解一个优化问题,找到一个能够最大化间隔的决策边界。在处理线性可分问题时,SVM直接在特征空间中寻找最优超平面;而在处理线性不可分问题时,SVM通过核函数将数据映射到高维空间,再寻找最优超平面。

:二维数据集的线性分类
假设我们有一个二维数据集,其中有两类数据点:类 A(红色圆点)和类 B(蓝色方块)。这些数据点在二维平面上分布,如下图所示:
在这里插入图片描述

SVM 的任务是找到一条直线(即超平面),将这两类点分开,并且使得这条直线到两类点最近点的距离最大化。

二、SVM算法流程

1. 数据准备

首先,收集并整理训练数据集 { ( x i , y i ) } i = 1 n \{(x_i, y_i)\}_{i=1}^{n} {(xi,yi)}i=1n,其中 x i x_i xi 是特征向量, y i y_i yi 是类别标签(通常取值为 − 1 -1 1 1 1 1)。如果数据集中的特征具有不同的尺度,需要进行标准化处理。

2. 选择核函数

SVM的核心在于选择合适的核函数来处理数据的非线性特征。常见的核函数(个人总结)有:

  • 线性核(Linear Kernel):适用于线性可分的数据。
  • 多项式核(Polynomial Kernel):能够处理非线性特征,但计算复杂度较高。
  • 高斯核(RBF Kernel):常用的核函数,能够在高维空间处理非线性数据。
  • Sigmoid核:类似于神经网络中的激活函数。

核函数的选择对SVM的性能有重要影响,通常需要通过实验或交叉验证来选择最优的核函数。

3. 构建优化问题

在选择好核函数后,SVM通过求解以下优化问题来找到最优超平面:

  • 线性可分:寻找一个能够完全分开两类数据的超平面。目标是最大化化边界的间隔,同时满足所有数据点被正确分类的约束条件:

    min ⁡ w , b 1 2 ∥ w ∥ 2 \min_{w,b} \frac{1}{2} \|w\|^2 w,bmin21w2

    满足条件 y i ( w ⋅ x i + b ) ≥ 1 y_i(w \cdot x_i + b) \geq 1 yi(wxi+b)1 对所有 i i i 成立。

  • 线性不可分:引入松弛变量 ξ i \xi_i ξi,允许少量错误分类,并通过惩罚参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值