sklearn中的RandForest调参技巧

总结自这里写链接内容

一、sklearn随机森林模型中可以通过调整3个主要参数来提高模型的泛化能力
1、max_features:
该参数表示在单个决策树生成时考虑的最大特征数。有如下三个选项:
1)、Auto/None:及默认会考虑所有输入特征
2)、sqrt:对于每个决策树的训练随机选择 N 个特征。其中N为输入的最大特征数
3)、0.x:表示选择最大特征数的x%特征来训练单个决策树
max_feature对模型的影响:一般来说该值越大,单个决策树的准确性越大,最终模型的性能越好,但是同时决策树之间的差异性会降低,反而会导致最终模型性能下降。不过该值越小是一定会减少模型的训练时间的。

2、n_estimators:
该参数表示模型中决策树的个数。该值越大性能越好,模型训练时间越长

3、min_sample_leaf
该参数表示决策树叶节点的最小样本数,默认为1。该参数影响着单个决策树的泛化能力,叶节点越多模型越复杂,对训练样本的分类越准确,但是容易引入训练数据样本的噪声导致过拟合。

二、以下参数能使你更容易地训练模型
1、n_jobs:在训练过程中使用的CPU核心数。-1为使用所有CPU所有核,能加快训练速度
2、random_state:由于RF是一种随机算法,参数设置一样时,每次训练出来的结果也可能不一样。而如果将random_state设置成相同的,能够保证在下次训练获得相同的模型,这将有利于模型恢复。
3、oob_score:将该值设置为True,则会采用袋外法(out-of-bag)来对模型进行评价。每次训练模型利用有放回对training set 进行抽样,利用带外(未抽中样本)数据对模型进行评价。

三、使用样例

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import roc_auc_score
import pandas as pd
x = pd.read_csv("train.csv")
y = x.pop("Survived")
model =  RandomForestRegressor(n_estimator = 100 , oob_score = TRUE, random_state = 42)
model.fit(x(numeric_variable,y)
print "AUC - ROC : ", roc_auc_score(y,model.oob_prediction)

以下为简单的参数搜索:

sample_leaf_options = [1,5,10,50,100,200,500]
for leaf_size in sample_leaf_options :
     model = RandomForestRegressor(n_estimator = 200, oob_score = TRUE, n_jobs = -1,random_state =50, max_features = "auto", min_samples_leaf = leaf_size)
     model.fit(x(numeric_variable,y)
     print "AUC - ROC : ", roc_auc_score(y,model.oob_prediction)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值