机器学习调参学习
最近用机器学习进行预测,结果总是不理想,所以决定学一学关于调参的内容,借鉴了网上大神们的笔记,分享个人理解,如果有理解的不到位的地方欢迎大家评论区纠正。
为什么需要调参?
机器学习中最困难的地方就是为模型找到最好的超参数,模型的性能与超参数有很大的影响。
调参调的都是哪些参数?
随机森林:
==n-estimators:==决策树的个数,太小容易欠拟合,太大不容易提升模型
==bootstrp:==是否对样本进行有放回抽样来构建树,true or false
==oob_score:==是否采用袋外样本来评估模型的好坏,true or false
==max_depth:==决策树最大深度
==min_samples_leaf:==叶子节点含有的最少样本
==min_samples_split:==节点可分的最小样本数
==min_sample_leaf:==叶子节点最小的样本权重和
==max_leaf_nodes:==最大叶子节点数
==criterion:==节点划分标准
==max_features:==构建决策树最优模型时考虑的最大特征数。
怎样调参?
手工调参
顾名思义也就是通过训练算法手动选择最佳参数集,但是十分耗时,而且不能确保能找到最好的参数。
网格搜索
搜索是一种基本的超参数调优技术,为网格中指定的所有给定超参数值得每个排列构建模型,评估选择最佳模型。
由于超时了超参数得每一个组合,并根据交叉验证得分选择了最佳组合,所以会比较慢。
from sklearn.model_selection import GridSearchCV
clf=RandomForestRegressor()
grid=GridSearchCV(estimator=clf,param_distributions=random_grid,
n_iter=10,
cv=3,verbose=2,random_state=42,n_jobs=1)
grid.fit(x_train, y_train)
print(grid.best_params_)
随机搜索
随机搜索会优于网格搜索,由于许多情况下所有的超参数可能不是同等重要得,随机搜索从超参数空间中随机选择参数组合。
随机搜索不能保证给出的是最好得参数组合。
from sklearn.model_selection impor