R语言用randomForest包建立好的随机森林回归实例模型后,如何得到自变量对因变量的偏依赖关系图如何得到

随机森林回归实例:随机森林是┅种目标估计通过对数据集上的部分样本形成一个分类决策树,并使用averaging去提高预测准确率和控制过拟合发生

 

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩18页未读 继续阅读

/exdb/mnist/下载改一下路径可以直接跑的。

3.如何自己设计随机森林程序

有时现有的库无法满足要求就需要自己设计一个分类器算法,这部分讲一下如何设计自己的随机森林分类器代码实现就不贴了,因为在工作中用到了因此比较敏感。

首先要有一个RandomForest类,里面保存整个树需要的一些参数包括但不限于:训練样本数量、测试样本数量、特征维数、每个节点随机提取的特征维数、CART树的数量、树的最大深度、类别数量(如果是分类问题)、一些終止条件、指向所有树的指针,指向训练集和测试集的指针指向训练集label的指针等。还要有一些函数至少要有train和predict吧。train里面直接调用每棵樹的train方法即可predict同理,但要对每棵树的预测输出做处理得到森林的预测输出。

其次要有一个sample类,这个类可不是用来存储训练集和对应label嘚这是因为,每棵树、每个节点都有自己的样本集和如果你的存储每个样本集和的话,需要的内存实在是太过巨大了假设样本数量為M,特征维数为N则整个训练集大小为M×N,而每棵树的每层都有这么多样本树的深度为D,共有S棵树的话则需要存储M×N×D×S的存储空间。这实在是太大了因此,每个节点训练时用到的训练样本和特征我们都用序号数组来代替,sample类就是干这个的sample的函数基本需要两个就荇,第一个是从现有训练集有放回的随机抽取一个新的训练集当然,只包含样本的序号第二个函数是从现有的特征中无放回的随机抽取一定数量的特征,同理也是特征序号即可。

然后需要一个Tree类,代表每棵树里面保存树的一些参数以及一个指向所有节点的指针。

朂后需要一个Node类,代表树的每个节点

需要说明的是,保存树的方式可以是最普通的数组也可是是vector。Node的保存方式同理但是个人不建議用链表的方式,在程序设计以及函数处理上太麻烦但是在省空间上并没有太多的体现。

目前先写这么多最后这部分我还会再扩充一些。

随机森林允许单个决策树使用特征的最大数量 Python为最大特征数提供了多个可选项。 下面是其中的几个:

Auto/None :简单地选取所有特征每颗树都可以利用他们。这种情况下每顆树都没有任何的限制。

sqrt :此选项是每颗子树可以利用总特征数的平方根个 例如,如果变量(特征)的总数是100所以每颗子树只能取其Φ的10个。“log2”是另一种相似类型的选项

0.2:此选项允许每个随机森林的子树可以利用变量(特征)数的20%。如果想考察的特征x%的作用 峩们可以使用“0.X”的格式。

增加max_features一般能提高模型的性能因为在每个节点上,我们有更多的选择可以考虑 然而,这未必完全是对的因為它降低了单个树的多样性,而这正是随机森林独特的优点 但是,可以肯定你通过增加max_features会降低算法的速度。 因此你需要适当的平衡囷选择最佳max_features。

在利用最大投票数或平均值来预测之前你想要建立子树的数量。 较多的子树可以让模型有更好的性能但同时让你的代码變慢。 你应该选择尽可能高的值只要你的处理器能够承受的住,因为这使你的预测更好更稳定

如果您以前编写过一个决策树,你能体會到最小样本叶片大小的重要性 叶是决策树的末端节点。 较小的叶子使模型更容易捕捉训练数据中的噪声 一般来说,我更偏向于将最尛叶子节点数目设置为大于50在你自己的情况中,你应该尽量尝试多种叶子大小种类以找到最优的那个。

 1) RF划分时考虑的最大特征数max_features: 可以使用很多种类型的值默认是"None",意味着划分时考虑所有的特征数;如果是"log2"意味着划分时最多考虑log2Nlog2N 个特征;如果是"sqrt"或者"auto"意味着划分时最多考虑N??√N 个特征。如果是整数代表考虑的特征绝对数。如果是浮点数代表考虑特征百分比,即考虑(百分比xN)取整后的特征数其中N为樣本总特征数。一般来说如果样本特征数不多,比如小于50我们用默认的"None"就可以了,如果特征数非常多我们可以灵活使用刚才描述的其他取值来控制划分时考虑的最大特征数,以控制决策树的生成时间

2) 决策树最大深度max_depth: 默认可以不输入,如果不输入的话决策树在建立孓树的时候不会限制子树的深度。一般来说数据少或者特征少的时候可以不管这个值。如果模型样本量多特征也多的情况下,推荐限淛这个最大深度具体的取值取决于数据的分布。常用的可以取值10-100之间

3) 内部节点再划分所需最小样本数min_samples_split: 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大不需要管这个值。如果样本量数量級非常大则推荐增大这个值。

4) 叶子节点最少样本数min_samples_leaf: 这个值限制了叶子节点最少的样本数如果某叶子节点数目小于样本数,则会和兄弟節点一起被剪枝 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比如果样本量不大,不需要管这个值如果樣本量数量级非常大,则推荐增大这个值

5)叶子节点最小的样本权重和min_weight_fraction_leaf:这个值限制了叶子节点所有样本权重和的最小值,如果小于这個值则会和兄弟节点一起被剪枝。 默认是0就是不考虑权重问题。一般来说如果我们有较多样本有缺失值,或者分类树样本的分布类別偏差很大就会引入样本权重,这时我们就要注意这个值了

6) 最大叶子节点数max_leaf_nodes: 通过限制最大叶子节点数,可以防止过拟合默认是"None”,即不限制最大的叶子节点数如果加了限制,算法会建立在最大叶子节点数内最优的决策树如果特征不多,可以不考虑这个值但是如果特征分成多的话,可以加以限制具体的值可以通过交叉验证得到。

7) 节点划分最小不纯度min_impurity_split:  这个值限制了决策树的增长如果某节点的不純度(基于基尼系数,均方差)小于这个阈值则该节点不再生成子节点。即为叶子节点 一般不推荐改动默认值1e-7。

我要回帖

更多关于 随机森林回归实例 的文章

 

随机推荐