AI量化实验室

 找回密码
 立即注册
查看: 101|回复: 1

gplearn:一个用于遗传编程(Genetic Programming, GP)的Python库...

[复制链接]

61

主题

135

帖子

531

积分

管理员

积分
531
发表于 2024-8-15 10:21:26 | 显示全部楼层 |阅读模式

官方文档:

https://gplearn.readthedocs.io/en/stable/intro.html


github代码库:

https://github.com/trevorstephens/gplearn


符号回归是一种旨在识别最佳描述已知自变量与其因变量目标之间关系的数学表达式的机器学习技术。它首先构建一系列随机公式的种群,以表示已知自变量与它们的目标因变量之间的关系,以预测新数据。然后,通过选择种群中最适合的个体进行遗传操作,从一代程序进化到下一代。

遗传编程能够从一系列完全随机的程序开始,这些程序未经训练,也不知道您可能想到的任何给定目标函数,但它们可以通过繁殖、变异和进化的方式接近真理。

将遗传编程视为一种随机优化过程。每次初始种群的构建,以及过程中的每次选择和进化步骤,都会从当前一代中随机选择个体进行随机变化,以进入下一代。您可以使用估计器的 random_state 参数来控制这种随机性。


SymbolicTransformer 是一个在遗传编程(Genetic Programming, GP)库 gplearn 中使用的特征转换器。遗传编程是一种启发式搜索算法,用于在可能的函数空间中找到问题的解决方案,这些解决方案可以是数学表达式或决策树等形式。

在 gplearn 中,SymbolicTransformer 的作用是将原始数据转换为新的特征,这些特征是通过遗传编程搜索得到的数学表达式。这个过程包括以下步骤:

  • 初始化种群:随机生成一系列数学表达式,这些表达式构成了初始种群。

  • 评估适应度:计算每个表达式(个体)的适应度,适应度是基于其对目标问题的表现,例如,预测准确性或相关性。

  • 选择:根据适应度从当前种群中选择个体,以用于下一代的进化。

  • 交叉和变异:通过交叉(重组)和变异操作产生新的个体,以增加种群的多样性。

  • 迭代进化:重复评估适应度、选择、交叉和变异步骤,直到满足停止条件。

  • 提取特征:最终,从表现最好的数学表达式中提取特征,这些特征可以用于后续的机器学习模型训练。


SymbolicTransformer 的关键参数包括:

  • population_size:种群大小,即每一代中的个体数量。
  • generations:进化的代数。
  • stopping_criteria:停止进化的条件。
  • p_crossover:交叉操作的概率。
  • p_subtree_mutation:子树变异操作的概率。
  • p_hoist_mutation:Hoist 变异操作的概率。
  • p_point_mutation:点变异操作的概率。
  • max_samples:用于训练的样本数量。

使用 SymbolicTransformer 的示例代码:

[backcolor=var(--fill-6)]python
from gplearn.genetic import SymbolicTransformer# 初始化 SymbolicTransformerest = SymbolicTransformer()# 拟合数据,这里假设 X_train 和 y_train 是训练数据和目标变量est.fit(X_train, y_train)# 转换数据以提取新特征X_transformed = est.transform(X_train)

在这个示例中,X_train 和 y_train 是用于训练的数据集。SymbolicTransformer 将搜索最优的数学表达式,并将这些表达式应用于 X_train 来生成新的特征 X_transformed。

请注意,gplearn 是一个独立的库,需要单独安装,并且它基于Python的Scikit-learn框架。遗传编程通常用于特征工程,特别是在自动特征生成和优化问题中。


61

主题

135

帖子

531

积分

管理员

积分
531
 楼主| 发表于 2024-8-15 10:47:37 | 显示全部楼层
传统机器学习 拟合 f(X,y),这里的f是一个模型的形式,而GP可以给出符号化表达,比如 y=f(X)= x**2 + 5这样的格式。
那与因子挖掘有什么关系呢?

这就取决于fitness了,如果 f(X)与y的关系并不是最小误差,而是相关系数呢(也就是传统说的IC),那这个符号是不是就是一个优化IC的因子表达式?
——更进一步,我们其实可以直接把fitness变成计算 这个因子的轮动收益率,或者夏普比——当然计算量比较大,但反正是机器跑嘛,这肯定是可以做到的。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

AI量化实验室 ( 京ICP备16049031号-2 )

GMT+8, 2024-9-20 05:05 , Processed in 0.070085 second(s), 19 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表