用于回归的 SVM(SVR)
SVR 的 epsilon 管道、nu-SVR,以及在非线性数据上比较 SVR 与线性回归。
用于回归的 SVM(SVR) 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
SVM 也能进行回归
间隔的思想同样适用于回归。支持向量回归(SVR)在忽略小误差的同时拟合一个函数,使预测结果保持在容差带内。
ε 不敏感管
SVR 会在预测函数周围绘制一条ε 管。位于管内的点产生零损失;只有管外的点会受到惩罚。这会让模型专注于有意义的误差。
管带来的好处
通过忽略微小偏差,SVR 可以避免对噪声过拟合,并生成更平滑、更稳健的拟合结果。容差范围内的小幅波动不会影响模型。
SVR 基本用法
SVR 与 SVC 类似,并支持相同的核函数。RBF 是非线性回归中常用的默认选项。
from sklearn.svm import SVR
model = SVR(kernel="rbf", C=100, epsilon=0.1, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))ε 参数
epsilon 设置管宽。ε 越大,范围越宽、支持向量越少,模型也越简单。ε 越小,拟合数据就越紧密。
from sklearn.svm import SVR
wide = SVR(epsilon=1.0) # tolerant, simpler
tight = SVR(epsilon=0.01) # fits closelySVR 中的 C 参数
与分类中一样,C 控制管外点的惩罚。C 越大,对这些误差的惩罚越重,拟合也越强;C 越小,正则化越强,曲线也越平滑。
from sklearn.svm import SVR
flexible = SVR(C=1000) # fits training closely
smooth = SVR(C=0.1) # more regularizedε 与 C:两个不同的调节参数
请牢记二者的区别:ε 控制管宽(忽略多少误差),而 C 控制落在管外的误差所受到的惩罚。请同时调优二者。
SVR 同样需要缩放
与所有 SVM 一样,SVR 依赖距离,因此对尺度敏感。务必对特征进行标准化,并考虑同时缩放目标值,以实现稳定的训练。
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR
pipe = make_pipeline(StandardScaler(), SVR(kernel="rbf"))
pipe.fit(Xtr, ytr)调优 SVR
对 C、gamma 和 epsilon 进行网格搜索,以找到最佳拟合结果。评分时请使用回归指标,例如负均方误差。
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
param = {
"C": [1, 10, 100],
"gamma": [0.01, 0.1, 1],
"epsilon": [0.01, 0.1, 0.5],
}
gs = GridSearchCV(SVR(), param, cv=5, scoring="neg_mean_squared_error")
gs.fit(Xtr, ytr)nu-SVR 变体
NuSVR 用 nu(介于 0 和 1 之间)替代 epsilon,直接控制支持向量和训练误差所占的比例;对于某些人来说,这种替代参数化方式更容易理解。
from sklearn.svm import NuSVR
model = NuSVR(nu=0.5, C=100, kernel="rbf")
model.fit(Xtr, ytr)何时使用 SVR
对于包含非线性模式且重视抗噪性的中小型数据集,SVR 效果良好。对于非常大的数据集,建议使用线性模型或梯度提升方法,因为它们的扩展性更好。
快速检查
测试您对 SVR 的了解。
总结
总结:SVR 会在ε 不敏感管内拟合函数,管内点的代价为零。epsilon 设置管宽(越大越简单),而 C 惩罚管外的点。务必缩放特征,调优 C/gamma/epsilon,并考虑将 NuSVR 作为替代参数化方式。
常见问题解答
「用于回归的 SVM(SVR)」课时是免费的吗?
是的 — 「用于回归的 SVM(SVR)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「用于回归的 SVM(SVR)」这节课中我会学到什么?
SVR 的 epsilon 管道、nu-SVR,以及在非线性数据上比较 SVR 与线性回归。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「用于回归的 SVM(SVR)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- SVM 理论:间隔与支持向量
- 核技巧:RBF、多项式与 Sigmoid
- 使用 sklearn 进行 SVM 分类
- 用于回归的 SVM(SVR)