遗传编程解决符号回归问题
符号回归(Symbolic Regression)作为一种一种监督学习方法,试图发现某种隐藏的数学公式,以此利用特征变量预测目标变量。符号回归的优点就是可以不用依赖先验的知识或者模型来为非线性系统建立符号模型。符号回归基于进化算法,它的主要目标就是利用进化方法综合出尽可能好的解决用户自定义问题的方法(数学公式,计算机程序,逻辑表达式等)。
用Python gplearn 解决符号回归问题
Python gplearn 工具箱在进行符号回归时函数库中函数有:'add':加法
'sub':减法 'mul':乘法 'div':除法 'sqrt':平方根 'log':对数 'abs':绝对值 'neg':相反数 'inv':倒数 'max':最大值 'min':最小值 'sin':正弦(弧度) 'cos':余弦(弧度) 'tan':正切(弧度)
简答实例(程序源码):
from gplearn.genetic importSymbolicRegressor
from sklearn.ensemble importRandomForestRegressor
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
import numpy as np
rng = check_random_state(0)
# Training samples
X_train = rng.uniform(-1, 1,100).reshape(50, 2)
y_train = X_train[:, 0]**2 - X_train[:,1]**2 + X_train[:, 1] - 1
est_gp =SymbolicRegressor(population_size=5000,
generations=20,stopping_criteria=0.01,
p_crossover=0.7,p_subtree_mutation=0.1,
p_hoist_mutation=0.05, p_point_mutation=0.1,
max_samples=0.9,verbose=1,
parsimony_coefficient=0.01, random_state=0)
est_gp.fit(X_train, y_train)
print (est_gp._program)
程序运行结果:
程序在拟合后的运行结果为y=x*x-x1*x1+x1-0.999,我们测试用的公式为y=x*x-x1*x1+x1-1,具有一定精确度。
附:张统一(19届疲劳断裂会议)解决符号回归方法
领取专属 10元无门槛券
私享最新 技术干货