Skip to content

监督学习在金融中的应用

概述

监督学习 (Supervised Learning) 是机器学习中最成熟、应用最广泛的范式之一。在金融领域,监督学习的核心任务可归纳为两类:回归 (Regression) 用于预测连续目标变量(如收益率),分类 (Classification) 用于预测离散标签(如违约/非违约)。本文从金融问题建模 (Problem Formulation) 出发,系统梳理常见算法及其在金融场景中的适配。

金融问题的形式化

给定特征矩阵 \(X \in \mathbb{R}^{N \times p}\) 和目标变量 \(y \in \mathbb{R}^N\)(回归)或 \(y \in \{0, 1\}^N\)(分类),监督学习的目标是学习映射 \(f: X \rightarrow y\),使得在未见数据上的泛化误差 (Generalization Error) 最小化:

\[\min_{f \in \mathcal{F}} \mathbb{E}_{(x,y) \sim \mathcal{D}} \left[ L(y, f(x)) \right]\]

其中 \(L\) 为损失函数 (Loss Function),\(\mathcal{D}\) 为数据生成分布。

金融数据的特殊性

金融数据具有低信噪比 (Low Signal-to-Noise Ratio)、非平稳性 (Non-stationarity)、截面相关性 (Cross-sectional Dependence) 等特点,直接套用传统机器学习方法往往效果不佳。问题建模阶段的设计比模型选择更为关键。

回归:收益率预测

线性回归 (Linear Regression) 是收益率预测的基线模型。假设资产 \(i\) 在时刻 \(t+1\) 的超额收益率 \(r_{i,t+1}\) 可由 \(p\) 个因子线性解释:

\[r_{i,t+1} = \alpha + \sum_{k=1}^{p} \beta_k x_{i,t}^{(k)} + \epsilon_{i,t+1}\]

为防止过拟合 (Overfitting),通常引入正则化 (Regularization):

  • Ridge 回归 (L2):\(\min_\beta \|y - X\beta\|_2^2 + \lambda \|\beta\|_2^2\)
  • Lasso 回归 (L1):\(\min_\beta \|y - X\beta\|_2^2 + \lambda \|\beta\|_1\)
  • Elastic Net:兼顾 L1 与 L2 正则化
from sklearn.linear_model import Ridge, Lasso, ElasticNet

# 收益率预测示例
model = ElasticNet(alpha=0.01, l1_ratio=0.5)
model.fit(X_train, y_train)  # X: 因子矩阵, y: 下期收益率
y_pred = model.predict(X_test)

# 评估: IC (Information Coefficient)
from scipy.stats import spearmanr
ic, _ = spearmanr(y_pred, y_test)

Elastic Net 的金融直觉

L1 正则化实现因子筛选 (Factor Selection),L2 正则化缓解多重共线性 (Multicollinearity)。在因子数量远大于有效信号数量的金融场景中,Elastic Net 通常优于单一正则化方法。

分类:信用评分

信用评分 (Credit Scoring) 是分类任务的典型金融应用。目标变量 \(y \in \{0, 1\}\) 表示是否违约 (Default)。

逻辑回归 (Logistic Regression)

逻辑回归通过 Sigmoid 函数将线性输出映射到概率空间:

\[P(y=1|x) = \sigma(w^T x + b) = \frac{1}{1 + e^{-(w^T x + b)}}\]

损失函数为交叉熵 (Cross-Entropy):

\[\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\left[y_i \log \hat{y}_i + (1-y_i)\log(1-\hat{y}_i)\right]\]
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score

model = LogisticRegression(
    class_weight='balanced',  # 处理类别不平衡
    C=1.0,                    # 正则化强度的倒数
    penalty='l2'
)
model.fit(X_train, y_train)
y_prob = model.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, y_prob)

支持向量机 (SVM)

SVM 通过最大化分类间隔 (Margin) 构建决策边界:

\[\min_{w, b} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^{N} \xi_i\]
\[\text{s.t. } y_i(w^T x_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0\]

核技巧 (Kernel Trick) 使 SVM 能处理非线性可分问题。常用核函数包括 RBF 核 \(K(x_i, x_j) = \exp(-\gamma \|x_i - x_j\|^2)\) 和多项式核。

SVM 在金融中的适用场景

SVM 在小样本、高维特征空间中表现良好,适合信用评级迁移 (Rating Migration) 等样本有限的分类任务。但在大规模高频数据场景中,训练效率是瓶颈。

金融问题建模的关键要素

要素 回归任务 分类任务
目标变量 收益率、波动率、价差 违约、涨跌方向、评级
损失函数 MSE、Huber Loss Cross-Entropy、Focal Loss
评估指标 IC、ICIR、R² AUC、KS、Precision-Recall
常见陷阱 前视偏差、截面泄漏 类别不平衡、样本选择偏差

小结

监督学习为金融预测提供了系统化的框架,但成功的关键不在模型复杂度,而在于:(1) 合理的目标变量定义;(2) 严谨的训练/测试划分(时序不可随机切分);(3) 对金融数据特性的深刻理解。后续章节将深入探讨特征工程、模型评估与集成方法等进阶主题。