随机森林的训练使用

转载 2018年04月16日 16:44:13

关于随机森林特有的参数:

  • n_estimators=10: 决策树的个数,越多越好,但是性能就会越差,至少100左右(具体数字忘记从哪里来的了)可以达到可接受的性能和误差率。

  • bootstrap=True: 是否有放回的采样。

  • oob_score=False: oob(out of band,带外)数据,即:在某次决策树训练中没有被bootstrap选中的数据。多单个模型的参数训练,我们知道可以用cross validation(cv)来进行,但是特别消耗时间,而且对于随机森林这种情况也没有大的必要,所以就用这个数据对决策树模型进行验证,算是一个简单的交叉验证。性能消耗小,但是效果不错。

  • n_jobs=1: 并行job个数。这个在ensemble算法中非常重要,尤其是bagging(而非boosting,因为boosting的每次迭代之间有影响,所以很难进行并行化),因为可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job

  • warm_start=False: 热启动,决定是否使用上次调用该类的结果然后增加新的。

  • class_weight=None: 各个label的权重。

进行预测可以有几种形式:

  • predict_proba(x): 给出带有概率值的结果。每个点在所有label的概率和为1.

  • predict(x): 直接给出预测结果。内部还是调用的predict_proba(),根据概率的结果看哪个类型的预测值最高就是哪个类型。

  • predict_log_proba(x): 和predict_proba基本上一样,只是把结果给做了log()处理

应用:

随机森林(Random Forest,简称RF)是一种基于决策树基模型的集成学习方法,其核心思想是通过特征采样来降低训练方差,提高集成泛化能力。这里我们采用sklearn.ensemble.RandomForestClassifier来随机森林的训练与预测任务。

在RF(或GBDT)的训练过程中,参数调节(parameter tuning)十分重要,一般地,将集成学习模型的参数分为两大类:过程参数和基学习器参数,一般地,先调试过程参数(如RF的基学习器个数n_estimators等),然后再调试基学习器参数(如决策树的最大深度max_depth等)。

下面讨论几个重要参数:

  • N/P_ratio(负正样本比例)

    其实对于随机森林模型和下面的GBDT模型来说。其基学习器(决策树)采用“entropy”、“gini“等作为建树依据,对不同类别的划分具有强制作用。这类的模型对于类别失衡不敏感。但是过量冗余的负样本会严重加大训练消耗,所以也可以考虑在不影响模型训练的前提下对数据进行采样。

  • n_estimators(森林规模)

    n_estimators 代表随机森林中基学习器(决策树)的个数,对应着“森林”的大小。一般地,森林规模越大,集成的方差越小,模型泛化能力越强,但规模越大导致计算开销越大,所以在保证泛化能力前提下取较合适的 n_estimators 值即可。

    下图示是在某次参数调节中验证集 f1_score 随 n_estimators 的变化曲线,可以看到当 n_estimators 达到一定大小以后,继续增大无助于模型性能的提升。

    这里写图片描述

  • max_depth(树深度)

    max_depth 属于基学习器参数,它控制着每个决策树的深度,一般来说,决策树越深,模型拟合的偏差越小,但同时拟合的开销也越大。一般地,需要保证足够的树深度,但也不宜过大。

    下图示为某次参数调节过程中验证集 f1_score 随 max_depth 的变化曲线,可以看到当 max_depth 达到一定大小以后,继续增大无助于模型性能的提升。

    这里写图片描述

  • min_samples_split(划分样本数)/min_samples_leaf(叶最小样本数)

    这两个参数控制着分支粒度,防止着过拟合,效果相似。在RF中单个基学习器关注偏差,其叶节点粒度应该很小,所以这两个参数应设置得比较小。

  • cut_off(预测概率阈值)

    模型在对样本进行二分类预测时,首先得出的是样本所属类别的概率,然后通过阈值(如取cut_off = 0.5)划分得出结果。比如说:大于阈值判为正例,小于阈值的判为反例。该阈值反应了我们对于预测把握的估计,阈值越大的,要求的预测似然越大,对应的预测类别特征空间相应的收缩。

    下图示为某次参数调节过程中验证集 f1_score 随 cut_off 的变化曲线,可以看到,此时的阈值应取大一些。

    这里写图片描述

