Out of bag error in Random Forest

sklearn中的RandomForestClassifier有一个参数:

oob_score : bool (default=False) Whether to use out-of-bag samples to estimate the generalization accuracy.

中文叫‘袋外误差’,可以看出这个参数的意思是:使用oob来衡量test error.

关于oob的解释,stackoverflow上有比较全面的解释:OOB的解释 说下自己的理解:

  • RF需要从原始的特征集中随机sampling,然后去分裂生成单颗树.
  • 每个树的训练样本是从原始的训练集boostraping而来.
  • 由于boostraping的有放回抽样方式,导致每个树的训练集合不同且只是原始训练集的一个部分.
  • 对于第t个树来说,原始训练集中那些不在第t个树的训练集的数据,可以使用第t个树来进行test.
  • 现在生成n(n是原始数据集的大小)个树,每个树的训练样本大小为n-1,对第i个树来说其训练集不包含(xi,yi)这个样本.
  • 使用不包含(xi,yi)这个样本的所有的树(n-1个),vote的结果作为最终(xi,yi)这个样本的test结果.

这样就可以在训练的时候来进行测试了,经验表明:

out-of-bag estimate is as accurate as using a test set of the same size as the training set.

意思就是,oob是test error的一个无偏估计.

一句话总结下: 假设Zi=(xi,yi)

The out-of-bag (OOB) error is the average error for each Zi calculated using predictions from the trees that do not contain Zi in their respective bootstrap sample. This allows the RandomForestClassifier to be fit and validated whilst being trained.

参考

stackoverflow上OOB的解释 sklearn上OOB的解释

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ml

朴素贝叶斯分类器(离散型)算法实现(一)

1. 贝叶斯定理:        (1)   P(A^B) = P(A|B)P(B) = P(B|A)P(A)   由(1)得    P(A|B) = P(B|...

3597
来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

20810
来自专栏开发与安全

算法:AOV网(Activity on Vextex Network)与拓扑排序

在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Activity on Vextex ...

3977
来自专栏java闲聊

JDK1.8 ArrayList 源码解析

当运行 ArrayList<Integer> list = new ArrayList<>() ; ,因为它没有指定初始容量,所以它调用的是它的无参构造

1232
来自专栏alexqdjay

HashMap 多线程下死循环分析及JDK8修复

1.1K4
来自专栏聊聊技术

原 初学图论-Kahn拓扑排序算法(Kah

2988
来自专栏xingoo, 一个梦想做发明家的程序员

20120918-向量实现《数据结构与算法分析》

#include <iostream> #include <list> #include <string> #include <vector> #include...

1846
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

2202
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1524
来自专栏xingoo, 一个梦想做发明家的程序员

AOV网络拓扑排序

这个算法,主要是为输出一个无环图的拓扑序列 算法思想: 主要依赖一个栈,用来存放没有入度的节点,每次读取栈顶元素,并将栈顶元素的后继节点入度减一,如果再次出现入...

1975

扫码关注云+社区