机器学习——SVM

本文详细介绍了支持向量机(SVM)的概念,包括线性可分与线性不可分情况下的SVM,特别是线性不可分时引入的SMO算法。还讨论了如何通过核函数实现非线性分类,如多项式、高斯RBF和Sigmoid核函数,并展示了它们在解决实际问题中的应用。

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

  • 假设给定一个特征空间上的训练数据集 T = ( x 1 , y 1 ) , . . . , ( x N , y N ) T={(x_1,y_1),...,(x_N,y_N)} T=(x1,y1),...,(xN,yN),其中 x i ∈ R n , y i ∈ { − 1 , + 1 } , i = 1 , 2 , . . . , N x_i\in R^n, y_i\in\{-1,+1\}, i=1,2,...,N xiRn,yi{1,+1},i=1,2,...,N
  • x i x_i xi为第 i 个实例(若n>1, x i x_i xi为向量);
  • y_i为x_i的类标记;
    • 当y_i=+1时,称 x i x_i xi为正例;
    • 当y_i=-1时,称 x i x_i xi为负例;
  • ( x i , y i x_i, y_i xi,yi)称为样本点。

线性可分支持向量机

  • 给定线性可分训练数据集,通过间隔最大化得到的分离超平面为
    y ( x ) = w T ϕ ( x ) + b y(x)=w^T\phi(x)+b y(x)=wTϕ(x)+b
    相应的分类决策函数 f ( x ) = s i g n ( w T ϕ ( x ) + b ) f(x)=sign(w^T\phi(x)+b) f(x)=sign(wTϕ(x)+b)
    该决策函数称为线性可分支持向量机。
  • ϕ ( x ) \phi(x) ϕ(x)是某个确定的特征空间转换函数,它的作用是将x映射到(更高的)维度。
    • 最简单直接的: ϕ ( x ) = x \phi(x)=x ϕ(x)=x
  • 求解分离超平面问题可以等价为求解相应的凸二次规划问题。

符号标记

  • 分割平面: y ( x ) = w T ϕ ( x ) + b y(x)=w^T\phi(x)+b y(x)=wTϕ(x)+b
  • 训练集: x 1 , . . . , x n x_1,...,x_n x1,...,xn
  • 目标值: y 1 , . . . , y n , y i ∈ { − 1 , + 1 } y_1,...,y_n,y_i\in\{-1,+1\} y1,...,yn,yi{1,+1}
  • 新数据的分类: s i g n ( y ( x ) ) sign(y(x)) sign(y(x))

下面给出SVM算法的理论推导:
在这里插入图片描述
在这里插入图片描述

线性支持向量机

若数据线性不可分,则增加松弛因子 ξ i ≤ 0 \xi_i\le0 ξi0,使函数间隔加上松弛变量大于等于1,这样约束条件变成了 y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i(w\cdot x_i+b)\ge 1- \xi_i yi(wxi+b)1ξi
则目标函数为:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i min_{w,b}\frac{1}{2}||w||^2+C\sum_{i=1}^{N}\xi_i minw,b21w2+Ci=1Nξi
约束条件:
y i ( w ⋅ x i + b ) ≥ 1 − ξ i ,   i = 1 , 2 , . . . , n y_i(w\cdot x_i+b)\ge 1- \xi_i,\ i=1,2,...,n yi(wxi+b)1ξi, i=1,2,...,n
ξ i ≥ 0   i = 1 , 2 , . . . , n \xi_i\ge0\ i=1,2,...,n ξi0 i=1,2,...,n
与上述过程相同,整理得到对偶问题:
m i n α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i x j ) − ∑ i = 1 n α i min_{\alpha}\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j(x_ix_j)-\sum_{i=1}^{n}\alpha_i minα21i=1nj=1nαiαjyiyj(xixj)i=1nαi
约束条件为:
∑ i = 1 n α i y i = 0 \sum_{i=1}^{n}\alpha_iy_i=0 i=1nαiyi=0
0 ≤ α i ≤ C 0\le\alpha_i\le C 0αiC
上述优化问题可用SMO算法解得,将解待人即可得分离超平面和决策函数。

事实上SVM的损失函数为:max(1-d,0)

SMO算法

  • 序列最小最优化(Sequential Minimal Optimization)
  • 有多个拉格朗日乘子
  • 每次只选择其中两个乘子做优化,其它因子认为是常数。
    • 将N个解问题,转换成两个变量的求解问题:并且目标函数是凸的。

具体步骤如下
在这里插入图片描述

核函数

可以使用核函数,将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。

  • 多项式核函数: κ ( x 1 , x 2 ) = ( x 1 ⋅ x 2 + c ) d \kappa(x_1,x_2)=(x_1\cdot x_2+c)^d κ(x1,x2)=(x1x2+c)d
  • 高斯核RBF函数: κ ( x 1 , x 2 ) = e x p ( − γ ∣ ∣ x 1 − x 2 ∣ ∣ 2 ) \kappa(x_1,x_2)=exp(-\gamma||x_1-x_2||^2) κ(x1,x2)=exp(γx1x22)
  • Sigmoid核函数: κ ( x 1 , x 2 ) = t a n h ( x 1 x 2 + c ) \kappa(x_1,x_2)=tanh(x_1x_2+c) κ(x1,x2)=tanh(x1x2+c)

例如多项式核函数: κ ( x , y ) = ( x ⋅ y ) 2 = ∑ i = 1 n ∑ j = 1 n ( x i x j ) ( y i y j ) \kappa(x,y)=(x\cdot y)^2=\sum_{i=1}^{n}\sum_{j=1}^{n}(x_ix_j)(y_iy_j) κ(x,y)=(xy)2=i=1nj=1n(xixj)(yiyj)
此时
ϕ ( x ) = ( x i x j ) i , j = 1 n \phi(x)=(x_ix_j)_{i,j=1}^{n} ϕ(x)=(xixj)i,j=1n
注:高斯核是无穷维的

from sklearn import svm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 载入鸢尾花数据
lr = load_iris()

# 分割数据集
x_train, x_test, y_train, y_test = train_test_split(lr.data, lr.target, train_size=0.75)

# C即是目标函数里面的C,kernel='linear'代表核函数为线性核函数,decision_function_shape='ovr'代表分类类型为one versus rest即1对多,对应的1对1是'ovo'
clf = svm.SVC(C=0.1, kernel='linear', decision_function_shape='ovr') 
clf.fit(x_train, y_train)

# 训练集准确率
print(clf.score(x_train, y_train))
# decision_function
print(clf.decision_function(x_train))
# 预测数据
print(clf.predict(x_train))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值