createGPLearnEngine

语法

createGPLearnEngine(trainData, targetData,[groupCol=''], [populationSize=1000], [generations=20], [tournamentSize=20], [stoppingCriteria=0.0], [constRange], [windowRange], [initDepth], [initMethod='half'], [initProgram=''], [functionSet], [maxSamples=1.0], [fitnessFunc='mse'], [parsimonyCoefficient=0.001], [crossoverMutationProb=0.9], [subtreeMutationProb=0.01], [hoistMutationProb=0.01], [pointMutationProb=0.01], [eliteCount =0], [restrictDepth=false], [deviceId=0], [seed], [verbose=true], [minimize=true], [useAbsFit=true])

注:

社区版 License 暂不支持该引擎,如需使用此功能,请联系技术支持。

详情

创建一个 GPLearn 引擎用于训练和预测。

参数

  • trainData 是 FLOAT 或 DOUBLE 类型的表,表示用于训练的数据。
  • targetData 是 FLOAT 或 DOUBLE 类型的向量,需要预测的数据。targetData 与 trainData 的数据类型必须一致。
  • groupCol 字符串标量或向量,表示分组列名,可将数据按照此参数指定的列进行分组后计算。默认为空,表示无分组列。
    注: 分组列本身不会参与计算。
  • populationSize 整型标量,表示每代公式的数量, 默认值为 1000。
  • generations 整型标量,表示进化的代数,默认为 20。
  • tournamentSize 整型标量,表示生成下一代公式时,参与竞争的公式数量,默认为 20。
  • stoppingCriteria 浮点型标量,表示终止迭代的适应度阈值。当适应度小于等于此阈值时,会提前结束进化。默认为 0,表示达到进化的代数之前不会停止。
  • constRange 可以是 0 或长度为 2 的浮点型向量,表示公式中包含的常量的范围,默认为 [-1.0, 1.0]。
    • 为 0 时,公式中将不会包含常量。
    • 为向量时,向量的两个元素代表闭区间边界。
  • windowRange 整型向量,表示滑动窗口函数的窗口大小取值范围,滑动窗口的大小是此向量中的随机值,默认为 [2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30, 7, 14, 21, 48, 35, 42]。
  • initDepth 长度为 2 的整型向量,表示初始化公式树的深度范围,默认是 [2, 6]。
  • initMethod 字符串类型标量,用于指定初始化公式树的方法,默认为 half 。
    • grow 公式树中的每一个节点,都是从函数、常量和变量中随机选取
    • full 只有公式树的叶子节点可以是常量或变量
    • half 公式树的子树,将会有50%/50%的概率通过 grow/full 生成
  • initProgram 元代码或元代码的元组,默认为空。指定此参数,将会用指定的元代码初始化种群。例如 <mavg(price, 10)> ,其中 mavg 是 GPLearn 已经支持的函数, price 是 trainData 中的列。
  • functionSet 初始化公式树和进化时选择的算子,为字符串类型的向量。默认值为空,表示可以使用所有支持的算子。支持的算子列表详见附录。
  • maxSamples 浮点型标量,表示参与 fitnessFunc 计算的输入数据的比例,取值范围是 [0,1],默认是 1.0 。
  • fitnessFunc 用户自定义的 FUNCTIONDEF 类型标量,或字符串标量,代表适应度函数。默认是 'mse',字符串可选值为:
    • 'mse',均方误差。
    • 'rmse',均方根误差。
    • 'pearson',皮尔逊矩阵相关系数。
    • 'spearmanr',Spearmanr 排序相关系数。
    • 'mae',平均绝对误差。
  • parsimonyCoefficient 浮点型标量,表示节俭系数。随着进化次数的增加,公式会越来越膨胀,失去可解释性,节俭系数会惩罚过长的公式。默认为 0.0 。
  • crossoverMutationProb 浮点型标量,表示 crossover 的概率,默认是 0.9 。
  • subtreeMutationProb 浮点型标量,表示 subtree 变异的概率,默认是 0.01 。
  • hoistMutationProb 浮点型标量,表示 hoist 变异的概率,默认是 0.01 。
  • pointMutationProb 浮点型标量,表示 point 变异的概率,默认是 0.01 。
注: 所有变异概率之和必须小于等于 1
  • eliteCount INT 类型标量,代表精英数量,默认为 0。适应度最优的 eliteCount 个公式,会作为精英直接传递给下一代。
  • restrictDepth 布尔类型标量,代表是否严格限制公式的长度,默认为 false。设置为 true 时,公式的深度不会超过 initDepth 的上限。
  • deviceId INT类型的标量或向量。当前机器拥有多卡时,可以指定使用的设备 ID,默认为 0 。
  • seed 整型标量,表示训练时使用的种子。
  • verbose BOOL 类型标量,设置是否输出训练时的信息,默认是 true。
  • minimize BOOL 类型标量,设置是否向适应度最小化的方向进化。默认是 true,则认为适应度越小,公式越优秀;反之则认为适应度越大,公式越优秀。
  • useAbsFit 在计算适应度时是否取绝对值。可选参数,默认为 true,表示取绝对值。设置为 false 时,当 fitnessFunc 设置为 'pearson','spearmanr' 或 corr时,不取绝对值。

例子

参考:Shark GPLearn 快速上手