关于机器学习模型调参的正确步骤是怎样的?

机器学习的模型,要涉及到不少参数的调参。。那其正确的步骤应该是怎样的呢?
第一种做法是,对一个个或一组组参数去调,其他参数使用默认值。。调出一个或一组参数后,记录下来。下一次继续调另外一个或一组参数。。直至所有要调的参数全部调节完毕。然后将所获得的最优参数一股脑传入模型中,正式训练。

第二种做法是,先对一个或一组参数进行调参,得出最优值后,传入模型中,再调第二个或第二组参数。与前面一种的区别就是,前面那种调出最优参数后,并没有马上传入模型训练,而只是记录下来,到最后一股脑传入。而这种则是一步步地固定最优参数组合,直到最后。。

当然,还有的做法是一股脑对所有参数调参,这种做法相对较少,只能针对简单的模型。对复杂的模型而言,调参耗时过大。。

因此,想请教下各位,正确的做法,应该是怎样的呢??

2个回答

# 1.
# 交叉验证进行最优模型选择
from sklearn.model_selection import cross_val_score
model = RandomForestClassifier(n_estimators=200,max_depth=2,max_features=5,oob_score=True)
f1_score = cross_val_score(model,x,y,scoring='f1',cv=5)
# 打印出来的是n折的f1值,取均值与其他分类器比较,选择最优的模型
print(f1_score)

# 2.
# 表格搜索进行最优超参数选择 穷举所有经验参数,自动选择最优的参数
from sklearn.model_selection import GridSearchCV
params = {
    'n_estimators':[],
    'max_depth':[],
    'max_features':[],
    'oob_score':[]
}
G_model = GridSearchCV(model,param_grid=params,cv=5)
# 交叉验证,训练模型
G_model.fit()
# 打印最优参数
print(G_model.best_params_)

qq872890060
繁华三千东流水 回复lmw0320: 嗯。这个就是一般方法,至于你说的时间会很长,可能是因为你将所有样本都拿来调参了。一般样本量很大的话,我们只抽取部分样本来做,比如说你有10万条数据,并且样本标签很均匀,你可以选择随机抽样,抽2000个左右,就可以大致调出整个样本的最优参数了。如果你的样本标签不均匀,那么你可以进行上采样或者下采样以后,再随机抽取小批量的样本来做。随机抽取函数在pandas里面好像是,df.samlple()。
11 个月之前 回复
lmw0320
lmw0320 .....这个知道。。我的意思是正确的步骤应该是怎样的。。你这个是一股脑把所有参数都纳入么? 一股脑纳入的话,调参时间会很长。。一般都是分批调参。。但是分批调的话,是否会传入之前调好的最优参数呢?
11 个月之前 回复

调参是个老问题,没办法很好的解决,有专门的老工程师经验值很丰富。交叉验证、Adam,可以看看

lmw0320
lmw0320 哪里看??
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问