Random Forest算法参数解释及调优

文章介绍了如何对随机森林模型进行参数调优

原文来自:http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/

为什么要调整机器学习算法?

一个月以前,我在kaggle上参加了一个名为TFI的比赛。 我第一次提交的结果在50%。 我不懈努力在特征工程上花了超过2周的时间,勉强达到20%。 出乎我意料的事是,在调整机器学习算法参数之后,我能够达到前10%。

这是这就是机器学习算法参数调优的重要性。 随机森林是在工业界中使用的最简单的机器学习工具之一。 在我们以前的文章中,我们已经向您介绍了随机森林和和CART模型进行了对比 。 机器学习工具包正由于这些算法的表现而被人所熟知。。

随机森林是什么?

随机森林是一个集成工具,它使用观测数据的子集和变量的子集来建立一个决策树。 它建立多个这样的决策树,然后将他们合并在一起以获得更准确和稳定的预测。 这样做最直接的事实是,在这一组独立的预测结果中,用投票方式得到一个最高投票结果,这个比单独使用最好模型预测的结果要好。

 我们通常将随机森林作为一个黑盒子,输入数据然后给出了预测结果,无需担心模型是如何计算的。这个黑盒子本身有几个我们可以摆弄的杠杆。 每个杠杆都能在一定程度上影响模型的性能或资源 -- 时间平衡。 在这篇文章中,我们将更多地讨论我们可以调整的杠杆,同时建立一个随机林模型。

调整随机森林的参数/杠杆

随机森林的参数即可以增加模型的预测能力,又可以使训练模型更加容易。 以下我们将更详细地谈论各个参数(请注意,这些参数,我使用的是Python常规的命名法):

1.使模型预测更好的特征

主要有3类特征可以被调整,以改善该模型的预测能力:

A. max_features:

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

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

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

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

max_features如何影响性能和速度?

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

B. n_estimators:

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

C. min_sample_leaf:

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

2.使得模型训练更容易的特征

有几个属性对模型的训练速度有直接影响。 对于模型速度,下面是一些你可以调整的关键参数:

A. n_jobs:

这个参数告诉引擎有多少处理器是它可以使用。 “-1”意味着没有限制,而“1”值意味着它只能使用一个处理器。 下面是一个用Python做的简单实验用来检查这个指标:

%timeit 
model = RandomForestRegressor(n_estimator = 100, oob_score = TRUE,n_jobs = 1,random_state =1)
model.fit(X,y)
Output  ———-  1 loop best of 3 : 1.7 sec per loop%timeit 
model = RandomForestRegressor(n_estimator = 100,oob_score = TRUE,n_jobs = -1,random_state =1)
model.fit(X,y)
Output  ———-  1 loop best of 3 : 1.1 sec per loop 

“%timeit”是一个非常好的功能,他能够运行函数多次并给出了最快循环的运行时间。 这出来非常方便,同时将一个特殊的函数从原型扩展到最终数据集中。

B. random_state:

此参数让结果容易复现。 一个确定的随机值将会产生相同的结果,在参数和训练数据不变的情况下。 我曾亲自尝试过将不同的随机状态的最优参数模型集成,有时候这种方法比单独的随机状态更好。

C. oob_score:

这是一个随机森林交叉验证方法。 它和留一验证方法非常相似,但这快很多。 这种方法只是简单的标记在每颗子树中用的观察数据。 然后对每一个观察样本找出一个最大投票得分,是由那些没有使用该观察样本进行训练的子树投票得到。

下面函数中使用了所有这些参数的一个例子:

model = RandomForestRegressor(n_estimator = 100, oob_score = TRUE, n_jobs = -1,random_state =50,max_features = "auto", min_samples_leaf = 50)model.fit(x, y)

通过案例研究学习

我们以在以前的文章中经常提到泰坦尼克号为例。 让我们再次尝试同样的问题。 这种情况下的目标是,了解调整随机森林参数而不是找到最好的特征。 试试下面的代码来构建一个基本模型:

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)AUC - ROC:0.7386

