一、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