Apache Mahout Buildforest(随机森林模型)

一、随机森林算法是如何工作的?

在随机森林中,每一个决策树“种植”和“生长”的规则如下所示:

1.假设我们设定训练集中的样本个数为N,然后通过有重置的重复多次抽样来获得这N个样本,这样的抽样结果将作为我们生成决策树的训练集;

2.如果有M个输入变量,每个节点都将随机选择m(m

3.每棵决策树都最大可能地进行生长而不进行剪枝;

4.通过对所有的决策树进行加总来预测新的数据(在分类时采用多数投票,在回归时采用平均)。

二、随机森林的优点与缺点

优点:

1.随机森林算法能解决分类与回归两种类型的问题,并在这两个方面都有相当好的估计表现;

2.随机森林对于高维数据集的处理能力令人兴奋,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出变量的重要性程度,这是一个非常便利的功能;

3.在对缺失数据进行估计时,随机森林是一个十分有效的方法。就算存在大量的数据缺失,随机森林也能较好地保持精确性;

4.当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;

5.模型的上述性能可以被扩展运用到未标记的数据集中,用于引导无监督聚类、数据透视和异常检测;

6.随机森林算法中包含了对输入数据的重复自抽样过程,即所谓的bootstrap抽样。这样一来,数据集中大约三分之一将没有用于模型的训练而是用于测试,这样的数据被称为out of bag samples,通过这些样本估计的误差被称为out of bag error。研究表明,这种out of bag方法的与测试集规模同训练集一致的估计方法有着相同的精确程度,因此在随机森林中我们无需再对测试集进行另外的设置。

缺点:

1.随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合;

2.对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。

三、Apache Mahout  Buildforest:Build the random forest classifie(mahout安装过程比较简单,这里不讲解)

我们先看看mahout buildforest的输入参数设置,键入mahout buildforest会得到如下图所示的提示:


Apache Mahout Buildforest(随机森林模型)_第1张图片

-d:数据路径

-ds:数据集

-sl:选取每个子节点应该具备的训练变量个数,对于regresstion问题默认为全部变量的三分之一

-nc:可选的,树不互补

-ms:可选的,如果分支数据大小小于此值(默认为2),则树不分离。

-mp:可选的,如果分支数据的方差的比例小于这个值,则树不分离。(In the case of a regression problem, this value is used. The default

is 1/1000(0.001).)

-sd:可选的,种子值,用来初始化随机数发生器。

-p:使用部分数据实现

-t:设置共多少棵树

-o:输出路径,包含决策森林模型

决定用气象数据来尝试训练此模型,首先决定爬取一些气象数据(World climate data)。

http://en.tutiempo.net/climate/01-2008/ws-583211.html此api会包含2005年至今的上海浦东新区的气象数据,使用方法是修改‘01-2008’以爬取不同年份的数据。完整代码如下:


Apache Mahout Buildforest(随机森林模型)_第2张图片
Apache Mahout Buildforest(随机森林模型)_第3张图片

代码分为两段,上段为爬取的过程与下段为解析的过程。

将爬取的气象数据导入到input.csv文本中,如下所示:

Apache Mahout Buildforest(随机森林模型)_第4张图片

hdfs dfs -put buildforest/input/input.csv /user/yf/input.csv(将数据导入hdfs)

mahout describe-p/user/yf/input.csv -f/user/yf/input.info-d2 I 3 N I 5 N I 3 C L(执行describe生成数据的说明文件,I表示忽略列N表示num C表示字符L表示标签前面接的数字表示后面几个连续的属性都是一样的,如:3 N表示N N N。注意:L只能有一个)

mahout buildforest -d /user/yf/input.csv -ds /user/yf/input.info -sl 5 -p -t 5 -o /user/yufan/forest_result(生成随机森林模型结果)


Apache Mahout Buildforest(随机森林模型)_第5张图片


Mahout testforest  -i  /user/yf/input.csv -ds  /user/yf/input.info -m /user/yufan/forest_result -a -o /home/yufan/predictions

这里我将训练样本直接拿来预测了,因为比较懒。预测的结果存在hdfs的/home/yufan/predictions路径下。


Apache Mahout Buildforest(随机森林模型)_第6张图片

你可能感兴趣的:(Apache Mahout Buildforest(随机森林模型))