第 4 章 · 02 支持向量机 SVM


第 4 章 · 02 支持向量机 SVM

本节摘要:线性模型(上节)只能学线性关系,但选股数据里有大量非线性——「高 PE + 高波动」可能比单纯高 PE 更糟,这种交互效应线性模型捕捉不到。支持向量机 SVM 通过核技巧(Kernel Trick)把数据映射到高维空间,让原本非线性的边界变成高维空间的线性边界,从而学到复杂分类规则。华泰人工智能系列第 3 篇系统测试了 SVM 在 A 股选股的效果,核心结论是:SVM 在分类任务上常优于线性模型,但超参数选择(核函数类型、正则强度)极敏感,且训练成本随样本量超线性增长。本节讲清 SVM 的两大核心:最大间隔思想与核技巧(线性/多项式/RBF),以及在选股场景的实战要点与陷阱。

内容来源:仓库研报 华泰人工智能系列第 3 篇(支持向量机),知识结构化整理。

⚠️ 学习提示:SVM 在 2010 年代是机器学习的主流,但在大数据场景下已被 Boosting/神经网络取代。在选股里 SVM 仍有一席之地(尤其小样本分类),但要警惕它的训练成本与超参敏感性。

学习目标

阅读完本节,你应当能够:

  1. 解释最大间隔思想为什么能提升泛化能力。
  2. 说清核技巧如何把非线性问题转化为高维线性问题。
  3. 区分线性核、多项式核、RBF 核的特点与适用场景。
  4. 理解 SVM 的关键超参数(C 与 γ)与调参逻辑。
  5. 知道 SVM 在选股里的优势与小样本适配性。

一、线性模型的局限与 SVM 的动机

上节讲线性模型用一条直线(或超平面)分割涨跌两类股票。但选股数据里很多关系是非线性的:

  • 「低 PE」可能跑赢,但「低 PE + 高 ROE」跑赢更多——交互效应。
  • 因子的最优值可能在中间区域(如 PE 适中最好),而非单调——非线性形态。
  • 多因子组合的边界可能是曲线,而非直线。

线性模型对非线性数据表现差。SVM 通过两个核心思想解决这个问题:最大间隔与核技巧。

二、最大间隔:不只是分对,还要分得「稳」

给定训练数据,SVM 不只找一个能分对的超平面,而是找让两类之间间隔(margin)最大的那个超平面。

超平面: w·x + b = 0 间隔 = 2 / ||w|| (即 w 越小,间隔越大) 目标: min ||w|| / 2 约束 y_i · (w·x_i + b) ≥ 1 ​

间隔最大化对应 w 的最小化,所以 SVM 等价于一个约束优化问题。

为什么最大间隔能提升泛化:

  • 抗噪声:间隔越大,新样本稍微偏离训练分布仍能正确分类。
  • 稀疏性:决策边界只由少数「支持向量」决定,不受远离边界的样本影响。
  • 稳健性:类比第 2 章「等权合成难以被打败」,最大间隔也是一种「稳健解」。

💡 核心心法:SVM 的最大间隔思想与正则化(上节)异曲同工——都在控制模型复杂度。线性模型通过惩罚系数大小,SVM 通过最大化间隔,目标都是「找到最稳健的分类边界,而非训练集上最准的边界」。

三、软间隔:允许少量误分类

现实数据通常不是完美线性可分的。软间隔允许部分样本被误分类或落入间隔内,引入松弛变量 ξ:

约束变为: y_i · (w·x_i + b) ≥ 1 - ξ_i (ξ_i ≥ 0) 目标: min ||w|| / 2 + C · sum(ξ_i) ​

C 是关键超参:

  • C 大:对误分类惩罚重,间隔窄,容易过拟合(努力分对每个训练样本)。
  • C 小:对误分类容忍,间隔宽,容易欠拟合(允许部分样本错分)。

C 的选择要用交叉验证,选使样本外表现最优的值。在选股场景,C 通常偏小——因为金融数据噪声大,「容忍少量误分类」往往泛化更好。

四、核技巧:低维非线性 → 高维线性

如果数据本身非线性可分(任何超平面都分不好),核技巧把数据映射到更高维空间,在高维里它们就变得线性可分。

经典例子:二维平面上一个圆环里的点无法用直线与外圈分开,但映射到三维(加入 x^2 + y^2 这个维度),就能用一个平面切开。

核函数:无需显式计算高维映射 φ(x),直接定义两个点在高维空间的内积:

K(x_i, x_j) = <φ(x_i), φ(x_j)> ​

这是核技巧的精妙——用核函数代替显式映射,计算复杂度可控。常用核:

五、三种常用核函数

线性核(linear)

K(x_i, x_j) = x_i · x_j ​

不做升维,等价于线性 SVM。适合因子数多、样本量大的场景(如选股里几千因子、上万样本),训练快。

多项式核(poly)

K(x_i, x_j) = (γ · x_i · x_j + r)^d ​

d 是多项式阶数,捕捉因子间的交互效应(如 PE × ROE)。但高阶多项式容易过拟合,且数值不稳定,实战少用。

RBF 核(径向基函数,高斯核)

K(x_i, x_j) = exp(-γ · ||x_i - x_j||^2) ​

RBF 是最常用的核,理论上可以映射到无限维空间,能拟合任意复杂的边界。

γ 参数:

  • γ 大:每个点的影响范围小,边界复杂,容易过拟合。
  • γ 小:每个点影响范围大,边界平滑,容易欠拟合。
