2. 符号回归基础

符号回归(Symbolic Regression)是一类从数据中自动发现数学表达式的建模方法。与常见机器学习模型不同,它不预设固定的函数形式,而是同时搜索表达式结构与参数。理解它与线性回归、决策树的区别,是掌握符号回归因子搜索与复杂度控制的第一步。

2.1 与线性回归、决策树的核心区别

线性回归假设输出是输入特征的线性组合,模型形式固定为 y = w₀ + w₁x₁ + ... + wₙxₙ,训练过程主要是估计权重。它的优势是解释性强、求解稳定,但无法自动捕捉乘法、除法、三角函数、指数等非线性结构。决策树通过一系列阈值划分特征空间,能拟合复杂非线性关系,但其输出是分段常数或分段线性,难以表达紧凑的解析公式,且对连续变化的外推能力较弱。

符号回归则把模型表示为一棵表达式树,叶节点是变量或常数,内部节点是运算符。它搜索的是“公式本身”,因此可能发现 F = m·a、E = ½mv² 这类简洁物理规律。代价是搜索空间巨大、计算成本高,且需要显式控制复杂度以避免过拟合。

维度 线性回归 决策树 符号回归
模型形式 固定线性组合 阈值分裂的树结构 可变的表达式树
非线性能力 弱,需人工构造特征 强,但分段表达 强,可表达解析公式
可解释性 高,系数直接可读 中,规则路径可读 高,公式本身可读
外推能力 依赖线性假设 较弱 取决于发现的公式
复杂度控制 正则化、特征选择 剪枝、最大深度 树规模、运算符惩罚

2.2 表达式树表示

符号回归的核心数据结构是表达式树。以公式 (x₁ + x₂) × sin(x₁) 为例,根节点是乘法,左子树是加法,右子树是正弦函数。叶节点包括变量 x₁、x₂ 和常数。树的规模、深度和运算符集合共同决定了搜索空间与模型复杂度。

表达式树天然支持递归求值:后序遍历即可计算输出。它也便于遗传编程中的交叉与变异操作——交换子树、替换节点、修改常数。复杂度控制通常直接作用于树:限制最大深度、最大节点数,或对节点数量施加惩罚项。

表达式树示例:(x1 + x2) * sin(x1)

        *
       / \
      +   sin
     / \    |
   x1  x2  x1

后序遍历求值顺序:
x1, x2, +, x1, sin, *
表达式树的节点数常被用作复杂度度量。节点越少,公式越简洁,过拟合风险通常越低,但拟合能力也可能下降。符号回归需要在拟合误差与树复杂度之间做权衡。

2.3 遗传编程基本流程

遗传编程(Genetic Programming, GP)是符号回归最经典的搜索方法。它维护一个表达式树种群,通过选择、交叉、变异和精英保留迭代进化。基本流程如下:

  1. 初始化种群:随机生成一批表达式树,控制初始深度和节点数。
  2. 适应度评估:对每个个体计算预测误差,常用均方误差或决定系数,并加入复杂度惩罚。
  3. 选择:按适应度选择父代,常用锦标赛选择或轮盘赌选择。
  4. 交叉:交换两个父代的随机子树,产生新个体。
  5. 变异:随机替换节点、修改常数或调整子树。
  6. 精英保留:保留最优个体,防止退化。
  7. 终止判断:达到最大代数、误差阈值或时间限制后输出最优表达式。
适应度函数示例:
fitness = MSE(y, y_pred) + α * tree_size

其中:
  MSE      : 均方误差
  tree_size: 表达式树节点数
  α        : 复杂度惩罚系数
遗传编程的关键参数包括种群规模、最大代数、交叉率、变异率、最大树深度和惩罚系数。这些参数直接影响搜索效率与最终公式的复杂度。

2.4 常见应用场景与误区复盘

符号回归适合以下场景:从实验数据中发现物理定律或经验公式;金融因子挖掘中寻找可解释的非线性组合;工程建模中替代黑箱模型;生物医学中推断变量间的解析关系。它的价值在于输出人类可读的公式,而不仅是预测值。

常见误区包括:盲目追求低误差而忽略公式复杂度,导致过拟合;运算符集合过大,搜索空间爆炸;未对常数进行优化,公式精度不足;把符号回归当作通用黑箱,忽视领域约束。复盘时应优先检查公式是否简洁、是否可解释、是否在验证集上稳定。

符号回归不是“自动发现真理”的万能工具。数据噪声、采样偏差和运算符选择都会影响结果。实践中应结合领域知识约束搜索空间,并用交叉验证评估公式的泛化能力。

总结来看,符号回归与线性回归、决策树的最大差异在于:它搜索的是表达式结构本身。表达式树是其表示基础,遗传编程是其经典搜索流程,而复杂度控制贯穿始终。掌握这些基础,才能进入后续的因子搜索与复杂度控制策略。