1. 基本概念
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。随机森林解决了决策树泛化能力弱的缺点,随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。随机是指随机选择样本,随机选择特征。即每一棵树是从整个训练样本集当中选取固定数量的样本集,然后选取固定数量的特征集,从而构建随机森林中的每一棵决策树。森林是指模型中包含了很多棵决策树。
从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的Bagging思想。
利用多棵决策树对样本数据进行训练、分类并预测的一种方法,它在对数据进行分类的同时,还可以给出各个变量(基因)的重要性评分,评估各个变量在分类中所起的作用。
2 .基本语句
(1)相关数据库的导入
from sklearn.ensemble import RandomForestClassifier #随机森林用于分类
from sklearn.ensemble import RandomForestRegressor #随机森林用于回归
from sklearn.model_selection import train_test_split #划分训练集与测试集
from sklearn import metrics
from sklearn.metrics import r2_score #用于模型拟合优度评估
(2)随机森林分类器
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, /
bootstrap=True, random_state=None, min_samples_split=2)
参数的解释:n_estimators:树的棵树,max_depth:树的最大深度,max_features:寻找最佳分割时要考虑的特征数量,random_state:控制构建树时样本的随机抽样
(3)训练集和测试集的划分
train_X, test_X, train_y, test_y = train_test_split(data_X, data_y, train_size=0.8, random_state=1)
feature_list = list(train_features.columns) (数据特征名称)
(4)构建随机森林模型
model=RandomForestRegressor(n_estimators=120,max_depth=12,max_features=30,random_state=)
3.实例操作
输出结果为:
4 .一些细节问题
(1)树的选择
随机森林的目的就是要通过大量的基础树模型找到最稳定可靠的结果,在实际问题中,树模型的个数一般取100~200个,继续增加下去,效果也不会发生明显改变。
(2)特征重要性
特征重要性就是在数据中每一个特征的重要程度,也就是在树模型中,哪些特征被利用得更多,因为树模型会优先选择最优价值的特征。在集成算法中,会综合考虑所有树模型,如果一个特征在大部分基础树模型中都被使用并且靠近根节点,就比较重要。