【支持向量机(SVM)】:算法原理及核函数

1 SVM算法原理

1.1 目标函数确定

SVM思想:要去求一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合
在这里插入图片描述
样本空间中任意点x到超平面(w,b)的距离可写成:
在这里插入图片描述
欲找到具有最大间隔的划分超平面,也就是要找到能满足下式中约束的参数w和b,使得间隔γ最大。
在这里插入图片描述

  • y为正例的时候取值为1,y为负例的时候取值为-1
    距离超平面最近的几个训练样本点使上式等号成立,他们被称为“支持向量”,两个异类支持向量到超平面的距离之和为:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 约束条件优化问题转换

在这里插入图片描述

1.3 对偶问题转换

在这里插入图片描述
在这里插入图片描述

此时,求解当 α 是什么值时,该值会变得很大,当求出 α 值,再求解 w, b 值。此时,就变成了极大极小值问题。

1.4 确定超平面

在这里插入图片描述

1.5 计算举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6 SVM原理小节

  1. 支持向量机公式推导最主要找到 w、b 的求解方法
  2. α 非0的样本为支持向量

2 SVM核函数

2.1 核函数的作用

核函数将原始输入空间映射到新的特征空间,从而,使原本线性不可分的样本可能在核空间可分。
在这里插入图片描述

2.2 核函数分类

当存在线性不可分的场景时,我们需要使用核函数来提高训练样本的维度、或者将训练样本投向高维
在这里插入图片描述

  1. 线性核:一般是不增加数据维度,而是预先计算内积,提高速度
  2. 多项式核:一般是通过增加多项式特征,提升数据维度,并计算内积
  3. 高斯核(RBF、径向基函数):一般是通过将样本投射到无限维空间,使得原来不可分的数据变得可分。高斯核函数使用的最多。

在这里插入图片描述
SVM 默认使用 RBF 核函数,将低维空间样本投射到高维空间,再寻找分割超平面。

2.3 高斯核函数

高斯核 Radial Basis Function Kernel (径向基函数,又称RBF核)
在这里插入图片描述

  • γ = 1 2 σ 2 \gamma=\frac {1}{2\sigma^2} γ=2σ21
  • γ \gamma γ是超参数,作用与标准差相反
  • γ \gamma γ越大,高斯分布越窄,数据越集中; γ \gamma γ越小,高斯分布越宽,数据越分散

在这里插入图片描述

2.3 高斯核函数API

from sklearn.svm import SVC
SVC(kernel="rbf",gamma=gamma)
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from plot_util import plot_decision_boundary


# 获取数据
x,y=make_moons(noise=0.15)
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

# 构建函数
def RBFsvm(gamma=0.1):
    return Pipeline(
        [
            ('std_scalar',StandardScaler()),
            ('svc',SVC(kernel='rbf',gamma=gamma))
        ]
    )

# 实验
# svc1 =RBFsvm(0.5)
# x_std=svc1['std_scalar'].fit_transform(x)
# svc1.fit(x_std,y)
# plot_decision_boundary(svc1,axis=[-3,3,-3,3])
# plt.scatter(x_std[y==0,0],x_std[y==0,1])
# plt.scatter(x_std[y==1,0],x_std[y==1,1])
# plt.show()

svc1 =RBFsvm(1.0)
svc1.fit(x,y)
plot_decision_boundary(svc1,axis=[-1.5,2.5,-1,1.5])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()


svc2 =RBFsvm(100)
svc2.fit(x,y)
plot_decision_boundary(svc2,axis=[-1.5,2.5,-1,1.5])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

svc3 =RBFsvm(0.1)
svc3.fit(x,y)
plot_decision_boundary(svc3,axis=[-1.5,2.5,-1,1.5])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

在这里插入图片描述

2.4 超参数 γ \gamma γ

在这里插入图片描述

### 支持向量机(SVM)算法在遥感领域中的应用原理 #### 定义和支持向量机基本概念 支持向量机是一种监督学习模型,广泛应用于分类和回归分析。其核心思想是在高维空间中找到一个最优超平面来区分不同类别的样本数据[^1]。 对于线性可分的情况,SVM通过最大化间隔的方法寻找最佳决策边界;而对于非线性情况,则借助核函数映射到更高维度的空间实现线性分割。这种特性使得SVM非常适合处理具有复杂结构的数据集,在图像识别等领域表现出色。 #### 遥感影像特征提取与预处理 在遥感应用背景下,原始卫星图片通常包含大量冗余信息以及噪声干扰。为了提高后续建模效果并减少计算成本,需要先对获取的多光谱或多波段影像实施降噪和平滑滤波操作。接着利用主成分分析(PCA)等方法降低数据维度的同时保留主要变化趋势作为输入变量提供给SVM训练过程[^2]。 #### 构建基于SVM的土地覆盖分类器 针对特定地理区域内的土地用途监测任务,可以收集已知类别标签的历史观测记录构成训练集合。采用交叉验证策略调整参数C(惩罚系数)及γ(径向基宽度),从而构建稳定可靠的预测模型用于未知位置的地物属性推断。此外还可以引入半监督学习机制充分利用未标记样本来增强泛化能力[^3]。 ```python from sklearn import svm import numpy as np # 假设X_train为经过预处理后的n*m矩阵(n个样本,m个特征), y_train为目标向量 clf = svm.SVC(kernel='rbf', C=1, gamma='scale') clf.fit(X_train, y_train) # 对新采集的数据进行预测 predictions = clf.predict(new_data) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值