官方文档: 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框架。遗传编程通常用于特征工程,特别是在自动特征生成和优化问题中。
|