问答交流

超参搜索:相同超参情况下,使用“超参搜索”和不使用“超参搜索”得到的评分值不一样?

由ljj13802239795创建,最终由ljj13802239795 被浏览 82 用户

问题

下面的策略中,”超参搜索“模块“m18”仅搜索唯一超参'm15.rate'的唯一值0.00752,即param_grid['m15.rate'] = [0.00752] ,同时模块“m15”的“rate”值也设为0.00752。这样,不论是否使用“超参搜索”,超参设置将保持相同。

”超参搜索“模块“m18”的评分函数定义如下:

def bigquant_run(result):  
    mse = result.get('m34').data_3.read() 
    return mse

但是,右键点击模块“m34”的“运行选中模块”(即不使用“超参搜索”),计算打印的mse值为0.2386537,该mse值同时保存为模块“m34”的输出端“data_3”;而点击“运行全部”(即使用“超参搜索”),m18.result.best_score_显示的最佳评分(按上述评分函数定义,评分即模块“m34”的输出端“data_3”保存的mse值)却为0.2388823926448822。

两次运行得到的mse值不一致,百思不得其解,求助大神!

源码

https://bigquant.com/experimentshare/a2e9ed4ee88c49508d3510fd2c9677a1

\

评论
  • 我这边运行出来也有稍微差异,而且跟你的0.2386537也不一样,说明模型训练结果有细微的差异。例如模型在训练时每次epcho的数据是随机的,或者训练集和验证集随机选出等等随机因素都可能导致训练出的模型有细小差异。 ![{w:100}](/wiki/api/attachments.redirect?id=d24fb204-11dc-4c80-95f0-9590adac7fef)
  • 谢谢yvan0617老师指点!按照老师的思路,发现问题出在m32模块的输出数据每次不一样,源头在于“数据清洗(预处理)”模块的PCA处理没有固定随机种子,固定random_state后问题就解决了。再次感谢yvan0617老师!
{link}