这是一个非常简单没有参数设定的模型。 现在让我们做一些参数调整。 正如我们以前讨论过,我们有6个关键参数来调整。 我们有一些Python内置的的网格搜索算法,它可以自动调整所有参数。在这里让我们自己动手来实现,以更好了解该机制。 下面的代码将帮助您用不同的叶子大小来调整模型。

练习:试试运行下面的代码,并在评论栏中找到最佳叶片大小。

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)

备注

就像是随机森林,支持向量机,神经网络等机器学习工具都具有高性能。 他们有很高的性能,但用户一般并不了解他们实际上是如何工作的。 不知道该模型的统计信息不是什么问题,但是不知道如何调整模型来拟合训练数据,这将会限制用户使用该算法来充分发挥其潜力。 在一些后续的文章中,我们将讨论其他机器学习算法,像支持向量机,GBM和neaural networks。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Random Forest随机森林概述

引言 在机器学习中,随机森林由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。随机森林中的树之间是没有关联的。当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所…

kd tree学习笔记 (最近邻域查询)

https://zhuanlan.zhihu.com/p/22557068 http://blog.csdn.net/zhjchengfeng5/article/details/7855241 KD树在算法竞赛中主要用来做各种各样的平面区域查询,包含则累加直接返回,相交则继续递归,相离的没有任何贡献也直接返回。可以处理圆&am…

图像影音型计算机主板选择什么,电脑主板型号在哪里看? 每日一答

电脑主板型号在哪里看?想要看主板的型号其实非常简单,一般来说,主板上都会有一个专门的身份标识,位于PCI-E显卡插槽之间,比如下方这张图,就清晰地写明了MAXIMUS X APEX的标识,熟悉的玩家一眼就能…

使用叶神模拟器无法访问本机服务器的问题(报错:java.net.ConnectException: failed to connect to /127.0.0.1 (port 5000) )

最近打算用夜神模拟器来和本机服务器做一些信息交互的功能,但是服务器搭建好了,用叶神模拟器却无法访问。折腾了大半天才发现原来是模拟器的问题。 具体过程如下: 搭建好服务器后,在本机上访问“http://127.0.0.1:5000/”&#…

初学大数据之如何选择机器学习算法

最近在国外网站看到一篇不错的文章,所以就翻译过来给大家分享一下。主要介绍初学者怎么选择机器学习算法,希望对各位初学者有帮助。 原文如下: 一个初学者面临各种机器学习算法的典型问题是“我应该使用哪种算法?”问题的答案取决于许多因素&#xff0…

Django查询 – id vs pk

当编写django查询时,可以使用id / pk作为查询参数。 Object.objects.get(id1) Object.objects.get(pk1) pk代表主键(primary key), pk更加独立于实际的主键字段,即不必关心主键字段是否被称为id或object_id或其他。 如果您具有不同主键字…

Tomcat的Session管理(三)

摘要:PersistentManager与StandardManager的异同。 之前两篇关于session的文章主要讨论了session相关的创建、查询、过期处理。而我们查看源码的时候都是默认实现是StandardManager类,实际上实现也可以是PersistentManager类,下面我们就查看下…

稳定和性能如何兼顾?58大数据平台的技术演进与实践

作者|赵健博 编辑|尚剑 本文将为你分享58大数据平台在最近一年半内技术演进的过程,包括:58大数据平台目前的整体架构是怎么样的;最近一年半的时间内我们面临的问题、挑战以及技术演进过程;以及未来的规划。…

Random Forest算法简介

转自JoinQuant量化课堂 一、相关概念 分类器:分类器就是给定一个样本的数据,判定这个样本属于哪个类别的算法。例如在股票涨跌预测中,我们认为前一天的交易量和收盘价对于第二天的涨跌是有影响的,那么分类器就是通过样本的交易量…

