使用sklearn--Random Forest参数说明(待补充)
资料来源:http://www.cnblogs.com/jasonfreak/p/5657196.html
ps:他/她写的好好
《机器学习》 周志华:第二章偏差与方差,第八章
0. 前言
sklearn提供了sklearn.ensemble库,其中包括随机森林模型(分类)。但之前使用这个模型的时候,要么使用默认参数,要么将调参的工作丢给调参算法(grid search等)。今天想来深究一下到底是如何选择参数,如何进行调参。
学会调参是进行集成学习工作的前提。参数可分为两种,一种是影响模型在训练集上的准确度或影响防止过拟合能力的参数;另一种不影响这两者的其他参数。模型的准确度由其在训练集上的准确度及其防止过拟合的能力所共同决定,所以在调参时,我们主要对第一种参数进行调整,最终达到的效果是:模型在训练集上的准确度和防止过拟合能力的平衡。
1. 集成学习是什么
我们还是花一点时间来说明一下集成学习是什么,如果对此有一定基础的同学可以跳过本节。简单来说,集成学习是一种技术框架,其按照不同的思路来组合基础模型,从而达到其利断金的目的。
目前,有三种常见的集成学习框架:bagging,boosting和stacking。国内,南京大学的周志华教授对集成学习有很深入的研究,其在09年发表的一篇概述性论文《Ensemble Learning》对这三种集成学习框架有了明确的定义,概括如下:
bagging:从训练集从进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果:
boosting:训练过程为阶梯状,基模型按次序一一进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化。对所有基模型预测的结果进行线性综合产生最终的预测结果:
stacking:将训练好的所有基模型对训练基进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测:
有了这些基本概念之后,直觉将告诉我们,由于不再是单一的模型进行预测,所以模型有了“集思广益”的能力,也就不容易产生过拟合现象。但是,直觉是不可靠的,接下来我们将从模型的偏差和方差入手,彻底搞清楚这一问题。
2. 偏差与方差
广义的偏差(bias)描述的是预测值和真实值之间的差异,方差(variance)描述距的是预测值作为随机变量的离散程度。