此外,还有许多的参数需要在模型训练时予以考虑。总的来说,参数调节是为了找到最适合于当前数据分布下的模型,由于参数众多,要找到这样一个全局最优的参数组合在实践中往往做不到,一个合理的方法是采用贪心的思路,先过程参数再基学习器参数,粗调与细调相结合,争取找到局部最优的参数组合,多次迭代此过程,使得局部最优的参数组合满足任务要求。

下面是两套参数组合下的预测结果评分,可以看到,基于此随机森林模型的预测结果明显优于之前的结果:

这里写图片描述




随机森林的训练过程

随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判...
  • nongfu_spring
  • nongfu_spring
  • 2014年09月28日 18:24
  • 3853

【机器学习】Random Forest(随机森林)入门和实战(一)先写个项目

准备条件 seaborn: 一个可视化工具,不会用参见:数据可视化工具seaborn matplotlib.pyplot: 也是一个可视化工具 sklearn pandas numpy jupyter...
  • Lin_Ting
  • Lin_Ting
  • 2017年02月14日 00:01
  • 4094

python多线程并行实现随机森林

程序针对特征值取值范围为[-1, 1]来实现,数据预处理后即可使用。 import math import operator import threading import random ...
  • d1995618h
  • d1995618h
  • 2015年06月24日 16:32
  • 657

随机之美——机器学习中的随机森林模型

原文链接见:点击打开链接 01 树与森林 在构建决策树的时候,可以让树进行完全生长,也可以通过参数控制树的深度或者叶子节点的数量,通常完全生长的树会带来过拟合问题。过拟合一般由数据中的...
  • notheory
  • notheory
  • 2016年04月16日 19:02
  • 2657

机器学习笔记(9)——随机森林算法(RandomForest,RF)

随机森林算法 RandomForest 1.概念 随机森林算法把分类树组合成随机森林,即在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类树的结果。随机森林...
  • qq_37423198
  • qq_37423198
  • 2017年08月08日 17:40
  • 1106

机器学习算法-随机森林(RF)

随着大数据和人工智能热潮的相继而来,促使机器学习近些年也火的一塌糊涂。机器学习方法已在生产、科研和生活中有着广泛应用,而集成学习则是机器学习的首要热门方向。集成学习是使用一系列学习器进行学习,并使用某...
  • AI_BigData_wh
  • AI_BigData_wh
  • 2017年10月02日 15:33
  • 707

随机森林简单例子

# -*- coding: utf-8 -*- import os import pandas as pd import numpy as np os.chdir('E:/MYPROJ...
  • u010035907
  • u010035907
  • 2016年08月10日 18:50
  • 2425

机器学习之随机森林(R)randomFordom算法案例

1.随机森林原理介绍 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器。该分类器最早由Leo Breiman和Adele Cutler提出,并被注册成了商标。简单来说,随机森林就是由多棵...
  • HHTNAN
  • HHTNAN
  • 2017年01月17日 10:27
  • 2618

随机森林原理---学习过程,参数

随机森林原理 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器。该分类器最早由Leo Breiman和Adele Cutler提出,并被注册成了商标。简单来说,随机森林就是由多棵C...
  • findsd1989
  • findsd1989
  • 2015年06月06日 15:37
  • 1956

【机器学习】Random Forests随机森林的基础及运用

随机森林的基础及运用
  • brucewong0516
  • brucewong0516
  • 2017年11月28日 17:12
  • 432
收藏助手
不良信息举报
您举报文章:随机森林的训练使用
举报原因:
原因补充:

(最多只允许输入30个字)