特征随机采样问题

来源:13-4 oob (Out-of-Bag) 和关于Bagging的更多讨论

丨越丨

2018-05-27

老师,在

random_subspaces_clf = BaggingClassifier(DecisionTreeClassifier(),

                               n_estimators=500, max_samples=500,

                               bootstrap=True, oob_score=True,

                               n_jobs=-1,

                               max_features=1, bootstrap_features=True)

random_subspaces_clf.fit(X, y)

random_subspaces_clf.oob_score_

这段代码中,既然样本没有随机取样,只有特征被随机取样了,为什么还可以使用oob_score_来评分呢?

oob_score_不是只能针对样本放回取样吗?

写回答

1回答

liuyubobobo

2018-05-27

赞问题!在这里,可能我的课程解释的不够清楚。


关键在于max_samples这个参数。当bootstrap这个参数设置为True的时候,其实max_samples这个参数表示的是取样次数。即对每个子分类器取500次样。但由于是放回取样,所以每次虽然取500次样,但是有的样本会取重,真正用于训练子分类器的样本总数其实是小于500的。换句话说,只要bootstrap这个参数设置为了True,我们的样本就被随机取样了,相应的,就可以使用oob_score_进行评分:)


0
5
liuyubobobo
回复
qq_windowsxp_0
可以通过调节参数做到只对特征抽样。需要让bootstrap=False并且max_samples=1.0,这样,单次创建的决策树,就是使用原始所有数据创建的,而没有对样本抽样。同时,让bootstrap_features=True,max_features小于特征数,就是只对特征进行抽样了。是的,bootstrap默认为True,但这只是一个默认值,我们可以手动为他设置为False。至于结果差异不大,是因为我们测试用的数据太简单了,没有使用能体现这个方法优势的数据:)
2018-07-27
共5条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程