核函数 适用 超参 过拟合风险
线性核 大样本、稀疏特征 C 低
多项式核 显式交互效应 C, γ, d, r 高(数值不稳)
RBF 核 通用、非线性 C, γ 中(γ 敏感)

💡 关键观察:在 A 股选股里,RBF 核是最常用的选择——它能捕捉因子的非线性组合。但 γ 与 C 的组合极度敏感,华泰 AI 3 的实证里,RBF SVM 的表现在不同超参下波动巨大,必须用网格搜索 + 时序交叉验证选超参。

六、SVM 用于回归(SVR)

除了分类(SVC),SVM 也可做回归(SVR)——预测连续收益。SVR 的思想是容忍 ε 范围内的预测误差,只对误差超过 ε 的样本计算损失:

损失: max(0, |y - ŷ| - ε) 目标: min ||w|| / 2 + C · sum(max(0, |y - ŷ| - ε)) ​

SVR 在「未来 N 日收益」回归任务上可用,但实战中分类(SVC)更常见——如前所述,分类抗噪声、契合选股逻辑。

七、SVM 在选股里的优势与陷阱

优势

  • 小样本表现好:SVM 由支持向量决定,对小样本数据稳健。在某些因子截面(每月一次)数据上,SVM 比神经网络更有优势。
  • 非线性建模:RBF 核能捕捉因子间复杂交互,超越线性模型。
  • 泛化能力强:最大间隔思想天然适合低信噪比场景。

陷阱

  • 训练成本高:SVM 训练复杂度 O(n^2)~O(n^3),样本量大时(如全市场几年数据几十万行)训练极慢。
  • 超参敏感:C 与 γ 的组合对结果影响巨大,调参成本高。
  • 概率输出需校准:SVM 默认输出「类别」(用 decision_function 算距离),不是真正的概率。要按概率排序选股,需要 Platt scaling 或 isotonic regression 校准。
  • 不可解释:RBF 核的 SVM 是黑箱,无法像线性模型那样看系数——这是它相对线性模型的最大劣势。

八、SVM 与线性模型的对比

维度 线性模型 SVM(核)
非线性 不能 能(尤其 RBF)
可解释性 高(看系数) 低(黑箱)
训练成本 低 高(随样本超线性增长)
小样本 一般 好
超参敏感性 低(主要 λ) 高(C, γ)
概率输出 直接(逻辑回归) 需校准
大样本 好 训练慢

华泰 AI 3 的实证显示,SVM 在 A 股选股里有时优于线性模型,但优势不稳定——在因子截面少(每月一次)、样本相对小的场景,SVM 的非线性建模优势显现;但在大批量样本时,训练成本与超参敏感性使其相对 Boosting(下下节)优势缩小。

九、Python 实战要点

from sklearn.svm import SVC from sklearn.model_selection import GridSearchCV # 注意:实战用时序 CV,见第04节 from sklearn.preprocessing import StandardScaler # 标准化(SVM 对尺度极敏感) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) # RBF SVM,网格搜索超参 param_grid = {'C': [0.1, 1, 10], 'gamma': [0.01, 0.1, 1]} svm = SVC(kernel='rbf', probability=True) # probability=True 启用概率输出 grid = GridSearchCV(svm, param_grid, cv=时序CV) grid.fit(X_train_scaled, Y_train) # 预测概率 prob = grid.predict_proba(scaler.transform(X_test))[:, 1] ​

几个工程要点:

  • 必须标准化:SVM 对特征尺度极敏感,不标准化结果会完全错乱。
  • probability=True:启用 Platt 校准,输出概率(但训练变慢)。
  • 超参网格:C 与 γ 用对数网格搜索(0.001, 0.01, 0.1, 1, 10, 100),不要线性网格。
  • 样本量控制:超过 5 万样本时考虑用 LinearSVC 或子采样,SVC 训练会非常慢。
  • 时序 CV:超参选择必须用时序交叉验证(第 04 节),不能用随机 k 折。

⚠️ 学习提示:sklearn 默认的 GridSearchCV 用随机 k 折交叉验证,在时序数据上会引入未来函数——训练集包含了未来时点的数据。选股调参必须换成时序 CV(第 04 节详讲),这是机器学习选股最容易踩的坑。

本节要点回顾

  1. 动机:选股数据有大量非线性(因子交互、非单调),线性模型无法捕捉。
  2. 最大间隔:SVM 找间隔最大的超平面,而非任意分对的超平面;间隔大 → 抗噪声、稳健。
  3. 软间隔:松弛变量 ξ 允许误分类;C 控制误分类惩罚,C 大过拟合、C 小欠拟合。
  4. 核技巧:用核函数代替高维映射,把低维非线性变成高维线性;RBF 是最常用的核。
  5. 三种核:线性核(大样本)、多项式核(交互,数值不稳)、RBF 核(通用,选股默认)。
  6. γ 参数:RBF 的影响范围,γ 大过拟合、γ 小欠拟合;与 C 一起网格搜索。
  7. 优势:小样本好、非线性强、泛化稳健;陷阱:训练慢、超参敏感、不可解释、概率需校准。
  8. 实战要点:必须标准化、probability=True、对数网格搜索、超 5 万样本用 LinearSVC、必须用时序 CV。

下一节,我们换一种思路——用决策树与随机森林做选股,看树模型如何用「if-else 规则」捕捉非线性,并天然给出特征重要性。


作者与出处
原作者: 灏天文库
来源:Barca0412
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: 灏天文库 转发
评论区 (0)
U