一、基础理解
- 随机森林(Random-Trees)
1)定义
- 定义:使用决策树算法进行集成学习时所得到的集成学习的模型,称为随机森林;
- 只要集成学习的底层算法是 决策树算法,最终得到的模型都可以称为随机森林;
2)scikit-learn 中:随机森林分类器及回归器
- RandomForestClassifier():分类器
- RandomForestRegressor():回归器
- 特点:所有子模型在节点划分时,都是在随机的特征子集上寻找最优的花饭特征;
- 也就是在迭代寻找划分维度及其阈值时,不是对全部特征进行搜索,而是对部分特征进行搜索;
- 优点:这种方式增加了每一个子模型的随机性及差异性;
-
使用格式
from sklearn.ensemble import RandomForestClassifier rf_clf = RandomForestClassifier(n_estimators=500, random_state=666, oob_score=True, n_jobs=-1) rf_clf.fit(X, y)
3)scikit-learn 中:Extra-Trees(极其随机的森林)
- 特点:决策树子模型在节点划分时,使用随机的特征和随机的阈值;
- 也就是说,节点划分时,选择的特征及对应的特征值不是搜索比较所得,而是随机抽取一个特征,再从该特征中随机抽取一个特征值,作为该节点划分的依据;
- 理论支撑:只要子模型的准确率大于 50%,并且集成的子模型的数量足够多,最终整个集成系统的准确率就能达到要求;
- 优点:提供额外的随机性,抑制过拟合;并且具有更快的训练速度;
- 缺点:增大了 bias(偏差);
-
使用格式
from sklearn.ensemble import ExtraTreesClassifier et_clf = ExtraTreesClassifier(n_estimators=500, bootstrap=True, oob_score=True, random_state=666) et_clf.fit(X, y)
4)大多数集成学习算法都可以解决回归问题
-
解决分类问题的算法
from sklearn.ensemble import BaggingClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import ExtraTreesClassifier
-
解决回归问题的算法
from sklearn.ensemble import BaggingRegressor from sklearn.ensemble import RandomForestRegressor from sklearn.ensemble import ExtraTreesRegressor
- 两类算法的参数相同
二、随机森林中的参数
1)属于决策树算法和集成学习算法共同的参数
- max_depth = None:决策树的最高深度;(如果不做设置,按其它参数条件结束划分)
- max_features = 'auto':节点划分时,进行所搜的特征的种类数;(默认搜索全部特征)
- max_leaf_nodes = None:划分结束时,模型最多的叶子数;(如果不做设置,按其它参数条件结束划分)
- min_impurity_decrease = 0.0:
- 不懂的查文档;