决策树和随机森林

随机森 林是一种集成方法,通过集成多个比较简单的评估器形成累积效果。这 种集成方法的学习效果经常出人意料,往往能超过各个组成部分的总和;也就是说,若干评估器的多数投票(majority vote)的最终效果往 往优于单个评估器投票的效果!

1.决策树
决策树采用非常直观的方式对事物进行分类或打标签:
在这里插入图片描述
决策树的难点在于如何设计每一步的问题。在实现决策树的机器学习算法中,问题通常因分类边界是与特征轴平行的形式分割数据而造成的;也就是说,决策树的每个节点都根据一个特征的阈值将数据分成两组。下面通过示例来演示。

from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=300, centers=4, random_state=0, cluster_std=1.0) plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='rainbow');

在这里插入图片描述
2.决策树与过拟合
这种过拟合其实正是决策树的一般属性——决策树非常容易陷得很 深,因此往往会拟合局部数据,而没有对整个数据分布的大局观。 换个角度看这种过拟合,可以认为模型训练的是数据的不同子集。因此将几个决策树结果结合可能更好。

3、随机森林
通过组合多个过拟合评估器来降低过拟合程度的想法其实是一种集成学习方法,称为装袋算法。装袋算法使用并行评估器对数据进行有放回抽取集成(也可以说是大杂烩),每个评估器都对数据过拟合,通过求均值可以获得更好的分类结果。随机决策树的集成算法就是随机森林。 我们可以用 Scikit-Learn 的 BaggingClassifier 元评估器来实现这种 装袋分类器:
In[8]: from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier
tree = DecisionTreeClassifier() bag = BaggingClassifier(tree, n_estimators=100, max_samples=0.8, random_state=1) visualize_classifier(bag, X, y)
在这个示例中,我们让每个评估器拟合样本 80% 的随机数。其实,如 果我们用随机方法(stochasticity)确定数据的分割方式,决策树拟合的 随机性会更有效;这样做可以让所有数据在每次训练时都被拟合,但拟 合的结果却仍然是随机的。例如,当需要确定对哪个特征进行分割时, 随机树可能会从最前面的几个特征中挑选。

在 Scikit-Learn 里对随机决策树集成算法的优化是通过 RandomForestClassifier 评估器实现的,它会自动进行随机化决 策。你只要选择一组评估器,它们就可以非常快速地完成(如果需要可 以并行计算)每棵树的拟合任务。
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=0) visualize_classifier(model, X, y);

前面介绍了随机森林分类的内容。其实随机森林也可以用作回归(处理 连续变量,而不是离散变量)。随机森林回归的评估器是 RandomForestRegressor,其语法与我们之前看到的非常类似。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.总结
随机森林是一种强大的机器学习方法,它的优势在于以下几点。
因为决策树的原理很简单,所以它的训练和预测速度都非常快。另外,多任务可以直接并行计算,因为每棵树都是完全独立的。
多棵树可以进行概率分类:多个评估器之间的多数投票可以给出概 率的估计值(使用 Scikit-Learn 的 predict_proba() 方法)。
无参数模型很灵活,在其他评估器都欠拟合的任务中表现突出。
随机森林的主要缺点在于其结果不太容易解释,也就是说,如果你想要 总结分类模型的意义,随机森林可能不是最佳选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值