机器学习笔记(3) 随机森林
random forest 和 extra-trees是对decison tree做ensemble而得到最终模型的两种算法.
阅读本文前需要先了解一下
机器学习笔记1:决策树
机器学习笔记2:集成学习
random_forest
决策树在节点划分上,在随机的特征子集中寻找最优划分特征.进一步增强了随机性,抑制了过拟合.
class
sklearn.ensemble.
RandomForestClassifier
(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)¶
随机树的随机性体现在
- 每一颗决策树只学习部分的训练数据
- 决策树在做节点划分时,从某一特征子集中选取出最优划分特征.而不是从全部特征中选取.
extra-trees
class
sklearn.ensemble.
ExtraTreesClassifier
(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=False, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)¶
从名字就可以看出来,extra-trees,极限随机树们 =。=. 其实也是一个森林,只是这个森林里的树比random forest里的树还要更随机.
相比与random forest extra-trees进一步增大了随机性。这种随机性地增加体现在
- 在节点划分上,不光特征是从特征子集随机取的,阈值也是随机取的.
This usually allows to reduce the variance of the model a bit more, at the expense of a slightly greater increase in bias. 这种随机性的引入,通常会导致模型的方差减小,代价就是偏差可能会略微升高.
这里解释一下机器学习中的偏差(bias)和方差(variance).
一图胜千言
上图的点可以理解为一个个的模型,
high bias意味着欠拟合,模型过于简单了. low bias意味着准确率比较高. 这个相对好理解. 点离红心越近,说明在训练集上预测越准确.偏差越小.
high variance意味着过拟合,模型过于复杂,过分地去拟合训练数据了,点很分散,一旦训练数据发生一些变化,学习的结果将产生巨大变化.
可以这样理解:
- bias表示学习到的模型与完美真实模型的差异
- variance表示对不同的数据,模型所能学习到的信息之间的差异.
比如,一个模型,开始时一无所知,这个时候bias肯定很大,预测的准确度很差,而viriance很小,因为此时,对于任何数据来说,这个模型都一无所知,其预测结果也都是一样的. 随着学习的深入,模型复杂度的提高,bias肯定是减小了,预测的准确度上升,但是variance确增大了,因为模型学到了越来越多的有关训练数据的信息,容易过度拟合当前的训练数据,当换一组数据时,可能对模型的预测结果有很大的影响。
更多细致的讨论见https://www.zhihu.com/question/27068705.
以下引自某个回答
首先明确一点,Bias和Variance是针对Generalization(一般化,泛化)来说的。
在机器学习中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。然而我们学习一个模型的目的是为了解决实际的问题(或者说是训练数据集这个领域(field)中的一般化问题),单纯地将训练数据集的loss最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的loss与一般化的数据集的loss之间的差异就叫做generalization error。
而generalization error又可以细分为Bias和Variance两个部分。
首先如果我们能够获得所有可能的数据集合,并在这个数据集合上将loss最小化,这样学习到的模型就可以称之为“真实模型”,当然,我们是无论如何都不能获得并训练所有可能的数据的,所以“真实模型”肯定存在,但无法获得,我们的最终目标就是去学习一个模型使其更加接近这个真实模型。而bias和variance分别从两个方面来描述了我们学习到的模型与真实模型之间的差距。
Bias是 “用所有可能的训练数据集训练出的所有模型的输出的平均值” 与 “真实模型”的输出值之间的差异;
Variance则是“不同的训练数据集训练出的模型”的输出值之间的差异。这里需要注意的是我们能够用来学习的训练数据集只是全部数据中的一个子集。想象一下我们现在收集几组不同的数据,因为每一组数据的不同,我们学习到模型的最小loss值也会有所不同,当然,它们与“真实模型”的最小loss也是不一样的。
其他答主有提到关于cross validation中k值对bias和variance的影响,那我就从其他方面来举个例子。
假设我们现在有一组训练数据,需要训练一个模型(基于梯度的学习,不包括最近邻等方法)。在训练过程的最初,bias很大,因为我们的模型还没有来得及开始学习,也就是与“真实模型”差距很大。然而此时variance却很小,因为训练数据集(training data)还没有来得及对模型产生影响,所以此时将模型应用于“不同的”训练数据集也不会有太大差异。
而随着训练过程的进行,bias变小了,因为我们的模型变得“聪明”了,懂得了更多关于“真实模型”的信息,输出值与真实值之间更加接近了。但是如果我们训练得时间太久了,variance就会变得很大,因为我们除了学习到关于真实模型的信息,还学到了许多具体的,只针对我们使用的训练集(真实数据的子集)的信息。而不同的可能训练数据集(真实数据的子集)之间的某些特征和噪声是不一致的,这就导致了我们的模型在很多其他的数据集上就无法获得很好的效果,也就是所谓的overfitting(过学习)。
因此,在实际的训练过程中会用到validation set,会用到诸如early stopping以及regularization等方法来避免过学习的发生,然而没有一种固定的策略方法适用于所有的task和data,所以bias和variance之间的tradeoff应该是机器学习永恒的主题吧。
最后说一点,从bias和variance的讨论中也可以看到data对于模型训练的重要性,假如我们拥有全部可能的数据,就不需要所谓的tradeoff了。但是既然这是不现实的,那么尽量获取和使用合适的数据就很重要了。
使用sklearn中的random forest和extra-trees
from sklearn.ensemble import RandomForestClassifier rf_clf = RandomForestClassifier(n_estimators=500, oob_score=True, random_state=666, n_jobs=-1) rf_clf.fit(X, y)from sklearn.ensemble import ExtraTreesClassifier et_clf = ExtraTreesClassifier(n_estimators=500, bootstrap=True, oob_score=True, random_state=666, n_jobs=-1) et_clf.fit(X, y)
转载于:https://www.cnblogs.com/sdu20112013/p/10063722.html
机器学习笔记(3) 随机森林相关推荐
- 随机森林分类算法python代码_Python机器学习笔记:随机森林算法
随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为&q ...
- 机器学习-Sklearn-02(随机森林)
机器学习-Sklearn-02(随机森林) 学习2 随机森林在sklearn中的实现 1 概述 1.1 集成算法概述 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身 ...
- 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测
随机森林算法 Random Forest Algorithm 随机森林算法 随机森林算法实现波士顿房价预测 随机森林算法 随机森林(Random Forest)算法 是一种 集成学习(Ensemble ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
- 机器学习系列|基于随机森林的生存分析模型-R实战
机器学习系列|基于随机森林的生存分析模型-R实战 随机生存森林 随机生存森林通过训练大量生存树,以表决的形式,从个体树之中加权选举出最终的预测结果. 构建随机生存森林的一般流程为: Ⅰ. 模型通过&q ...
- 机器学习sklearn实战-----随机森林调参乳腺癌分类预测
机器学习sklearn随机森林乳腺癌分类预测 机器学习中调参的基本思想: 1)非常正确的调参思路和方法 2)对模型评估指标有深入理解 3)对数据的感觉和经验 文章目录 机器学习sklearn随机森林乳 ...
- 机器学习算法:随机森林
在经典机器学习中,随机森林一直是一种灵丹妙药类型的模型. 该模型很棒有几个原因: 与许多其他算法相比,需要较少的数据预处理,因此易于设置 充当分类或回归模型 不太容易过度拟合 可以轻松计算特征重要性 ...
- 机器学习:基于随机森林(RFC)对酒店预订分析预测
机器学习:基于随机森林(RFC)对酒店预订分析预测 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页
- 机器学习 ||《菜菜的sklearn机器学习》笔记——2 随机森林
1 集成算法 集成学习 非常流行的机器学习算法,通过在数据上构建多个模型,集成所有模型的结果. 多个模型集成成为的模型叫做集成评估器,其中的每个模型叫做基评估器.通常来说,有三类集成算法:袋装法(Ba ...
最新文章
- 贪心 ---- 贪心 + STL维护 + 划分集合 L. Neo-Robin Hood(好题)
- 根本停不下来,原来学计算机可以这么有趣
- Python使用matplotlib绘制分组对比柱状图(bar plot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案
- chm文件打不开问题
- 【Opencv探索】基于OpenCV的“图像拼接特效”(这效果很实用啊)
- 如何快速在Linux系统的硬盘上创建大文件
- SpringSecurity的简单使用使用案列说明
- 前端做微信好友分享_前端微信分享,调用微信分享,分享朋友圈,分享微信好友,分享qq空间,qq好友...
- mysql 学习笔记05 统计函数的相关使用
- 解读|数据分析的发展和演变经过哪几个阶段
- [转载] numpy.inf
- html5两条直线,Html5新特性用canvas标签画多条直线附效果截图
- 10分钟搞定工作周报
- 基于微信小程序电影购选系统
- php语言grads画图,grads画图坐标设置.docx
- Mybatis源码导入
- cocos2dx android studio 打包总结
- python instagram 爬虫
- html b5纸尺寸,A5纸的尺寸多大(各种标准纸张大小A1,A2,A3,A4纸的尺寸)
- linux写makefile用tab报错,隐含规则 - linux makefile教程
热门文章
- 当学术论文开始标题党「x is All You Need」
- C++ Primer 第五版 第6章 6.3——函数返回类型和return语句阅读笔记
- 小白来学C语言之宏定义(#define)
- 半正定问题与二阶凸锥问题(SDPSOCP)
- 小米路由器dns辅服务器未响应,小米路由器频繁掉线的原因与解决办法
- 写接口是什么意思啊_input是什么接口?了解这个小常识,以后接线更容易
- android 服务是什么问题,Android Studio 中的Service问题
- 基于阿里云ECS+ 宝塔面板(bt) + WordPress 搭建个人主页(以独立博客为例)
- Android 网格视图GridView
- 计算机网络技术放块队解说词,基于《计算机网络技术》课程多媒体课件制作与设计.doc...