简单交互

控件有着各种事件,例如被点击的时候,我们可以在事件里面添加动作和命令,让控件可以和用户交互,这里我们演示一个简单的交互:当用户点击文字控件的时候,它开始动画向下移动然后动画旋转,效果入下…

综合素质计算机考点,教师资格证小学综合素质考点及考试真题:信息处理能力...

小学综合素质考点及考试真题——信息处理能力大纲要求:具有运用工具书检索信息、资料的能力。具有运用网络检索、交流信息的能力。具有对信息进行筛选、分类、存储和应用的能力。具有运用教育测量知识进行数据分析与处理的能力。具有根据教育教学的需要,…

API文档自动生成

本文主要讲述自动化API文档生成——apidoc。网上有几个篇文章都只是介绍apidoc的,具体怎么在自己的项目中使用以及与其他配合使用都是没介绍的。最近开始玩服务器,了解到了有Windows与Linux之间共享文件的方法,就是samba。然后具体和apidoc结…

机器学习笔记之SVM(SVR)算法

学过SVM后,看了那么多别人的文章,是时候自己总结一波了。权当写的笔记供自己日后再回顾吧。 PS:结合自己在工作过程中(我这里用SVR做股票预测)用到的知识来写的,不会很全面,若有些知识这里没提及读者可自行…

[转]基于图的机器学习技术:谷歌众多产品和服务背后的智能

近来机器学习领域实现了很多重大的进展,这些进展让计算机系统具备了解决复杂的真实世界问题的能力。其中,谷歌的机器学习又是怎样的 ? 近来机器学习领域实现了很多重大的进展,这些进展让计算机系统具备了解决复杂的真实世界问题的…

安装mysql后在安装目录下只有my-default.ini没有my.ini文件 解决-The MySQL server is running with the --secure-file-priv

WIN10 系统环境 安装mysql后在安装目录下只有my-default.ini没有my.ini文件 。 mysql报错 ---------- The MySQL server is running with the --secure-file-priv option so it cannot execute this statement -------- 但是更改或想要查找配置文件就需要如下操作 在 安装…

loewe测试软件,实测Loewe三角包 最轻的小包最贴心的设计

原标题:实测Loewe三角包 最轻的小包最贴心的设计导语:每周一期的“包治百病”又跟大家见面来啦!“包治百病”全方位评测包包的容量、重量、背法、在不同身高妹子身上的效果、各种惊人的小细节以及可能存在的问题,为有意购买这些包…

hadoop集群的搭建(分布式安装)

集群 计算机集群是一种计算机系统,他通过一组松散集成的计算机软件和硬件连接起来高度紧密地协同完成计算工作。集群系统中的单个计算机通常称为节点,通常通过局域网连接。集群技术的特点:1、通过多台计算机完成同一个工作。达到更高的效率 2…

解决:Error establishing a database connection阿里云修改数据库密码

今天闲来无事想把所有的二级密码改成一致的,所以就把阿里云的mysql数据库的密码改了,结果,打开页面报错了,下边的截图是我问题解决后,重新复现的。如果修复这个问题后wordpress登录页面白板,此时不要着急&a…

机器学习各算法思想(极简版)

读到的一篇不错的文章,拿来和大家分享一下。 转自–头条公众号–极数蜗牛 (1)线性回归 回归最早是由高尔顿研究子女身高与父母身高遗传关系提出的,发现子女平均身高总是向中心回归而得名。其实“一分辛苦一分才”中就蕴含了线性…

斯坦福计算机录取难吗,申请斯坦福究竟有多难? 什么样条件的人才能被斯坦福录取?斯坦福大学直播!...

原标题:申请斯坦福究竟有多难? 什么样条件的人才能被斯坦福录取?斯坦福大学直播!申请斯坦福究竟有多难? 什么样条件的人才能被斯坦福录取?斯坦福大学直播!西海岸小哈佛之称的斯坦福大学&#xf…