第 4 章 · 02 支持向量机 SVM


文档摘要

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

第 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 规则」捕捉非线性,并天然给出特征重要性。


发布者: 作者: 灏天文库 转发
评论区 (0)
U