数据挖掘--常用的回归模型调参总结
阅读原文时间:2021年04月21日阅读:1

一、XBGoost调参

步骤:

1、设定一个稍大的学习率(0.1),利用xgboost里的cv方法去确定一个合适的迭代次数(也就是树的个数)

2、根据参数的重要性,分别对参数进行调参,利用GridSearchCV,先进行大范围粗调再小范围精调,参数重要性排序:

  • max_depth和min_child_weight
  • gamma
  • subsample和colsample_bytree
  • reg_alpha和reg_lambda

3、调小learning_rate(0.01),利用cv找到合适的迭代次数。

github代码地址:

https://github.com/xiayto/Mechine_learning/blob/master/xgboost%E8%B0%83%E5%8F%82.py

二、SVR调参

对于 SVR、LinearSVR、NuSVR的选择:

1、当我们对数据有先验知识,数据是线性可分时候用SVR
2、当线性不可分用SVR,一般选择RBF高斯核函数,要调参
3、当我对用于支持的向量的百分比有要求时候用NuSVR

参数介绍:

  • C:默认是1,控制松弛因子,噪声比较多的时候C设置小一点,分解平面不需要严格将样本区分。
  • epsilon:允许的距离误差,默认是0.1
  • kernel:默认是rbf高斯核,常用的含有poly多项式核函和sigmoid核函数
  • degree:poly扩展才有的参数,K(x,z) = (γx∗z+r)d ( γ x ∗ z + r ) d 中的d
  • gamma:所有的多项式扩展都需要调节的参数,一般用交叉验证确定 γ γ
  • coef0:poly和sigmoid中需要调节的参数,默认是0
  • cache_size:缓存大小,默认200MB,如果内存足够,推荐使用500MB甚至1000MB

SVR调参过程:

1、确定松弛因子C
2、确定gamma
3、确定epsilon

三、RandomForest调参

参数介绍:

clf = RandomForestRegressor(
            n_estimators=2,             # 学习器个数
            criterion='mse',             # 评价函数
            max_depth=None,              # 最大的树深度,防止过拟合
            min_samples_split=2,         # 根据属性划分节点时,每个划分最少的样本数
            min_samples_leaf=1,          # 最小叶子节点的样本数,防止过拟合
            max_features='auto',         # auto是sqrt(features)还有 log2 和 None可选
            max_leaf_nodes=None,         # 叶子树的最大样本数
            bootstrap=True,              # 有放回的采样
            min_weight_fraction_leaf=0,
            n_jobs=5)                   # 同时用多少个进程训练

调参过程

1、先对重要的参数调整,再对相对不重要的参数调整
2、有相互联系的一起调,没有的可以分开调提高效率
3、先大范围粗调,再小范围精调
4、用贪心的方式,下一次调调用上一次的最优结果

重要性排序:
1、决策树个数
2、max_depth 和 min_samples_split 和 min_samples_leaf
3、max_features

调参代码:
https://github.com/xiayto/tianchi_competition/blob/master/RandomForest%E8%B0%83%E5%8F%82.py