韦小宝真的幸福吗 | Random Forest
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 datasetsX, 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. 延伸阅读
- 线性回归模型 - 机器学习
- 逻辑回归模型原理及实现 - 机器学习
- 参数标准化 - 机器学习
- 大火的神经网络到底是什么 - 机器学习
- 怎样用支持向量机从零制作一个垃圾邮件识别器 - 机器学习
- K-nearest Neighbors,隔壁小芳可还好 - 机器学习
- 为了联盟还是为了部落 - K means
- 赵敏还是小昭,这是个问题 - Decision Tree
6.2. 参考文献
- G. James, D. Witten, T. Hastie R. Tibshirani, An introduction to statistical learning: with applications in R. New York: Springer, 2013.
- T. Hastie, R. Tibshirani, J. H. Friedman, The elements of statistical learning: data mining, inference, and prediction, 2nd ed. New York, NY: Springer, 2009.
- W. Härdle, L. Simar, Applied multivariate statistical analysis, 3rd ed. Heidelberg ; New York: Springer, 2012.
- 周志华, 机器学习 = Machine learning. 北京: 清华大学出版社, 2016.
- 李航, 统计学习方法. 北京: 清华大学出版社, 2012.
韦小宝真的幸福吗 | Random Forest相关推荐
- 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?
系列 <使用sklearn进行集成学习--理论> <使用sklearn进行集成学习--实践> 目录 1 Random Forest和Gradient Tree Boosting ...
- 为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?
北京 | 高性能计算之GPU CUDA课程 11月24-26日 3天密集学习 快速带你晋级阅读全文> 这是一个非常好,也非常值得思考的问题.换一个方式来问这个问题:为什么基于 tree-ense ...
- Random Forest和Gradient Tree Boosting模型如何调参
作者:城东 链接:https://www.zhihu.com/question/34470160/answer/114305935 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 我来讲一讲R ...
- Random Forest和Gradient Tree Boosting如何调参
作者:城东 链接:https://www.zhihu.com/question/34470160/answer/114305935 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 使用skle ...
- 最常用的决策树算法!Random Forest、Adaboost、GBDT 算法
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 本文主要介绍基于集成学习的决策树,其主要通过不同学习框架生产基学习器,并综合所有基学习 ...
- Machine Learning | (8) Scikit-learn的分类器算法-随机森林(Random Forest)
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数
R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录
- R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型
R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型
- 使用R构建随机森林回归模型(Random Forest Regressor)
使用R构建随机森林回归模型(Random Forest Regressor) 目录 使用R构建随机森林回归模型(Random Forest Regressor) 安装包randomForest 缺失值 ...
- 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?
随机森林(Random Forest)和梯度提升树(GBDT)有什么区别? 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法. 随机森林是由很多 ...
最新文章
- 腾讯优图+厦门大学发布!2021十大人工智能趋势
- 语言生成不自闭迷宫_4招教你分清自闭症、多动症、发育迟缓、抑郁症的区别...
- Python基础06-Python异常处理
- python列表map函数_python中map函数怎么显示结果
- 20行代码AC_ 习题8-1 Bin Packing UVA - 1149(贪心+简单二分解析)
- 事务相关、不可重复读与幻读的区别
- 大一计算机考试题库知识点,大一 计算机基础 期末考试题库
- 简单类名转为class_13 网页各区域div的常见类名
- python学习--关注容易被忽略的知识点--(五)面向对象编程
- Python基础学习5 -字符串
- abc大神的官改最新版本固件下载
- 腾讯Tendis 号称能干掉 Redis ?你继续吹牛吧 !
- 期权杠杆比率如何计算?
- 删除有外键关联的表报错,Cannot delete or update a parent row: a foreign key constraint fails
- unity3D游戏开发八之天空盒
- LeetCode通关:哈希表六连,这个还真有点简单
- Android哪个系统占用内存小,哪个安卓模拟器占用的内存小,使用起来又不卡
- halconc#软件收费吗_没事别想不开做Halcon机器视觉工程师
- CNN网络模型大总结【持续更新中...】
- springboot的WebMvcConfigurerAdapter学习(现在常用实现webmvcConfigurer接口和继承WebMvcConfigurationSupport类)
热门文章
- MatlabR2012a 显示使用过期的注册文件破解(.lic)
- 【Burp suite】intruder内的四种攻击模式(attack type)分析!
- 第一章-第六题(帮人抢票,帮人选课这些软件是否合法 你怎么看?)--By梁旭晖...
- 判定两个点是否在一条直线的同一侧_帮帮学堂丨高中物理的常用方法、题型特点及应用注意点!建议收藏!...
- 火星来客创业周刊第1期:独立开发者Twitter小工具60天,从月入300美金到月入3000美金
- 乐理入门: 二、时值、节奏、节拍
- element时间日期选择器组件设置默认时间
- php5.2.17 pecl,php pecl的使用
- 【已解决】打开游戏或者游戏引擎耳机出现滋滋滋的电流声
- html文字溢出怎样处理,css文本溢出处理