python的随机森林模型调参

一、一般的模型调参原则

1、调参前提:模型调参其实是没有定论,需要根据不同的数据集和不同的模型去调。但是有一些调参的思想是有规律可循的,首先我们可以知道,模型不准确只有两种情况:一是过拟合,而是欠拟合。过拟合是指模型过于复杂,欠拟合是指模型过于简单。

2、查找资料:调参时应该知道每一个参数的默认值是多少,其增大或者减小会使模型更加复杂还是更加简单。

3、调参可以使用两种方法:1、学习曲线 2、网格搜索

  • 学习曲线只能对参数一个一个进行调整,可以观察参数的增大或者减小具体对模型产生怎样的影响;网格搜索可以同时对多个参数进行调整,也可以对单个参数进行调整。

  • 我们可以查找资料???找出模型的各个参数对于模型的影响大小的顺序,先对影响较大的参数进行调整,再对影响较小的参数进行调整。——由粗到精

  • 调参时应该确定模型处于方差-偏差曲线的左侧还是右侧,即模型是过拟合还是欠拟合。

 

4、学习曲线

有一些参数,我们不知道它对于模型有着怎样的影响,也不知道参数的合适范围,这时我们可以用学习曲线的方法进行调参。先按照step取较大值进行调,然后在可能最优的范围内缩小步长,进一步确定最佳参数。

5、网格搜索

网格搜索既可以一次对多个参数进行调参,也可以一次只调一个参数。但是在一次调多个参数时太费时间,且在调出的参数不是十分好的时候,我们因为不知道其调参的原理因此不知道该如何调整。

二、随机森林的调参——对于乳腺癌数据集

1、首先先调既不会增加模型复杂度,又对模型影响最大的参数n_estimators(学习曲线)

2、找到最佳值后,调max_depth(单个网格搜索,也可以用学习曲线)  

  一般根据数据的大小来进行一个试探,乳腺癌数据很小,所以可以采用1~10,或者1~20这样的试探但对于像digit recognition那样的大型数据来说,我们应该尝试30~50层深度(或许还不足够)

3、接下来依次对各个参数进行调参。

注:对于大型数据集,max_leaf_nodes可以尝试从1000来构建,先输入1000,每100个叶子一个区间,再逐渐缩小范围

    对于min_samples_splitmin_samples_leaf,一般是从他们的最小值开始向上增加10或20,面对高维度高样本量数据,如果不放心,也可以直接+50,对于大型数据,可能需要200~300的范围,如果调整的时候发现准确率无论如何都上不

  来,那可以放心大胆调一个很大的数据,大力限制模型的复杂度

 

posted @ 2018-11-18 21:59  simpleDi  阅读(6445)  评论(0编辑  收藏  举报