超参寻优使用介绍

  • 实现平台:BigQuant—人工智能量化投资平台
  • 可在文末前往原文一键克隆 策略进行进一步研究

超参寻优模块简介

最近,我们上线一个新的模块——超参优化模块,它可以帮助大家对我们平台上的机器学习模型进行超参数优化,让你的收益更上一层楼,接下来就让我给大家介绍下。

超参寻优理论简介

在机器学习里,我们本质上是对损失函数进行最优化的过程。过程类似下面的曲面,算法试图去寻找损失曲面的全局最小值,当然损失曲面实际中不一定是凸曲面,
可能会更加凹凸不平,存在多个局部高低点。

在这里插入图片描述

我们还是回到主题,讲述的重点在于超参数寻优的意义。当我们损失曲面给定的时候,我们寻找最优点的路径可能会有一些模型以为的超参数来确定。形象的比喻,
如下图,不同的超参数可能对应这一条不同的寻优路径,比如当我们控制学习率的时候,模型每一步权重更新的部长就会不一样,这样可能导致寻优路径产生根本的差异,
尤其是在高维空间下。

在这里插入图片描述

模块使用介绍

在介绍了超参优化的原理后,就来介绍我们提供的超参寻优模块工具。

首先打开可视化策略,然后在左边的高级优化下面找到超参搜索,并把它拖进来:

在这里插入图片描述

单击模块后,我们能够在右边看到模块的属性,包括:

  • 超参数输入
  • 评分函数
  • 参数搜索方法
  • 搜索迭代次数
  • 并行运行作业数

超参数输入

在这里构造参数搜索空间。在超参数输入里,我们只需要指定需要调优的参数名,已经参数的搜索空间就ok了,下面给出了示例:

def bigquant_run():
    param_grid = {}

    # 在这里设置需要调优的参数备选
    param_grid['m6.number_of_trees'] = [5, 10, 20]

    return param_grid

切换到代码模式,可以参考所有可以调优的参数,甚至包括算法和算法的版本都可以修改。

在这里插入图片描述

在这里插入图片描述

评分函数

评分函数是用来评价一组参数好坏的指标,下面我们给出了一个示例,以回测最终的夏普比作为评分函数:

def bigquant_run(result):

    score = result.get('m19').read_raw_perf()['sharpe'].tail(1)[0]

    return score

参数搜索算法

参数搜索算法有两个可选项:

  • 网格搜索
  • 随机搜索

网格搜索是指给定参数组合后,遍历所有的排列组合。随机搜索指的是每次从所有的排列组合中,随机抽出一组参数,在具有很多参数的情况下,随机搜索会更有效率。

搜索迭代次数

在随机搜索的情况下,最多迭代的次数。

并行运行作业数

指用多少个线程同时搜索所有参数空间

示例策略

在这里插入图片描述

源码地址:《超参寻优使用简介

本文由BigQuant人工智能量化投资平台原创推出,版权归BigQuant所有,转载请注明出处。

### 极限学习机超参数优化方法与最佳实践 #### 超参数的重要性 极限学习机(Extreme Learning Machine, ELM)是一种单隐层前馈神经网络,其中输入权重和偏置是随机赋值的,而输出权重通过最小二乘法求解得到。为了获得更好的泛化性能,在构建模型时需要调整一些关键性的超参数。 #### 主要可调超参数 对于ELM而言,主要涉及以下几个方面的配置选项: - **隐藏节点数量**:这是影响模型复杂度的重要因素之一。过多可能导致过拟合;反之则可能欠拟合。 - **激活函数的选择**:不同的激活函数会对最终的结果产生不同程度的影响。常见的有Sigmoid、Tanh以及ReLU等非线性变换方式[^1]。 - **正则化系数λ**:用于控制损失函数中的惩罚项强度,防止过拟合现象的发生。 #### 优化策略概述 针对上述提到的各项设置,可以采取如下几种方式进行探索与改进: ##### 随机搜索(Random Search) 相比于传统的网格搜索(Grid Search),这种方法能够在更广的空间内采样候选组合,并且往往能更快找到较优解。具体做法是在给定范围内按照一定分布规律抽取样本作为测试对象。 ##### 进化算法(Evolutionary Algorithms) 利用遗传机制模拟自然选择过程来不断迭代更新种群个体的表现型特征直至收敛至全局最优附近区域。这类技术包括但不限于基因编程(GP)、差分进化(DE)及粒子群优化(PSO)[^4]。 ##### 贝叶斯优化(Bayesian Optimization) 基于概率模型预测潜在优良数位置并指导后续实验方向的一种高效全局寻手段。它能够自适应地平衡“开发”(exploitation)与“探索”(exploration),从而实现快速定位优质方案的目的。 ```python from skopt import gp_minimize import numpy as np from sklearn.metrics import mean_squared_error from elm import ELMRegressor # 假设有一个名为elm库提供了ELM回归器接口 def objective(params): n_hidden_neurons, alpha = params model = ELMRegressor(n_hidden=n_hidden_neurons, activation='sigmoid', alpha=alpha) y_pred = cross_val_predict(model, X_train, y_train, cv=5) score = -mean_squared_error(y_train, y_pred) return score space = [(10, 100), # Number of hidden neurons (整数区间) (1e-6, 1e+6)] # Regularization strength λ (实数值范围) res_gp = gp_minimize(objective, space, n_calls=20, random_state=0) print(f"Best parameters found: {res_gp.x}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值