【机器学习应用】【Python】支持向量机——SVM

本文深入探讨支持向量机(SVM),包括其支持向量概念、非线性SVM和核技巧,特别是RBF核函数。通过sklearn库展示了SVM在实际应用中的操作,强调了数据预处理和选择合适超参数的重要性。同时,讨论了SVM的优势(全局最优、鲁棒性强、泛化能力强)和挑战(不适用于大数据、需要预处理、解释力弱、超参数敏感)。

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

【机器学习应用】【Python】支持向量机——SVM

线性模型在分类问题上的应用,可看作用一条线或一个超平面在二维或三维空间将数据类别区分开,存在局限性。**支持向量机(support vector machine)**是更为复杂的模型,可解决线性或超平面无法解决的分类问题(线性不可分),应用于更高维度的数据。

理解支持向量机

支持向量

在分类问题中,线性模型的决策分界线即在数据之间的一条线,但这条线可以在很多位置。
在这里插入图片描述

如何确定分界线的最佳位置?就去找两个类别最边缘的数据点,这两种边缘点的的切线就形成了一个分类间隔。那么确定分界线的位置也就是找到分类间隔的中线。
这个最边缘的数据点组合,也就是我们说的支持向量(support vector).

在这里插入图片描述

硬间隔不允许分类间隔间存在数据点;
软间隔允许分类间隔中存在数据点。

总结一下,其实我们是先找到了两个类别距离最小的数据点,确定了分类间隔,才确定了分界线的位置,也可以说这是寻找一个全局最小值的过程。

非线性支持向量机 (non-linear SVM)

但在实际应用中,更多的是线性不可分的问题,假设对于一组二维数据,线性模型的分类决策分界线如下图:
在这里插入图片描述
一条线无法将数据类别区分,而数据也只有两个特征,在此情况下,我们可以增加一个新的特征,转化为三维数据,试看能否用平面区分数据。

from sklearn.datasets import make_blobs
import numpy as np

X, y = make_blobs(centers=4, random_state=0)
y = y%2 # rescale class value to 0 and 1

X_new = np.hstack([X, X[:,1:]**2])

lin_svm_3d = LinearSVC().fit(X_new, y)
coef, intercept = lin_svm_3d.coef_.ravel(), lin_svm_3d.intercept_.ravel()
# plot decision boundary plane
...

在这里插入图片描述

在三维空间中我们就找到了可以划分数据的平面。

小结:在原数据中增加非线性特征

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值