集成模型——随机森林

本文介绍了随机森林作为集成模型的工作原理和优势。通过对比单棵决策树与集成树的精度,展示了随机森林如何通过bagging和随机特征子集减少过拟合。文章还讨论了在scikit-learn中实现随机森林的参数调整,并强调了随机森林在处理大量输入变量、评估变量重要性和减少过拟合等方面的优势。
摘要由CSDN通过智能技术生成

本文的数据集和上一篇一样,是美国个人收入信息。在上一篇末尾提到了随机森林算法,这一篇就介绍随机森林。

Ensemble Models

前面提到决策树容易过拟合,解决过拟合最有效的一个方法就是随机森林。随机森林是一种集成模型(Ensemble Models),集成模型一般是结合多个模型然后创建了一个精度更高的模型。那么随机森林自然就是结合多个不同的树,然后构造一个决策树森林,平衡每棵树的结果产生一个最终结果。

  • 下面我们创建两个决策树,使得他们的参数不相同,然后计算他们的预测精度:
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_auc_score

columns = ["age", "workclass", "education_num", "marital_status", "occupation", "relationship", "race", "sex", "hours_per_week", "native_country"]

clf = DecisionTreeClassifier(random_state=1, min_samples_leaf=75)
clf.fit(train[columns], train["high_income"])

clf2 = DecisionTreeClassifier(random_state=1, max_depth=6)
clf2.fit(train[columns], train["high_income"])

predictions = clf.predict(test[columns])
print(roc_auc_score(predictions, test["high_income"]))

predictions = clf2.predict(test[columns])
print(roc_auc_score(predictions, test["high_income"]))
'''
0.784853009097
0.771031199892
'''

Combining Our Predictions

  • 当我们有多个分类器的时候,我们可以将其预测结果做成矩阵形式,如下:

    这里写图片描述

  • 然后采用多数表决的方式生成最终的预测结果(当然其实有很多的生成最终结果的方式),此时分类器的个数要大于2,并且最好是奇数,因为是偶数的话,还要写一个规则来打破平局。

    这里写图片描述

  • 由于上面我们只生成了两个决策树,因此我们采用另一种方法来生成最终结果:我们不用predict函数,而用predict_proba 函数来生成每个样本属于0和1的概率,像下面这样:

这里写图片描述

  • 然后我们只采用每个分类器预测结果的第二列(属于1的概率),然后求平均。
predictions = clf.predict_proba(test[columns])[:,1]
predictions2 = clf2.predict_proba(test[columns])[:,1]
combined = (predictions + predictions2) / 2
rounded = numpy.round(combined)

print(roc_auc_score(rounded, test["high_income"]))
'''
0.789959895266
'''

Why Ensembling Works

  • 对比这三个精度:第一棵树{0.784853009097},第二棵树{0.771031199892},集成树{0.789959895266}.发现集成的决策树的精度要好于任何一棵单独的树,这就是集成模型的强大之处。

The more”diverse“, or dissimilar, the models used to construct an ensemble, the stronger the combined predictions will be (assuming that all models have about the same accuracy).

  • 结合一个精度相当的逻辑回归模型和一个决策树模型的效果会比结合两个决策树的效果要好,因为他们的机制相差很大,各自有各自的优点,结合这些优点才会创造更好的模型。
  • 结合两个精度相差很大的模型并不会提升整体的精度,比如结合0.75和0.86的模型的精度会介于这两者之间。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值