随机森林(Random Forest)是机器学习中非常火热、非常流行的分类算法。有试验表明,在UCI121个数据集上试验多种学习分类算法,随机森林的分类准确率排名第一,被誉为代表集成学习技术水平的方法。
随机森林的基础是决策树模型。我们设想一个问题,如果我们建立了决策树模型,想再努努力提高分类的效果,有什么好的办法。鲁迅曾经说过,三个臭皮匠,顶个诸葛亮。这句话就是随机森林核心思想的最完美诠释。我们根据训练数据集,学习建立多棵决策树,采用专家投票法,少数服从多数,从而确定最终的分类结果。
如果还是对相同的训练集学习建立决策树模型,那么就只有确定的一颗决策树。所以,首先对样本数据进行多次bootstrap重抽样,形成多个训练数据集,对每个训练数据集建立一个决策树模型。bootstrap重抽样就是在获得的样本数据中进行有放回地再抽样。这就是bagging(boostrap aggregation)算法,是集成学习的一类。随机森林是在bagging的随机抽取样本的基础上再进一步,对每步分裂进行选取最优分裂特征时,随机地在所有特征中抽取部分特征作为候选,而不是将全部特征作为候选。即,随机森林的随机性体现在两方面,既进行行抽样(样本抽样),又进行列抽样(特征抽样)。
随机森林的大致流程就是:
1、对样本数据进行bootstrap抽样,即在样本数据里有放回地抽取N个样本观测(N为样本数据观测数),重抽样T次,形成T个训练数据集;
2、对第t次bootstrap抽样后形成的训练数据集,建立决策树,每次分裂时,在全部M个特征中随机抽取m个特征(m一般为sqrt(M)、log(M)等),从中选取最优的分裂特征;
3、形成T棵简单的分类决策树学习器,以多数结果作为最终的分类结果。
从上面过程可以看出,随机森林可以进行并行计算,且适合高维大数据的分类。同时,可以看出随机森林建立的暗箱模型,每棵单独的决策树都是不充分的弱学习器(weak learner),最终的分类结果不易解释。
仍使用UCI中的红酒数据集Wine来试验随机森林。随机森林的主要参数为森林规模即决策树个数T,这需要调试。随机抽样特征数m也需要简单调试,全部特征数时13,这里选取m=3、4作为候选调试。下面调试最优的m和T。调参方面,随机森林有个特别好的优势。在随机抽取样本时采用的是有放回抽样,意味着每次都有一些样本观测被重复抽取,也意味着有部分样本观测未被抽取。未被抽取的样本观测不能浪费,组成袋外数据OOB,利用OOB验证随机森林,得到OOB error。OOB error可以看成是泛化误差一个很好的代替。那么,根据OOB error跟m、T 的关系可以找出最优的m、T。
根据袋外误差图,可以看出,最优的m为3、最优的T为20。下面用随机森林与决策树的预测效果作一个比较。对留下的28个样本观测作为测试集,随机森林正确率高达96.43%,决策树正确率为89.29%,分类效果确实有提升。
、
领取专属 10元无门槛券
私享最新 技术干货