0Pricing
Learn AI with Python · 课时

用于回归的 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 closely

SVR 中的 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. SVM 理论:间隔与支持向量
  2. 核技巧:RBF、多项式与 Sigmoid
  3. 使用 sklearn 进行 SVM 分类
  4. 用于回归的 SVM(SVR)
← 返回 Learn AI with Python