在不了解运营商的情况下寻找关系?

Finding a relationship without knowing the operators?

1 + 2 + 3 = 6 是一个简单的等式,但假设您有这样的东西:

1 个? 2? 3 = 6

你是怎么找到运营商的?可能吗?

我在 Python 中对 gplearn 进行了一些试验,但似乎您至少需要事先了解一些运算符才能正确使用它。另外,这就是符号回归的用途吗?

遗传编程需要一个特定问题的函数集。

gplearn中,可用函数集由初始化估算器时设置的参数(function_set)控制:

gp = SymbolicRegressor(function_set=['add', 'sub', 'mul', 'sin', 'abs', 'sqrt'])

对于简单的数值问题,函数集可能仅包含算术函数(这是 gplearn 的默认集)。

一般来说足够是函数集应该具备的属性之一。充分性意味着可以使用原始集的元素来表达问题的解决方案(函数集 + 终端集)。

不幸的是,它只能在某些领域得到保证(例如 ['and', 'or', 'not'] 对于布尔归纳问题)。

然而,在许多情况下,GP 可以使用不充分的原始集开发出非常接近所需表达式的表达式。

经常添加一些不必要的函数以确保足够的功能不会过度降低 GP 的速度。无论如何,您必须尝试,因为它可能会以意想不到的方式使系统产生偏差。

还有一些技术可以提供一种机制,进化过程可以通过该机制进化出潜在的可重用组件(例如 ADF - 自动定义函数 ). ADF 是使用原始集组成的。


is this what symbolic regression is used for

通常变量和常量(终端集)也受制于 evolution/recombination。具体问题是一种带有附加约束的符号回归。