韦小宝真的幸福吗 | Random Forest

本文探讨了随机森林(RandomForest)算法与决策树(DecisionTree)的优劣,通过使用Breastcancer数据集,展示了随机森林在泛化能力和预测准确率上的优势。随机森林通过增加模型的随机性,避免了过拟合问题,实现了比单一决策树更好的测试集得分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题

昨天我们聊应该选赵敏还是小昭,有朋友留言说,当然应该都要了。仔细一琢磨,这话也很有道理。杨过专情,一心只爱小龙女,但也有韦小宝,全面发展一概通吃。

到底专一好,还是通吃好,咱得捋捋。

2. 分析

多,有时候还真是好事儿。比如随机森林,就是用很多棵树,来解决决策树只有一棵树的问题。

决策树的最大问题,是容易过拟合,导致对训练模型匹配完美,但是没有泛化能力。scikit-learn是采用限制最大深度的方法来避免过拟合。还有一种思路,是先形成完全决策树,然后把不重要的 feature 修剪掉。如果我们采用这种 post-pruning 的方法,一个问题就是,如何选择不重要的 feature?

随机森林(Random Forest)用了一个非常巧妙的解决了这个问题。比如我们就当前模型,形成很多棵树,如果大部分树都显示应该把某个 feature 修剪掉,那么在很大程度上这个 feature 就应该是不重要的。这有点像 k nearest Neighbors 投票的思路。

具体来说,随机森林采用两种方法对原始模型增加随机性,然后形成新的多棵决策树。一个是对原始数据进行随机抽样形成新的样本(bootstrap sample),另一个是对原始数据的 features 进行筛选,用新的 sub features 建立模型。当新的模型数量足够多,就会出现足够好的统计规律。

3. 实现

我们继续用 Breast cancer dataset 来对 Random Forest 和 Decision Tree 进行一下对比。我们重新取样 100 次,sub features 选之前的平方根,可以有

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import sklearn.datasets as datasets

X, y = datasets.load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y)

forest = RandomForestClassifier(n_estimators=100,max_features='auto')
forest = forest.fit(X_train, y_train)

print("Training set score: {:.2f}".format(forest.score(X_train, y_train)))
print("Test set score: {:.2f}".format(forest.score(X_test, y_test)))

测试结果

Training set score: 1.00
Test set score: 0.98

相比之前决策树的0.95,有了大幅的提升。

4. 总结

今天我们大致介绍了 Random Forest,并将其结果与 Decision Tree 进行了对比。一般来说,Random Forest 的结果都会优于 Decision Tree。

所以,只有小孩才做选择,大人全都要。韦爵爷的选择,可谓是高手中的高手。

但是,终日周旋于众美女,把自己累个半死,真的就幸福吗?东哥对此持怀疑态度(酸?)。

相关代码均已上传到 Data2Science@Github (https://github.com/jetorz/Data2Science),欢迎标记 Star。

5. 交流

独学而无友则孤陋寡闻。现有「数据与统计科学」微信交流群,内有数据行业资深从业人员、海外博士、硕士等,欢迎对数据科学、数据分析、机器学习、人工智能有兴趣的朋友加入,一起学习讨论。

大家可以扫描下面二维码,添加荔姐微信邀请加入,暗号:机器学习加群。

6. 扩展

6.1. 延伸阅读

  1. 线性回归模型 - 机器学习
  2. 逻辑回归模型原理及实现 - 机器学习
  3. 参数标准化 - 机器学习
  4. 大火的神经网络到底是什么 - 机器学习
  5. 怎样用支持向量机从零制作一个垃圾邮件识别器 - 机器学习
  6. K-nearest Neighbors,隔壁小芳可还好 - 机器学习
  7. 为了联盟还是为了部落 - K means
  8. 赵敏还是小昭,这是个问题 - Decision Tree

6.2. 参考文献

  1. G. James, D. Witten, T. Hastie R. Tibshirani, An introduction to statistical learning: with applications in R. New York: Springer, 2013.
  2. T. Hastie, R. Tibshirani, J. H. Friedman, The elements of statistical learning: data mining, inference, and prediction, 2nd ed. New York, NY: Springer, 2009.
  3. W. Härdle, L. Simar, Applied multivariate statistical analysis, 3rd ed. Heidelberg ; New York: Springer, 2012.
  4. 周志华, 机器学习 = Machine learning. 北京: 清华大学出版社, 2016.
  5. 李航, 统计学习方法. 北京: 清华大学出版社, 2012.

Data2Science

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值