美文网首页
随机森林入门笔记

随机森林入门笔记

作者: Nicky_Ye | 来源:发表于2019-04-10 10:32 被阅读0次

此篇文章翻译自以下链接(https://community.alteryx.com/t5/Data-Science-Blog/Random-Forests-in-Python/ba-p/138437

随机森林一种多功能的机器学习算法,它可以作用于从营销到医疗保健、保健的众多应用。它可用于模拟营销对获客、留存和流失的影响,或者预测疾病风险和易感染性。

随机森林可用于分类classification和回归regresssion问题,它可以处理大量的特征,并且有助于估计哪些特征在建模的基础数据中占重要地位。

这是一篇关于在Python中使用随机森林的文章。

1、什么是随机森林

随机森林几乎可以用于任何预测问题,甚至是非线性问题。它是一种相对较新(我猜现在也不新了)的机器学习策略,出自90年代的贝尔实验室,它可以用于任何事情。它属于更大类的机器学习算法,称为集合方法。

集成学习

集成学习涉及集中模型的组合以解决单个预测问题。它的工作原理是生成多个独立学习和预测的分类器/模型。然后这些预测组合起来得到单个预测结果,与单个的分类器相比,它的结果应该是一样好或者更好。

随机森林是集成学习的一个分支,因为它依赖于决策树的集成。关于Python中更多关于集成学习的内容:Scikit-Learn docs

随机决策树

所以我们知道了随机森林是其他模型的集合,但它究竟聚合了哪些模型呢?你可能从它的名称中已经猜到了,随机森林聚合了分类或者回归树。决策树由一系列决策组成,用于对数据集的观测值进行分类。

随机森林

诱导随机森林的算法,将自动创建一堆随机决策树。由于树是随机生成的,因此大多数树对于学习分类/回归问题都没有意义(可能是99.9%的树)。


如果一个观测值为length=45,blue eye,legs=2,那么它将被划分为红色
Arboreal 投票

那么,一万个糟糕的模型有什么用呢?事实证明,它们真的没那么有用。但是,有用的是少数非常好的决策树,它也会和坏的决策树一起生长。

当我们进行预测时,新的观测值随决策树自上而下Push并且被赋予一个预测值/标签。一旦森林中的每棵树都报告了其预测值/标签,我们就会对预测进行统计,所有树的投票结果作为最终预测结果返回。

简单来说,99.9%不相干的树做出的预测,会涵盖所有的结果,并且这些预测结果相互抵消。少数优秀树木的预测才是好的,并且得到好的预测结果。

2、为什么要用它?

它很简单

随机森林是机器学习中的多功能折叠刀,你几乎可以把任何东西扔给它。它在估计推断转换方面做得特别好,因此,你不需要像SVM那样做太多调参(它对于时间紧迫的人来说特别好)

一个转换的例子

随机森林能够在没有精心设计的数据转换的情况下学习。以f(x) = log(x)为例。
我们将在Yhat自己的交互环境Rodeo中利用Python生成分析数据,在这里下载RodeoMac,WindowsLinux的安装文件。
首先,我们先生成一下数据并添加噪声。

import numpy as np
import pylab as pl

x = np.random.uniform(1, 100, 1000)
y = np.log(x) + np.random.normal(0, .3, 1000)

pl.scatter(x, y, s=1, label="log(x) with noise")
pl.plot(np.arange(1, 100), np.log(np.arange(1, 100)), c="b", label="log(x) true function")
pl.xlabel("x")
pl.ylabel("f(x) = log(x)")
pl.legend(loc="best")
pl.title("A Basic Log Function")
pl.show() 

得到如下结果:


如果我们尝试构建一个基本的线性模型来使用x来预测y,我们会得到一条直线,它将log(x)函数一分为二。然而,如果我们使用随机森林,它可以更好地近似log(x)曲线,并且我们得到的东西看起来更像真正的函数。



线性模型 vs 随机森林

当然,你也可以说随机森林对log(x)函数有点过拟合。不管怎么样,这说明了随机森林并不受线性约束的约束。

3使用方法

特征选择

随机森林的最佳用例之一是特征选择。尝试大量决策树变体的副产品之一是,您可以检查每棵树中哪些变量最佳或者最差。
当某个树使用一个参数而另一个不使用时,您可以比较从该参数的包含/排除中丢失或获得的值。好的随机森林实现将为您做到这一点,所以您需要做的就是知道要查看哪个方法或参数。
在下面的例子中,我们试图找出哪些变量对于将葡萄酒分类为红色或白色最重要。



分类

随机森林也很善长分类问题。它可用于对具有多个可能值的类别进行预测,也可以对其进行校准以输出概率。你需要注意的一件事情是过拟合
随机森林可能容易过度拟合,尤其是在使用相对较小的数据集时。如果您的模型对我们的测试集进行“太好”的预测,您应该怀疑。避免过拟合的一个方法是在模型中只使用有相关性的特征。虽然这并不总是干净完美的,但使用特征选择技术(如前面提到的特征选择)可以使它更容易。

回归

随机森林也可以用于回归问题。
不像其他的方法,随机森林非常擅长于分类变量或分类变量与连续变量混合的情况。

一个简单的Python例子

Scikit-Learn是开始使用随机森林的好方法。scikit-learn API在算法中非常一致,因此您可以非常轻松地在模型之间进行竞赛和切换。很多时候,我从一些简单的东西开始,然后转移到随机森林。
scikit-learn中随机森林实现的最佳功能之一是n_jobs参数。这将根据您要使用的核心数自动并行化随机林的拟合。这里 是scikit-learn撰稿人Olivier Grisel的精彩演讲,他讲述了在20个节点的EC2集群上训练随机森林的过程。

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
df.head()

train, test = df[df['is_train']==True], df[df['is_train']==False]

features = df.columns[:4]
clf = RandomForestClassifier(n_jobs=2)
y, _ = pd.factorize(train['species'])
clf.fit(train[features], y)

preds = iris.target_names[clf.predict(test[features])]
pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds'])

这就是我们应该看到的结果了,因为我们选用的是随机的数据,所以每次看到的结果都会有所不同。

preds sertosa versicolor virginica
actual
sertosa 6 0 0
versicolor 0 16 1
virginica 0 0 12

最终思考

由于它的先进性,随机森林非常易于被使用。但是与任何建模一样,我们都要警惕过拟合。如果你有兴趣在R语言中开始使用随机森林,那么请查看randomForest包吧。

翻译完了才发现,并没有写太多干货.....

相关文章

  • 随机森林入门笔记

    此篇文章翻译自以下链接(https://community.alteryx.com/t5/Data-Science...

  • Python机器学习之随机森林

    引言  随机森林的原理网上有一大堆,作为入门小白,下面来根据教材敲两个随机森林的代码。随机森林有两个比较重要的参数...

  • 机器学习算法概述:随机森林&逻辑回归

    摘要:机器学习算法入门介绍:随机森林与逻辑回归! 随机森林是用于分类和回归的监督式集成学习模型。为了使整体性能更好...

  • 随机森林算法入门(python)

    翻译自:http://blog.yhat.com/posts/python-random-forest.html ...

  • 何为决策树和随机森林?

    随机森林 定义:随机森林或随机决策森林是用于分类、回归和其他任务的集成学习方法。 名字由来:随机森林就是使用随机的...

  • 集成学习之Bagging和RF

    一、什么是随机森林 二、随机森林的两个随机 三、随机森林算法过程 四、为什么如此受欢迎 五、随机森林算法的优缺点 ...

  • (十四、)极限森林

    一、极限森林 特征随机参数随机分裂随机因为分裂是随机的,所以就不需要样本是随机的了 随机森林和极限森林不同之处:随...

  • 随机森林

    https://www.cnblogs.com/fionacai/p/5894142.htmlhttps://ww...

  • 随机森林

    先上重点 GBDT和随机森林虽然都是决策树的组合算法,但是两者的训练过程还是很不相同的。 GBDT训练是每次一棵,...

  • 随机森林

    算法过程 N个训练样本,M个特征 选定特征数目m作为每个决策树的特征,m<

网友评论

      本文标题:随机森林入门笔记

      本文链接:https://www.haomeiwen.com/subject/ipopiqtx.html